-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathcpu.v
132 lines (130 loc) · 1.13 KB
/
cpu.v
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
module main
struct CpuRegs
{
eax struct
{
eax_upper u16
ah u8
al u8
}
ebx struct
{
ebx_upper u16
bh u8
bl u8
}
ecx struct
{
ecx_upper u16
ch u8
cl u8
}
edx struct
{
edx_upper u16
dh u8
dl u8
}
ebp struct
{
ebp_upper u16
bp u8
}
esp struct
{
esp_upper u16
sp u8
}
esi struct
{
esi_upper u16
si u8
}
edi struct
{
edi_upper u16
di u8
}
cs u16
ds u16
es u16
fs u16
gs u16
ss u16
eflags struct
{
eflags_upper u16
flags u16
}
eip struct
{
eip_upper u16
ip u16
}
}
fn init_cpu() &CpuRegs
{
return &CpuRegs
{
eax: struct
{
eax_upper: 0
ah: 0
al: 0
}
ebx: struct
{
ebx_upper: 0
bh: 0
bl: 0
}
ecx: struct
{
ecx_upper: 0
ch: 0
cl: 0
}
edx: struct
{
edx_upper: 0
dh: 0
dl: 0
}
ebp: struct
{
ebp_upper: 0
bp: 0
}
esp: struct
{
esp_upper: 0
sp: 0
}
esi: struct
{
esi_upper: 0
si: 0
}
edi: struct
{
edi_upper: 0
di: 0
}
cs: 0
ds: 0
es: 0
fs: 0
gs: 0
ss: 0
eflags: struct
{
eflags_upper: 0
flags: 0
}
eip: struct
{
eip_upper: 0
ip: 0
}
}
}