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 }