Mercurial > repos > blastem
comparison gen_x86.h @ 18:3e7bfde7606e
M68K to x86 translation works for a limited subset of instructions and addressing modes
author | Mike Pavone <pavone@retrodev.com> |
---|---|
date | Tue, 04 Dec 2012 19:13:12 -0800 |
parents | c0f339564819 |
children | d2e43d64e999 |
comparison
equal
deleted
inserted
replaced
17:de0085d4ea40 | 18:3e7bfde7606e |
---|---|
50 SZ_W, | 50 SZ_W, |
51 SZ_D, | 51 SZ_D, |
52 SZ_Q | 52 SZ_Q |
53 } x86_size; | 53 } x86_size; |
54 | 54 |
55 enum { | |
56 MODE_REG_INDIRECT = 0, | |
57 MODE_REG_INDEXED = 4, | |
58 MODE_REG_DISPLACE8 = 0x40, | |
59 MODE_REG_INDEXED_DISPLACE8 = 0x44, | |
60 MODE_REG_DIPSLACE32 = 0x80, | |
61 MODE_REG_INDEXED_DIPSLACE32 = 0x84, | |
62 MODE_REG_DIRECT = 0xC0, | |
63 //"phony" mode | |
64 MODE_IMMED = 0xFF | |
65 } x86_modes; | |
66 | |
67 | |
55 uint8_t * add_rr(uint8_t * out, uint8_t src, uint8_t dst, uint8_t size); | 68 uint8_t * add_rr(uint8_t * out, uint8_t src, uint8_t dst, uint8_t size); |
56 uint8_t * or_rr(uint8_t * out, uint8_t src, uint8_t dst, uint8_t size); | 69 uint8_t * or_rr(uint8_t * out, uint8_t src, uint8_t dst, uint8_t size); |
57 uint8_t * xor_rr(uint8_t * out, uint8_t src, uint8_t dst, uint8_t size); | 70 uint8_t * xor_rr(uint8_t * out, uint8_t src, uint8_t dst, uint8_t size); |
58 uint8_t * and_rr(uint8_t * out, uint8_t src, uint8_t dst, uint8_t size); | 71 uint8_t * and_rr(uint8_t * out, uint8_t src, uint8_t dst, uint8_t size); |
59 uint8_t * sub_rr(uint8_t * out, uint8_t src, uint8_t dst, uint8_t size); | 72 uint8_t * sub_rr(uint8_t * out, uint8_t src, uint8_t dst, uint8_t size); |
62 uint8_t * or_ir(uint8_t * out, int32_t val, uint8_t dst, uint8_t size); | 75 uint8_t * or_ir(uint8_t * out, int32_t val, uint8_t dst, uint8_t size); |
63 uint8_t * xor_ir(uint8_t * out, int32_t val, uint8_t dst, uint8_t size); | 76 uint8_t * xor_ir(uint8_t * out, int32_t val, uint8_t dst, uint8_t size); |
64 uint8_t * and_ir(uint8_t * out, int32_t val, uint8_t dst, uint8_t size); | 77 uint8_t * and_ir(uint8_t * out, int32_t val, uint8_t dst, uint8_t size); |
65 uint8_t * sub_ir(uint8_t * out, int32_t val, uint8_t dst, uint8_t size); | 78 uint8_t * sub_ir(uint8_t * out, int32_t val, uint8_t dst, uint8_t size); |
66 uint8_t * cmp_ir(uint8_t * out, int32_t val, uint8_t dst, uint8_t size); | 79 uint8_t * cmp_ir(uint8_t * out, int32_t val, uint8_t dst, uint8_t size); |
80 uint8_t * add_irdisp8(uint8_t * out, int32_t val, uint8_t dst_base, int8_t disp, uint8_t size); | |
81 uint8_t * or_irdisp8(uint8_t * out, int32_t val, uint8_t dst_base, int8_t disp, uint8_t size); | |
82 uint8_t * xor_irdisp8(uint8_t * out, int32_t val, uint8_t dst_base, int8_t disp, uint8_t size); | |
83 uint8_t * and_irdisp8(uint8_t * out, int32_t val, uint8_t dst_base, int8_t disp, uint8_t size); | |
84 uint8_t * sub_irdisp8(uint8_t * out, int32_t val, uint8_t dst_base, int8_t disp, uint8_t size); | |
85 uint8_t * cmp_irdisp8(uint8_t * out, int32_t val, uint8_t dst_base, int8_t disp, uint8_t size); | |
86 uint8_t * add_rrdisp8(uint8_t * out, uint8_t src, uint8_t dst_base, int8_t disp, uint8_t size); | |
87 uint8_t * add_rdisp8r(uint8_t * out, uint8_t src_base, int8_t disp, uint8_t dst, uint8_t size); | |
88 uint8_t * or_rrdisp8(uint8_t * out, uint8_t src, uint8_t dst_base, int8_t disp, uint8_t size); | |
89 uint8_t * or_rdisp8r(uint8_t * out, uint8_t src_base, int8_t disp, uint8_t dst, uint8_t size); | |
90 uint8_t * xor_rrdisp8(uint8_t * out, uint8_t src, uint8_t dst_base, int8_t disp, uint8_t size); | |
91 uint8_t * xor_rdisp8r(uint8_t * out, uint8_t src_base, int8_t disp, uint8_t dst, uint8_t size); | |
92 uint8_t * and_rrdisp8(uint8_t * out, uint8_t src, uint8_t dst_base, int8_t disp, uint8_t size); | |
93 uint8_t * and_rdisp8r(uint8_t * out, uint8_t src_base, int8_t disp, uint8_t dst, uint8_t size); | |
94 uint8_t * sub_rrdisp8(uint8_t * out, uint8_t src, uint8_t dst_base, int8_t disp, uint8_t size); | |
95 uint8_t * sub_rdisp8r(uint8_t * out, uint8_t src_base, int8_t disp, uint8_t dst, uint8_t size); | |
96 uint8_t * cmp_rrdisp8(uint8_t * out, uint8_t src, uint8_t dst_base, int8_t disp, uint8_t size); | |
97 uint8_t * cmp_rdisp8r(uint8_t * out, uint8_t src_base, int8_t disp, uint8_t dst, uint8_t size); | |
67 uint8_t * mov_rr(uint8_t * out, uint8_t src, uint8_t dst, uint8_t size); | 98 uint8_t * mov_rr(uint8_t * out, uint8_t src, uint8_t dst, uint8_t size); |
68 uint8_t * mov_rrdisp8(uint8_t * out, uint8_t src, uint8_t dst_base, int8_t disp, uint8_t size); | 99 uint8_t * mov_rrdisp8(uint8_t * out, uint8_t src, uint8_t dst_base, int8_t disp, uint8_t size); |
69 uint8_t * mov_rdisp8r(uint8_t * out, uint8_t src_base, int8_t disp, uint8_t dst, uint8_t size); | 100 uint8_t * mov_rdisp8r(uint8_t * out, uint8_t src_base, int8_t disp, uint8_t dst, uint8_t size); |
70 uint8_t * mov_rrind(uint8_t * out, uint8_t src, uint8_t dst, uint8_t size); | 101 uint8_t * mov_rrind(uint8_t * out, uint8_t src, uint8_t dst, uint8_t size); |
71 uint8_t * mov_rindr(uint8_t * out, uint8_t src, uint8_t dst, uint8_t size); | 102 uint8_t * mov_rindr(uint8_t * out, uint8_t src, uint8_t dst, uint8_t size); |
72 uint8_t * mov_ir(uint8_t * out, int64_t val, uint8_t dst, uint8_t size); | 103 uint8_t * mov_ir(uint8_t * out, int64_t val, uint8_t dst, uint8_t size); |
104 uint8_t * mov_irdisp8(uint8_t * out, int32_t val, uint8_t dst, int8_t disp, uint8_t size); | |
73 uint8_t * pushf(uint8_t * out); | 105 uint8_t * pushf(uint8_t * out); |
74 uint8_t * popf(uint8_t * out); | 106 uint8_t * popf(uint8_t * out); |
75 uint8_t * push_r(uint8_t * out, uint8_t reg); | 107 uint8_t * push_r(uint8_t * out, uint8_t reg); |
76 uint8_t * pop_r(uint8_t * out, uint8_t reg); | 108 uint8_t * pop_r(uint8_t * out, uint8_t reg); |
77 uint8_t * setcc_r(uint8_t * out, uint8_t cc, uint8_t dst); | 109 uint8_t * setcc_r(uint8_t * out, uint8_t cc, uint8_t dst); |
78 uint8_t * setcc_rind(uint8_t * out, uint8_t cc, uint8_t dst); | 110 uint8_t * setcc_rind(uint8_t * out, uint8_t cc, uint8_t dst); |
79 uint8_t * jcc(uint8_t * out, uint8_t cc, int32_t disp); | 111 uint8_t * jcc(uint8_t * out, uint8_t cc, uint8_t *dest); |
112 uint8_t * jmp(uint8_t * out, uint8_t *dest); | |
80 uint8_t * call(uint8_t * out, uint8_t * fun); | 113 uint8_t * call(uint8_t * out, uint8_t * fun); |
81 uint8_t * retn(uint8_t * out); | 114 uint8_t * retn(uint8_t * out); |
82 | 115 |
83 #endif //GEN_X86_H_ | 116 #endif //GEN_X86_H_ |
84 | 117 |