📄 assyntax.h
字号:
#define FCOM_D(a) CHOICE(fcoml a, fcoml a, fcomd a)#define FCOM_S(a) CHOICE(fcoms a, fcoms a, fcoms a)#define FCOMP(a) CHOICE(fcomp a, fcomp a, fcomp a)#define FCOMP_D(a) CHOICE(fcompl a, fcompl a, fcompd a)#define FCOMP_S(a) CHOICE(fcomps a, fcomps a, fcomps a)#define FCOMPP CHOICE(fcompp, fcompp, fcompp)#define FCOS CHOICE(fcos, fcos, fcos)#define FDECSTP CHOICE(fdecstp, fdecstp, fdecstp)#define FDIV_D(a) CHOICE(fdivl a, fdivl a, fdivd a)#define FDIV_S(a) CHOICE(fdivs a, fdivs a, fdivs a)#define FDIV2(a, b) CHOICE(fdiv ARG2(a,b), fdiv ARG2(a,b), fdiv ARG2(b,a))#define FDIVP(a, b) CHOICE(fdivp ARG2(a,b), fdivp ARG2(a,b), fdivp ARG2(b,a))#define FIDIV_L(a) CHOICE(fidivl a, fidivl a, fidivl a)#define FIDIV_W(a) CHOICE(fidiv a, fidivs a, fidivs a)#define FDIVR_D(a) CHOICE(fdivrl a, fdivrl a, fdivrd a)#define FDIVR_S(a) CHOICE(fdivrs a, fdivrs a, fdivrs a)#define FDIVR2(a, b) CHOICE(fdivr ARG2(a,b), fdivr ARG2(a,b), fdivr ARG2(b,a))#define FDIVRP(a, b) CHOICE(fdivrp ARG2(a,b), fdivrp ARG2(a,b), fdivrp ARG2(b,a))#define FIDIVR_L(a) CHOICE(fidivrl a, fidivrl a, fidivrl a)#define FIDIVR_W(a) CHOICE(fidivr a, fidivrs a, fidivrs a)#define FFREE(a) CHOICE(ffree a, ffree a, ffree a)#define FICOM_L(a) CHOICE(ficoml a, ficoml a, ficoml a)#define FICOM_W(a) CHOICE(ficom a, ficoms a, ficoms a)#define FICOMP_L(a) CHOICE(ficompl a, ficompl a, ficompl a)#define FICOMP_W(a) CHOICE(ficomp a, ficomps a, ficomps a)#define FILD_Q(a) CHOICE(fildll a, fildq a, fildq a)#define FILD_L(a) CHOICE(fildl a, fildl a, fildl a)#define FILD_W(a) CHOICE(fild a, filds a, filds a)#define FINCSTP CHOICE(fincstp, fincstp, fincstp)#define FINIT CHOICE(finit, wait; fninit, wait; finit)#define FNINIT CHOICE(fninit, fninit, finit)#define FIST_L(a) CHOICE(fistl a, fistl a, fistl a)#define FIST_W(a) CHOICE(fist a, fists a, fists a)#define FISTP_Q(a) CHOICE(fistpll a, fistpq a, fistpq a)#define FISTP_L(a) CHOICE(fistpl a, fistpl a, fistpl a)#define FISTP_W(a) CHOICE(fistp a, fistps a, fistps a)#define FLD_X(a) CHOICE(fldt a, fldt a, fldx a) /* 80 bit data type! */#define FLD_D(a) CHOICE(fldl a, fldl a, fldd a)#define FLD_S(a) CHOICE(flds a, flds a, flds a)#define FLD1 CHOICE(fld1, fld1, fld1)#define FLDL2T CHOICE(fldl2t, fldl2t, fldl2t)#define FLDL2E CHOICE(fldl2e, fldl2e, fldl2e)#define FLDPI CHOICE(fldpi, fldpi, fldpi)#define FLDLG2 CHOICE(fldlg2, fldlg2, fldlg2)#define FLDLN2 CHOICE(fldln2, fldln2, fldln2)#define FLDZ CHOICE(fldz, fldz, fldz)#define FLDCW(a) CHOICE(fldcw a, fldcw a, fldcw a)#define FLDENV(a) CHOICE(fldenv a, fldenv a, fldenv a)#define FMUL_S(a) CHOICE(fmuls a, fmuls a, fmuls a)#define FMUL_D(a) CHOICE(fmull a, fmull a, fmuld a)#define FMUL2(a, b) CHOICE(fmul ARG2(a,b), fmul ARG2(a,b), fmul ARG2(b,a))#define FMULP(a, b) CHOICE(fmulp ARG2(a,b), fmulp ARG2(a,b), fmulp ARG2(b,a))#define FIMUL_L(a) CHOICE(fimull a, fimull a, fimull a)#define FIMUL_W(a) CHOICE(fimul a, fimuls a, fimuls a)#define FNOP CHOICE(fnop, fnop, fnop)#define FPATAN CHOICE(fpatan, fpatan, fpatan)#define FPREM CHOICE(fprem, fprem, fprem)#define FPREM1 CHOICE(fprem1, fprem1, fprem1)#define FPTAN CHOICE(fptan, fptan, fptan)#define FRNDINT CHOICE(frndint, frndint, frndint)#define FRSTOR(a) CHOICE(frstor a, frstor a, frstor a)#define FSAVE(a) CHOICE(fsave a, wait; fnsave a, wait; fsave a)#define FNSAVE(a) CHOICE(fnsave a, fnsave a, fsave a)#define FSCALE CHOICE(fscale, fscale, fscale)#define FSIN CHOICE(fsin, fsin, fsin)#define FSINCOS CHOICE(fsincos, fsincos, fsincos)#define FSQRT CHOICE(fsqrt, fsqrt, fsqrt)#define FST_D(a) CHOICE(fstl a, fstl a, fstd a)#define FST_S(a) CHOICE(fsts a, fsts a, fsts a)#define FSTP_X(a) CHOICE(fstpt a, fstpt a, fstpx a)#define FSTP_D(a) CHOICE(fstpl a, fstpl a, fstpd a)#define FSTP_S(a) CHOICE(fstps a, fstps a, fstps a)#define FSTP(a) CHOICE(fstp a, fstp a, fstp a)#define FSTCW(a) CHOICE(fstcw a, wait; fnstcw a, wait; fstcw a)#define FNSTCW(a) CHOICE(fnstcw a, fnstcw a, fstcw a)#define FSTENV(a) CHOICE(fstenv a, wait; fnstenv a, fstenv a)#define FNSTENV(a) CHOICE(fnstenv a, fnstenv a, fstenv a)#define FSTSW(a) CHOICE(fstsw a, wait; fnstsw a, wait; fstsw a)#define FNSTSW(a) CHOICE(fnstsw a, fnstsw a, fstsw a)#define FSUB_S(a) CHOICE(fsubs a, fsubs a, fsubs a)#define FSUB_D(a) CHOICE(fsubl a, fsubl a, fsubd a)#define FSUB2(a, b) CHOICE(fsub ARG2(a,b), fsub ARG2(a,b), fsub ARG2(b,a))#define FSUBP(a, b) CHOICE(fsubp ARG2(a,b), fsubp ARG2(a,b), fsubp ARG2(b,a))#define FISUB_L(a) CHOICE(fisubl a, fisubl a, fisubl a)#define FISUB_W(a) CHOICE(fisub a, fisubs a, fisubs a)#define FSUBR_S(a) CHOICE(fsubrs a, fsubrs a, fsubrs a)#define FSUBR_D(a) CHOICE(fsubrl a, fsubrl a, fsubrd a)#define FSUBR2(a, b) CHOICE(fsubr ARG2(a,b), fsubr ARG2(a,b), fsubr ARG2(b,a))#define FSUBRP(a, b) CHOICE(fsubrp ARG2(a,b), fsubrp ARG2(a,b), fsubrp ARG2(b,a))#define FISUBR_L(a) CHOICE(fisubrl a, fisubrl a, fisubrl a)#define FISUBR_W(a) CHOICE(fisubr a, fisubrs a, fisubrs a)#define FTST CHOICE(ftst, ftst, ftst)#define FUCOM(a) CHOICE(fucom a, fucom a, fucom a)#define FUCOMP(a) CHOICE(fucomp a, fucomp a, fucomp a)#define FUCOMPP CHOICE(fucompp, fucompp, fucompp)#define FWAIT CHOICE(wait, wait, wait)#define FXAM CHOICE(fxam, fxam, fxam)#define FXCH(a) CHOICE(fxch a, fxch a, fxch a)#define FXTRACT CHOICE(fxtract, fxtract, fxtract)#define FYL2X CHOICE(fyl2x, fyl2x, fyl2x)#define FYL2XP1 CHOICE(fyl2xp1, fyl2xp1, fyl2xp1)/* New instructions */#define CPUID CHOICE(D_BYTE ARG2(15, 162), cpuid, D_BYTE ARG2(15, 162))#define RDTSC CHOICE(D_BYTE ARG2(15, 49), rdtsc, D_BYTE ARG2(15, 49))#else /* NASM_ASSEMBLER || MASM_ASSEMBLER is defined */ /****************************************/ /* */ /* Intel style assemblers. */ /* (NASM and MASM) */ /* */ /****************************************/#define P_EAX EAX#define L_EAX EAX#define W_AX AX#define B_AH AH#define B_AL AL#define P_EBX EBX#define L_EBX EBX#define W_BX BX#define B_BH BH#define B_BL BL#define P_ECX ECX#define L_ECX ECX#define W_CX CX#define B_CH CH#define B_CL CL#define P_EDX EDX#define L_EDX EDX#define W_DX DX#define B_DH DH#define B_DL DL#define P_EBP EBP#define L_EBP EBP#define W_BP BP#define P_ESI ESI#define L_ESI ESI#define W_SI SI#define P_EDI EDI#define L_EDI EDI#define W_DI DI#define P_ESP ESP#define L_ESP ESP#define W_SP SP#define W_CS CS#define W_SS SS#define W_DS DS#define W_ES ES#define W_FS FS#define W_GS GS#define X_ST ST#define D_ST ST#define L_ST ST#define P_MM0 mm0#define P_MM1 mm1#define P_MM2 mm2#define P_MM3 mm3#define P_MM4 mm4#define P_MM5 mm5#define P_MM6 mm6#define P_MM7 mm7#define P_XMM0 xmm0#define P_XMM1 xmm1#define P_XMM2 xmm2#define P_XMM3 xmm3#define P_XMM4 xmm4#define P_XMM5 xmm5#define P_XMM6 xmm6#define P_XMM7 xmm7#define CONCAT(x, y) x ## y#define CONCAT3(x, y, z) x ## y ## z#if defined(NASM_ASSEMBLER)#define ST(n) st ## n#define ST0 st0#define TBYTE_PTR tword#define QWORD_PTR qword#define DWORD_PTR dword#define WORD_PTR word#define BYTE_PTR byte#define OFFSET#define GLOBL GLOBAL#define ALIGNTEXT32 ALIGN 32#define ALIGNTEXT16 ALIGN 16#define ALIGNTEXT8 ALIGN 8#define ALIGNTEXT4 ALIGN 4#define ALIGNTEXT2 ALIGN 2#define ALIGNTEXT32ifNOP ALIGN 32#define ALIGNTEXT16ifNOP ALIGN 16#define ALIGNTEXT8ifNOP ALIGN 8#define ALIGNTEXT4ifNOP ALIGN 4#define ALIGNDATA32 ALIGN 32#define ALIGNDATA16 ALIGN 16#define ALIGNDATA8 ALIGN 8#define ALIGNDATA4 ALIGN 4#define ALIGNDATA2 ALIGN 2#define FILE(s)#define STRING(s) db s#define D_LONG dd#define D_WORD dw#define D_BYTE db/* #define SPACE *//* #define COMM */#if defined(__WATCOMC__)SECTION _TEXT public align=16 class=CODE use32 flatSECTION _DATA public align=16 class=DATA use32 flat#define SEG_TEXT SECTION _TEXT#define SEG_DATA SECTION _DATA#define SEG_BSS SECTION .bss#else#define SEG_DATA SECTION .data#define SEG_TEXT SECTION .text#define SEG_BSS SECTION .bss#endif#define D_SPACE(n) db n REP 0#define AS_BEGIN/* Jcc's should be handled better than this... */#define NEAR near#else /* MASM */#define TBYTE_PTR tbyte ptr#define QWORD_PTR qword ptr#define DWORD_PTR dword ptr#define WORD_PTR word ptr#define BYTE_PTR byte ptr#define OFFSET offset#define GLOBL GLOBAL#define ALIGNTEXT32 ALIGN 32#define ALIGNTEXT16 ALIGN 16#define ALIGNTEXT8 ALIGN 8#define ALIGNTEXT4 ALIGN 4#define ALIGNTEXT2 ALIGN 2#define ALIGNTEXT32ifNOP ALIGN 32#define ALIGNTEXT16ifNOP ALIGN 16#define ALIGNTEXT8ifNOP ALIGN 8#define ALIGNTEXT4ifNOP ALIGN 4#define ALIGNDATA32 ALIGN 32#define ALIGNDATA16 ALIGN 16#define ALIGNDATA8 ALIGN 8#define ALIGNDATA4 ALIGN 4#define ALIGNDATA2 ALIGN 2#define FILE(s)#define STRING(s) db s#define D_LONG dd#define D_WORD dw#define D_BYTE db/* #define SPACE *//* #define COMM */#define SEG_DATA .DATA#define SEG_TEXT .CODE#define SEG_BSS .DATA#define D_SPACE(n) db n REP 0#define AS_BEGIN#define NEAR#endif#if defined(Lynx) || (defined(SYSV) || defined(SVR4)) \ || (defined(__linux__) || defined(__OS2ELF__)) && defined(__ELF__) \ || defined(__FreeBSD__) && __FreeBSD__ >= 3#define GLNAME(a) a#else#define GLNAME(a) CONCAT(_, a)#endif/* * Addressing Modes *//* Immediate Mode */#define P_ADDR(a) OFFSET a#define X_ADDR(a) OFFSET a#define D_ADDR(a) OFFSET a#define L_ADDR(a) OFFSET a#define W_ADDR(a) OFFSET a#define B_ADDR(a) OFFSET a#define P_CONST(a) a#define X_CONST(a) a#define D_CONST(a) a#define L_CONST(a) a#define W_CONST(a) a#define B_CONST(a) a/* Indirect Mode */#ifdef NASM_ASSEMBLER#define P_CONTENT(a) [a]#define X_CONTENT(a) TBYTE_PTR [a]#define D_CONTENT(a) QWORD_PTR [a]#define L_CONTENT(a) DWORD_PTR [a]#define W_CONTENT(a) WORD_PTR [a]#define B_CONTENT(a) BYTE_PTR [a]#else#define P_CONTENT(a) a#define X_CONTENT(a) TBYTE_PTR a#define D_CONTENT(a) QWORD_PTR a#define L_CONTENT(a) DWORD_PTR a#define W_CONTENT(a) WORD_PTR a#define B_CONTENT(a) BYTE_PTR a#endif/* Register a indirect */#define P_REGIND(a) [a]#define X_REGIND(a) TBYTE_PTR [a]#define D_REGIND(a) QWORD_PTR [a]#define L_REGIND(a) DWORD_PTR [a]#define W_REGIND(a) WORD_PTR [a]#define B_REGIND(a) BYTE_PTR [a]/* Register b indirect plus displacement a */#define P_REGOFF(a, b) [b + a]#define X_REGOFF(a, b) TBYTE_PTR [b + a]#define D_REGOFF(a, b) QWORD_PTR [b + a]#define L_REGOFF(a, b) DWORD_PTR [b + a]#define W_REGOFF(a, b) WORD_PTR [b + a]#define B_REGOFF(a, b) BYTE_PTR [b + a]/* Reg indirect Base + Index + Displacement - this is mainly for 16-bit mode * which has no scaling */#define P_REGBID(b, i, d) [b + i + d]#define X_REGBID(b, i, d) TBYTE_PTR [b + i + d]
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -