arch_i386.c - scc - simple c99 compiler
 (HTM) git clone git://git.simple-cc.org/scc
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) Submodules
 (DIR) README
 (DIR) LICENSE
       ---
       arch_i386.c (1554B)
       ---
            1 #include <scc/mach.h>
            2 #include <scc/scc.h>
            3 
            4 #include "../as.h"
            5 #include "../x86/proc.h"
            6 
            7 TUINT maxaddr = 0xFFFFFFFF;
            8 int endian = LITTLE_ENDIAN;
            9 
           10 void
           11 iarch(void)
           12 {
           13         static struct {
           14                 char *name;
           15                 unsigned char type;
           16         } regs[] = {
           17                 "CS", AREG_CS,
           18                 "DS", AREG_DS,
           19                 "SS", AREG_SS,
           20                 "ES", AREG_ES,
           21                 "FS", AREG_FS,
           22                 "GS", AREG_GS,
           23 
           24                 "AX", AREG_AX,
           25                 "AL", AREG_AL,
           26                 "AH", AREG_AH,
           27                 "EAX", AREG_EAX,
           28 
           29                 "BC", AREG_BX,
           30                 "BL", AREG_BL,
           31                 "BH", AREG_BH,
           32                 "EBX", AREG_EBX,
           33 
           34                 "CX", AREG_CX,
           35                 "CL", AREG_CL,
           36                 "CH", AREG_CH,
           37                 "ECX", AREG_ECX,
           38 
           39                 "DX", AREG_DX,
           40                 "DL", AREG_DL,
           41                 "DH", AREG_DH,
           42                 "EDX", AREG_EDX,
           43 
           44                 "SI", AREG_SI,
           45                 "ESI", AREG_ESI,
           46                 "DI", AREG_DI,
           47                 "EDI", AREG_EDI,
           48 
           49                 "SP", AREG_SP,
           50                 "ESP", AREG_ESP,
           51 
           52                 "BP", AREG_BP,
           53                 "EBP", AREG_EBP,
           54 
           55                 "R0", AREG_R0,
           56                 "MM0", AREG_MM0,
           57                 "R1", AREG_R1,
           58                 "MM1", AREG_MM1,
           59                 "R2", AREG_R2,
           60                 "MM2", AREG_MM2,
           61                 "R3", AREG_R3,
           62                 "MM3", AREG_MM3,
           63                 "R4", AREG_R4,
           64                 "MM4", AREG_MM4,
           65                 "R5", AREG_R5,
           66                 "MM5", AREG_MM5,
           67                 "R6", AREG_R6,
           68                 "MM6", AREG_MM6,
           69                 "R7", AREG_R7,
           70                 "MM7", AREG_MM7,
           71 
           72                 "XMM0", AREG_XMM0,
           73                 "XMM1", AREG_XMM1,
           74                 "XMM2", AREG_XMM2,
           75                 "XMM3", AREG_XMM3,
           76                 "XMM4", AREG_XMM4,
           77                 "XMM5", AREG_XMM5,
           78                 "XMM6", AREG_XMM6,
           79                 "XMM7", AREG_XMM7,
           80 
           81                 "YMM0", AREG_YMM0,
           82                 "YMM1", AREG_YMM1,
           83                 "YMM2", AREG_YMM2,
           84                 "YMM3", AREG_YMM3,
           85                 "YMM4", AREG_YMM4,
           86                 "YMM5", AREG_YMM5,
           87                 "YMM6", AREG_YMM6,
           88                 "YMM7", AREG_YMM7,
           89 
           90                 "MXCSR", AREG_MXCSR,
           91 
           92                 NULL
           93         }, *bp;
           94 
           95         for (bp = regs; bp->name; ++bp) {
           96                 Symbol *sym = lookup(bp->name);
           97                 sym->flags = FREG;
           98                 sym->value = bp->type;
           99         }
          100 }