#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() { }