ref: e661871dd3e996607e7444be1e0ca86be0a8565f
dir: /src/cmd/as/target/x86/i386.c/
#include <scc/scc.h> #include "../../as.h" #include "../x86/proc.h" TUINT maxaddr = 0xFFFFFFFF; int endian = LITTLE_ENDIAN; void iarch(void) { static struct { char *name; char type; } regs[] = { "CS", AREG_CS, "DS", AREG_DS, "SS", AREG_SS, "ES", AREG_ES, "FS", AREG_FS, "GS", AREG_GS, "AX", AREG_AX, "AL", AREG_AL, "AH", AREG_AH, "EAX", AREG_EAX, "BC", AREG_BX, "BL", AREG_BL, "BH", AREG_BH, "EBX", AREG_EBX, "CX", AREG_CX, "CL", AREG_CL, "CH", AREG_CH, "ECX", AREG_ECX, "DX", AREG_DX, "DL", AREG_DL, "DH", AREG_DH, "EDX", AREG_EDX, "SI", AREG_SI, "ESI", AREG_ESI, "DI", AREG_DI, "EDI", AREG_EDI, "SP", AREG_SP, "ESP", AREG_ESP, "BP", AREG_BP, "EBP", AREG_EBP, "R0", AREG_R0, "MM0", AREG_MM0, "R1", AREG_R1, "MM1", AREG_MM1, "R2", AREG_R2, "MM2", AREG_MM2, "R3", AREG_R3, "MM3", AREG_MM3, "R4", AREG_R4, "MM4", AREG_MM4, "R5", AREG_R5, "MM5", AREG_MM5, "R6", AREG_R6, "MM6", AREG_MM6, "R7", AREG_R7, "MM7", AREG_MM7, "XMM0", AREG_XMM0, "XMM1", AREG_XMM1, "XMM2", AREG_XMM2, "XMM3", AREG_XMM3, "XMM4", AREG_XMM4, "XMM5", AREG_XMM5, "XMM6", AREG_XMM6, "XMM7", AREG_XMM7, "YMM0", AREG_YMM0, "YMM1", AREG_YMM1, "YMM2", AREG_YMM2, "YMM3", AREG_YMM3, "YMM4", AREG_YMM4, "YMM5", AREG_YMM5, "YMM6", AREG_YMM6, "YMM7", AREG_YMM7, "MXCSR", AREG_MXCSR, NULL }, *bp; for (bp = regs; bp->name; ++bp) { Symbol *sym = lookup(bp->name); sym->flags = FREG; sym->value = bp->type; } }