63 lines
1.7 KiB
C
63 lines
1.7 KiB
C
#include"arch.h"
|
|
|
|
RegisterClass REG_CLASSES[] = {
|
|
[REG_CLASS_8] = {
|
|
.rMask = HWR_GPR, .w = 1, .p = 8,
|
|
.rs = {HWR_AL, HWR_AH, HWR_BL, HWR_BH, HWR_CL, HWR_CH, HWR_DL, HWR_DH},
|
|
.rsN = {"al", "ah", "bl", "bh", "cl", "ch", "dl", "dh"},
|
|
.rsS = {1, 1, 1, 1, 1, 1, 1, 1},
|
|
},
|
|
[REG_CLASS_NOT_8] = {
|
|
.rMask = HWR_GPR, .w = 2, .p = 4,
|
|
.rs = {HWR_AX, HWR_EAX, HWR_BX, HWR_EBX, HWR_CX, HWR_ECX, HWR_DX, HWR_EDX, HWR_DI, HWR_EDI, HWR_SI, HWR_ESI, HWR_BP, HWR_EBP},
|
|
.rsN = {"ax", "eax", "bx", "ebx", "cx", "ecx", "dx", "edx", "di", "edi", "si", "esi", "bp", "ebp"},
|
|
.rsS = {2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4},
|
|
},
|
|
[REG_CLASS_16_32] = {
|
|
.rMask = HWR_GPR, .w = 2, .p = 4,
|
|
.rs = {HWR_AX, HWR_EAX, HWR_BX, HWR_EBX, HWR_CX, HWR_ECX, HWR_DX, HWR_EDX, HWR_BP, HWR_EBP},
|
|
.rsN = {"ax", "eax", "bx", "ebx", "cx", "ecx", "dx", "edx", "bp", "ebp"},
|
|
.rsS = {2, 4, 2, 4, 2, 4, 2, 4, 2, 4},
|
|
},
|
|
[REG_CLASS_IND] = {
|
|
.rMask = HWR_IND, .w = 2, .p = 2,
|
|
.rs = {HWR_DI, HWR_EDI, HWR_SI, HWR_ESI},
|
|
.rsN = {"di", "edi", "si", "esi"},
|
|
.rsS = {2, 4, 2, 4},
|
|
},
|
|
[REG_CLASS_IA16_PTRS] = {
|
|
.rMask = HWR_IND | HWR_BX,
|
|
.rs = {HWR_DI, HWR_SI, HWR_BX},
|
|
.rsN = {"di", "si", "bx"},
|
|
.rsS = {2, 2, 2},
|
|
},
|
|
[REG_CLASS_IA16_USEABLE]= {
|
|
.rMask = HWR_IND | HWR_GPR,
|
|
.rs = {HWR_AX, HWR_CX, HWR_DX, HWR_DI, HWR_SI, HWR_BX},
|
|
.rsN = {"ax", "cx", "dx", "di", "si", "bx"},
|
|
.rsS = {2, 2, 2, 2, 2, 2},
|
|
},
|
|
[REG_CLASS_DATASEGS] = {
|
|
.rMask = HWR_SEGREGS,
|
|
.rs = {HWR_DS, HWR_ES, HWR_FS, HWR_GS},
|
|
.rsN = {"ds", "es", "fs", "gs"},
|
|
.rsS = {2, 2, 2, 2},
|
|
},
|
|
};
|
|
|
|
bool arch_verify_target() {
|
|
if(x86_target() == IUNKNOWN86) {
|
|
return false;
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
int arch_ptr_size() {
|
|
return x86_ia16() ? 2 : 4;
|
|
}
|
|
|
|
void arch_init() {
|
|
|
|
}
|