mirror of
https://github.com/geode-sdk/geode.git
synced 2024-12-14 18:11:15 -05:00
44 lines
933 B
C
44 lines
933 B
C
|
#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
|