geode/loader/dobby/source/MemoryAllocator/CodeBuffer/code-buffer-arm.h

44 lines
933 B
C
Raw Normal View History

2022-07-30 12:24:03 -04:00
#ifndef CODE_BUFFER_ARM_H
#define CODE_BUFFER_ARM_H
#include "MemoryAllocator/CodeBuffer/CodeBufferBase.h"
typedef int32_t arm_inst_t;
typedef int16_t thumb1_inst_t;
typedef int32_t thumb2_inst_t;
class CodeBuffer : public CodeBufferBase {
enum ExecuteState { ARMExecuteState, ThumbExecuteState };
public:
CodeBuffer() : CodeBufferBase() {
}
CodeBuffer(int size) : CodeBufferBase(size) {
}
public:
arm_inst_t LoadARMInst(int offset);
thumb1_inst_t LoadThumb1Inst(int offset);
thumb2_inst_t LoadThumb2Inst(int offset);
void RewriteAddr(int offset, addr32_t addr);
void RewriteARMInst(int offset, arm_inst_t instr);
void RewriteThumb1Inst(int offset, thumb1_inst_t instr);
void RewriteThumb2Inst(int offset, thumb2_inst_t instr);
void EmitARMInst(arm_inst_t instr);
void EmitThumb1Inst(thumb1_inst_t instr);
void EmitThumb2Inst(thumb2_inst_t instr);
void Emit32(int32_t data);
};
#endif