mirror of
https://github.com/geode-sdk/geode.git
synced 2024-12-03 20:51:02 -05:00
44 lines
No EOL
933 B
C++
44 lines
No EOL
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 |