Mercurial > repos > blastem
comparison test_x86.c @ 14:2bdad0f52f42
x86 code gen, initial work on translator
author | Mike Pavone <pavone@retrodev.com> |
---|---|
date | Tue, 27 Nov 2012 09:28:13 -0800 |
parents | |
children | c0f339564819 |
comparison
equal
deleted
inserted
replaced
13:168b1a873895 | 14:2bdad0f52f42 |
---|---|
1 #include "gen_x86.h" | |
2 #include <stdio.h> | |
3 #include <stddef.h> | |
4 | |
5 int main(int argc, char ** argv) | |
6 { | |
7 uint8_t foo[512]; | |
8 uint8_t *cur = foo, *end; | |
9 cur = mov_rr(cur, RAX, RBX, SZ_B); | |
10 cur = mov_rr(cur, RCX, RDX, SZ_B); | |
11 cur = mov_rr(cur, R8, R9, SZ_B); | |
12 cur = mov_rr(cur, R8, RAX, SZ_B); | |
13 cur = mov_rr(cur, RAX, RBX, SZ_W); | |
14 cur = mov_rr(cur, R11, R12, SZ_W); | |
15 cur = mov_rr(cur, RAX, RBX, SZ_D); | |
16 cur = mov_rr(cur, RAX, RBX, SZ_Q); | |
17 cur = mov_i32r(cur, 5, RAX); | |
18 cur = mov_i32r(cur, 3, R8); | |
19 cur = mov_i8r(cur, 4, RSP); | |
20 cur = add_rr(cur, RAX, RBX, SZ_D); | |
21 cur = add_i8r(cur, 5, RAX); | |
22 cur = add_i8r(cur, 5, RBX); | |
23 cur = pushf(cur); | |
24 cur = popf(cur); | |
25 cur = setcc_r(cur, CC_S, RBX); | |
26 cur = setcc_r(cur, CC_Z, RDX); | |
27 cur = setcc_r(cur, CC_O, BH); | |
28 cur = setcc_r(cur, CC_C, DH); | |
29 cur = setcc_rind(cur, CC_C, RSI); | |
30 cur = mov_rrdisp8(cur, RCX, RSI, offsetof(m68k_context, dregs) + 4 * sizeof(uint32_t), SZ_D); | |
31 cur = mov_rdisp8r(cur, RSI, offsetof(m68k_context, dregs) + 5 * sizeof(uint32_t), RCX, SZ_D); | |
32 cur = mov_rrind(cur, DH, RSI, SZ_B); | |
33 cur = jcc(cur, CC_NZ, -2); | |
34 cur = jcc(cur, CC_Z, 0); | |
35 cur = jcc(cur, CC_LE, 0x7CA); | |
36 for (end = cur, cur = foo; cur != end; cur++) { | |
37 printf(" %X", *cur); | |
38 } | |
39 puts(""); | |
40 return 0; | |
41 } |