diff options
| author | Frederic Feret <tommy.planet@free.fr> | 2009-08-27 09:53:50 +0200 |
|---|---|---|
| committer | grischka <grischka> | 2009-11-13 18:08:59 +0100 |
| commit | 526c4645048fa469a2941c86a09f4f851a96eb91 (patch) | |
| tree | 265c37c212c2083a53f92b89b31b2e2a26f1fdf4 /x86_64-tok.h | |
| parent | 0d768b97130ef2180725c4e585bb482ed0dea105 (diff) | |
| download | tinycc-526c4645048fa469a2941c86a09f4f851a96eb91.tar.gz tinycc-526c4645048fa469a2941c86a09f4f851a96eb91.tar.bz2 | |
first support of x86_64 assembly
Diffstat (limited to 'x86_64-tok.h')
| -rw-r--r-- | x86_64-tok.h | 224 |
1 files changed, 224 insertions, 0 deletions
diff --git a/x86_64-tok.h b/x86_64-tok.h new file mode 100644 index 0000000..85cbb44 --- /dev/null +++ b/x86_64-tok.h @@ -0,0 +1,224 @@ + +/* WARNING: relative order of tokens is important. */ + DEF_ASM(al) + DEF_ASM(cl) + DEF_ASM(dl) + DEF_ASM(bl) + DEF_ASM(ah) + DEF_ASM(ch) + DEF_ASM(dh) + DEF_ASM(bh) + DEF_ASM(ax) + DEF_ASM(cx) + DEF_ASM(dx) + DEF_ASM(bx) + DEF_ASM(sp) + DEF_ASM(bp) + DEF_ASM(si) + DEF_ASM(di) + DEF_ASM(eax) + DEF_ASM(ecx) + DEF_ASM(edx) + DEF_ASM(ebx) + DEF_ASM(esp) + DEF_ASM(ebp) + DEF_ASM(esi) + DEF_ASM(edi) + DEF_ASM(rax) + DEF_ASM(rcx) + DEF_ASM(rdx) + DEF_ASM(rbx) + DEF_ASM(rsp) + DEF_ASM(rbp) + DEF_ASM(rsi) + DEF_ASM(rdi) + DEF_ASM(mm0) + DEF_ASM(mm1) + DEF_ASM(mm2) + DEF_ASM(mm3) + DEF_ASM(mm4) + DEF_ASM(mm5) + DEF_ASM(mm6) + DEF_ASM(mm7) + DEF_ASM(xmm0) + DEF_ASM(xmm1) + DEF_ASM(xmm2) + DEF_ASM(xmm3) + DEF_ASM(xmm4) + DEF_ASM(xmm5) + DEF_ASM(xmm6) + DEF_ASM(xmm7) + DEF_ASM(cr0) + DEF_ASM(cr1) + DEF_ASM(cr2) + DEF_ASM(cr3) + DEF_ASM(cr4) + DEF_ASM(cr5) + DEF_ASM(cr6) + DEF_ASM(cr7) + DEF_ASM(tr0) + DEF_ASM(tr1) + DEF_ASM(tr2) + DEF_ASM(tr3) + DEF_ASM(tr4) + DEF_ASM(tr5) + DEF_ASM(tr6) + DEF_ASM(tr7) + DEF_ASM(db0) + DEF_ASM(db1) + DEF_ASM(db2) + DEF_ASM(db3) + DEF_ASM(db4) + DEF_ASM(db5) + DEF_ASM(db6) + DEF_ASM(db7) + DEF_ASM(dr0) + DEF_ASM(dr1) + DEF_ASM(dr2) + DEF_ASM(dr3) + DEF_ASM(dr4) + DEF_ASM(dr5) + DEF_ASM(dr6) + DEF_ASM(dr7) + DEF_ASM(es) + DEF_ASM(cs) + DEF_ASM(ss) + DEF_ASM(ds) + DEF_ASM(fs) + DEF_ASM(gs) + DEF_ASM(st) + + DEF_BWLQ(mov) + + /* generic two operands */ + DEF_BWLQ(add) + DEF_BWLQ(or) + DEF_BWLQ(adc) + DEF_BWLQ(sbb) + DEF_BWLQ(and) + DEF_BWLQ(sub) + DEF_BWLQ(xor) + DEF_BWLQ(cmp) + + /* unary ops */ + DEF_BWLQ(inc) + DEF_BWLQ(dec) + DEF_BWLQ(not) + DEF_BWLQ(neg) + DEF_BWLQ(mul) + DEF_BWLQ(imul) + DEF_BWLQ(div) + DEF_BWLQ(idiv) + + DEF_BWLQ(xchg) + DEF_BWLQ(test) + + /* shifts */ + DEF_BWLQ(rol) + DEF_BWLQ(ror) + DEF_BWLQ(rcl) + DEF_BWLQ(rcr) + DEF_BWLQ(shl) + DEF_BWLQ(shr) + DEF_BWLQ(sar) + + DEF_ASM(shldw) + DEF_ASM(shldl) + DEF_ASM(shld) + DEF_ASM(shrdw) + DEF_ASM(shrdl) + DEF_ASM(shrd) + + DEF_ASM(pushw) + DEF_ASM(pushl) + DEF_ASM(pushq) + DEF_ASM(push) + DEF_ASM(popw) + DEF_ASM(popl) + DEF_ASM(popq) + DEF_ASM(pop) + DEF_BWL(in) + DEF_BWL(out) + + DEF_WL(movzb) + + DEF_ASM(movzwl) + DEF_ASM(movsbw) + DEF_ASM(movsbl) + DEF_ASM(movswl) + + DEF_WLQ(lea) + + DEF_ASM(les) + DEF_ASM(lds) + DEF_ASM(lss) + DEF_ASM(lfs) + DEF_ASM(lgs) + + DEF_ASM(call) + DEF_ASM(jmp) + DEF_ASM(lcall) + DEF_ASM(ljmp) + + DEF_ASMTEST(j) + + DEF_ASMTEST(set) + DEF_ASMTEST(cmov) + + DEF_WLQ(bsf) + DEF_WLQ(bsr) + DEF_WLQ(bt) + DEF_WLQ(bts) + DEF_WLQ(btr) + DEF_WLQ(btc) + + DEF_WLQ(lsl) + + /* generic FP ops */ + DEF_FP(add) + DEF_FP(mul) + + DEF_ASM(fcom) + DEF_ASM(fcom_1) /* non existant op, just to have a regular table */ + DEF_FP1(com) + + DEF_FP(comp) + DEF_FP(sub) + DEF_FP(subr) + DEF_FP(div) + DEF_FP(divr) + + DEF_BWLQ(xadd) + DEF_BWLQ(cmpxchg) + + /* string ops */ + DEF_BWLQ(cmps) + DEF_BWLQ(scmp) + DEF_BWL(ins) + DEF_BWL(outs) + DEF_BWLQ(lods) + DEF_BWLQ(slod) + DEF_BWLQ(movs) + DEF_BWLQ(smov) + DEF_BWLQ(scas) + DEF_BWLQ(ssca) + DEF_BWLQ(stos) + DEF_BWLQ(ssto) + + /* generic asm ops */ + +#define ALT(x) +#define DEF_ASM_OP0(name, opcode) DEF_ASM(name) +#define DEF_ASM_OP0L(name, opcode, group, instr_type) +#define DEF_ASM_OP1(name, opcode, group, instr_type, op0) +#define DEF_ASM_OP2(name, opcode, group, instr_type, op0, op1) +#define DEF_ASM_OP3(name, opcode, group, instr_type, op0, op1, op2) +#include "x86_64-asm.h" + +#define ALT(x) +#define DEF_ASM_OP0(name, opcode) +#define DEF_ASM_OP0L(name, opcode, group, instr_type) DEF_ASM(name) +#define DEF_ASM_OP1(name, opcode, group, instr_type, op0) DEF_ASM(name) +#define DEF_ASM_OP2(name, opcode, group, instr_type, op0, op1) DEF_ASM(name) +#define DEF_ASM_OP3(name, opcode, group, instr_type, op0, op1, op2) DEF_ASM(name) +#include "x86_64-asm.h" |
