forked from KolibriOS/kolibrios
6bd5a354f5
git-svn-id: svn://kolibrios.org@6446 a494cfbc-eb01-0410-851d-a64ba20cac60
514 lines
14 KiB
C
514 lines
14 KiB
C
#define FALSE 0
|
||
|
||
#define TRUE 1
|
||
|
||
#define LOCAL -1
|
||
|
||
#define DYNAMIC_POST 2
|
||
|
||
#define DYNAMIC_VAR 3
|
||
|
||
#define USED_DIN_VAR 4
|
||
|
||
|
||
|
||
#define r_undef 0
|
||
|
||
#define r8 1
|
||
|
||
#define r16 2
|
||
|
||
#define r32 4
|
||
|
||
#define r64 8
|
||
|
||
#define r128 16
|
||
|
||
|
||
|
||
#define CODE16 0x100
|
||
|
||
#define CODE32 0x200
|
||
|
||
#define THIS_PARAM 0x300
|
||
|
||
#define THIS_REG 0x400
|
||
|
||
#define THIS_NEW 0x500
|
||
|
||
#define THIS_ZEROSIZE 0x600
|
||
|
||
|
||
|
||
enum{
|
||
|
||
dm_other,
|
||
|
||
dm_none,
|
||
|
||
dm_def0,
|
||
|
||
dm_def,
|
||
|
||
dm_if,
|
||
|
||
};
|
||
|
||
|
||
|
||
enum{
|
||
|
||
STDLEX,
|
||
|
||
RESLEX,
|
||
|
||
DEFLEX,
|
||
|
||
DEFLEX2,
|
||
|
||
ASMLEX,
|
||
|
||
};
|
||
|
||
|
||
|
||
enum{
|
||
|
||
zero_term,
|
||
|
||
dos_term,
|
||
|
||
no_term,
|
||
|
||
s_unicod=4
|
||
|
||
};
|
||
|
||
|
||
|
||
enum{
|
||
|
||
NOTINITVAR,
|
||
|
||
INITVAR,
|
||
|
||
USEDVAR,
|
||
|
||
INITUSEVAR
|
||
|
||
};
|
||
|
||
|
||
|
||
enum{
|
||
|
||
tp_ucnovn,
|
||
|
||
tp_declare,
|
||
|
||
tp_localvar,
|
||
|
||
tp_paramvar,
|
||
|
||
tp_postvar,
|
||
|
||
tp_gvar,
|
||
|
||
tp_label,
|
||
|
||
tp_stopper,
|
||
|
||
tp_opperand,
|
||
|
||
tp_compare,
|
||
|
||
tp_modif,
|
||
|
||
tp_ofs,
|
||
|
||
tp_classvar,
|
||
|
||
};
|
||
|
||
|
||
|
||
enum{
|
||
|
||
stdcompr,
|
||
|
||
voidcompr=4,
|
||
|
||
zerocompr=8,
|
||
|
||
ecxzcompr=0xc,
|
||
|
||
cxzcompr=0x10,
|
||
|
||
ecxnzcompr=0x14,
|
||
|
||
cxnzcompr=0x18
|
||
|
||
};
|
||
|
||
|
||
|
||
enum{
|
||
|
||
tk_eof, tk_number, tk_string, tk_id, tk_ID,
|
||
|
||
tk_assign, tk_swap, tk_minus, tk_plus, tk_minusminus,
|
||
|
||
tk_plusplus, tk_mult, tk_div, tk_mod, tk_multminus,
|
||
|
||
tk_divminus, tk_modminus, tk_rr, tk_ll, tk_rrminus,
|
||
|
||
tk_llminus, tk_minusequals, tk_plusequals, tk_rrequals, tk_llequals,
|
||
|
||
tk_or, tk_and, tk_xor, tk_not, tk_orminus,
|
||
|
||
tk_andminus, tk_xorminus, tk_orequals, tk_andequals, tk_xorequals,
|
||
|
||
tk_equalto, tk_notequal, tk_greater, tk_greaterequal,tk_less,
|
||
|
||
//40
|
||
|
||
tk_lessequal, tk_oror, tk_andand, tk_openbrace, tk_closebrace,
|
||
|
||
tk_openbracket, tk_closebracket,tk_openblock, tk_closeblock, tk_colon,
|
||
|
||
|
||
|
||
tk_semicolon, tk_camma, tk_period, tk_at, tk_numsign,
|
||
|
||
tk_dollar, tk_question, tk_tilda,
|
||
|
||
tk_void, tk_char,
|
||
|
||
//60
|
||
|
||
tk_byte, tk_int, tk_word, tk_long, tk_dword,
|
||
|
||
tk_float, tk_qword, tk_double,
|
||
|
||
tk_if, tk_IF,
|
||
|
||
tk_else, tk_ELSE, tk_loop, tk_do, tk_while,
|
||
|
||
tk_return, tk_from, tk_extract, tk_interrupt, tk_far,
|
||
|
||
//80
|
||
|
||
tk_enum, tk_seg, tk_debugreg, tk_controlreg, tk_testreg,
|
||
|
||
tk_undefproc, tk_proc, tk_interruptproc,
|
||
|
||
tk_bits, tk_charvar,
|
||
|
||
//90
|
||
|
||
tk_bytevar, tk_intvar, tk_wordvar, tk_longvar, tk_dwordvar,
|
||
|
||
tk_floatvar, tk_qwordvar, tk_doublevar, tk_reg, tk_beg,
|
||
|
||
//100
|
||
|
||
tk_reg32, tk_rmnumber, tk_postnumber, tk_locallabel, tk_overflowflag,
|
||
|
||
tk_notoverflowflag,tk_carryflag,tk_notcarryflag,tk_zeroflag, tk_notzeroflag,
|
||
|
||
//110
|
||
|
||
tk_comment1, tk_comment2, tk_minusflag, tk_plusflag, tk_RETURN,
|
||
|
||
tk_dataptr, tk_codeptr, tk_postptr, tk_stackstart, tk_inline,
|
||
|
||
//120
|
||
|
||
tk_GOTO, tk_goto, tk_BREAK, tk_break, tk_CONTINUE,
|
||
|
||
tk_continue, tk_WHILE, tk_FOR, tk_for, tk_asm,
|
||
|
||
//130
|
||
|
||
tk_switch, tk_case, tk_default, tk_mmxreg, tk_fpust,
|
||
|
||
tk_multequals, tk_divequals, tk_struct, tk_structvar, tk_sizeof,
|
||
|
||
//140
|
||
|
||
tk_undefofs, tk_pointer, tk_localpointer,tk_parampointer,tk_apiproc,
|
||
|
||
tk_extern, tk_declare, tk_pascal, tk_cdecl, tk_stdcall,
|
||
|
||
//150
|
||
|
||
tk_fastcall, tk_union, tk_export, tk_multipoint, tk_LOOPNZ,
|
||
|
||
tk_loopnz, tk_idasm, tk_short, tk_unsigned, tk_signed,
|
||
|
||
//160
|
||
|
||
tk_file, tk_line, tk_SWITCH, tk_CASE, tk_xmmreg,
|
||
|
||
tk_dblcolon, tk_static, tk_baseclass, tk_rescommand, tk_endline,
|
||
|
||
//170
|
||
|
||
tk_singlquote, tk_new, tk_delete, tk_macro, tk_reg64,
|
||
|
||
tk_newline, tk_apioffset, tokens
|
||
|
||
};
|
||
|
||
|
||
|
||
// 16-bit word regs
|
||
|
||
#define AX 0
|
||
|
||
#define CX 1
|
||
|
||
#define DX 2
|
||
|
||
#define BX 3
|
||
|
||
#define SP 4
|
||
|
||
#define BP 5
|
||
|
||
#define SI 6
|
||
|
||
#define DI 7
|
||
|
||
|
||
|
||
// 8-bit byte regs
|
||
|
||
#define AL 0
|
||
|
||
#define CL 1
|
||
|
||
#define DL 2
|
||
|
||
#define BL 3
|
||
|
||
#define AH 4
|
||
|
||
#define CH 5
|
||
|
||
#define DH 6
|
||
|
||
#define BH 7
|
||
|
||
|
||
|
||
// 386+ 32-bit regs
|
||
|
||
#define EAX 0
|
||
|
||
#define ECX 1
|
||
|
||
#define EDX 2
|
||
|
||
#define EBX 3
|
||
|
||
#define ESP 4
|
||
|
||
#define EBP 5
|
||
|
||
#define ESI 6
|
||
|
||
#define EDI 7
|
||
|
||
|
||
|
||
//<2F><><EFBFBD><EFBFBD> ࠧ<><E0A0A7>襭<EFBFBD><E8A5AD> ॣ<><E0A5A3><EFBFBD>
|
||
|
||
#define dEAX 1
|
||
|
||
#define dECX 2
|
||
|
||
#define dEDX 4
|
||
|
||
#define dEBX 8
|
||
|
||
#define dESP 16
|
||
|
||
#define dEBP 32
|
||
|
||
#define dESI 64
|
||
|
||
#define dEDI 128
|
||
|
||
|
||
|
||
#define ES 0
|
||
|
||
#define CS 1
|
||
|
||
#define SS 2
|
||
|
||
#define DS 3
|
||
|
||
#define FS 4
|
||
|
||
#define GS 5
|
||
|
||
#define VARPOST 9
|
||
|
||
#define USEDSTR 10
|
||
|
||
// 386+ control regs
|
||
|
||
#define CR0 0
|
||
|
||
#define CR1 1
|
||
|
||
#define CR2 2
|
||
|
||
#define CR3 3
|
||
|
||
#define CR4 4
|
||
|
||
#define CR5 5
|
||
|
||
#define CR6 6
|
||
|
||
#define CR7 7
|
||
|
||
|
||
|
||
// 386+ test regs
|
||
|
||
#define TR0 0
|
||
|
||
#define TR1 1
|
||
|
||
#define TR2 2
|
||
|
||
#define TR3 3
|
||
|
||
#define TR4 4
|
||
|
||
#define TR5 5
|
||
|
||
#define TR6 6
|
||
|
||
#define TR7 7
|
||
|
||
|
||
|
||
// 386+ debug regs
|
||
|
||
#define DR0 0
|
||
|
||
#define DR1 1
|
||
|
||
#define DR2 2
|
||
|
||
#define DR3 3
|
||
|
||
#define DR4 4
|
||
|
||
#define DR5 5
|
||
|
||
#define DR6 6
|
||
|
||
#define DR7 7
|
||
|
||
|
||
|
||
//<2F><>६<EFBFBD><E0A5AC><EFBFBD><EFBFBD><EFBFBD>, 㪠<><E3AAA0>⥫<EFBFBD>, <20><><EFBFBD>쭨<EFBFBD> 㪠<><E3AAA0>⥫<EFBFBD>,ᥣ<><E1A5A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 㪠<><E3AAA0>⥫<EFBFBD>.
|
||
|
||
#define variable 0
|
||
|
||
#define pointer 1
|
||
|
||
//#define farpointer 2
|
||
|
||
|
||
|
||
// define exit codes
|
||
|
||
#define e_ok 0
|
||
|
||
#define e_outofmemory 1
|
||
|
||
#define e_cannotopeninput 2
|
||
|
||
#define e_toomanyerrors 3
|
||
|
||
#define e_internalerror 4
|
||
|
||
#define e_noinputspecified 5
|
||
|
||
#define e_unknowncommandline 6
|
||
|
||
#define e_entrynotfound 7
|
||
|
||
#define e_outputtoobig 8
|
||
|
||
#define e_notcreateoutput 9
|
||
|
||
#define e_preprocess 10
|
||
|
||
#define e_someerrors 13
|
||
|
||
#define e_badinputfilename 14
|
||
|
||
#define e_symbioerror 15
|
||
|
||
#define e_manyinclude 16
|
||
|
||
|
||
|
||
#define rm_mod00 0
|
||
|
||
#define rm_mod01 64
|
||
|
||
#define rm_mod10 128
|
||
|
||
#define rm_mod11 192
|
||
|
||
#define rm_d16 6
|
||
|
||
#define rm_BXSI 0
|
||
|
||
#define rm_BXDI 1
|
||
|
||
#define rm_BPSI 2
|
||
|
||
#define rm_BPDI 3
|
||
|
||
#define rm_SI 4
|
||
|
||
#define rm_DI 5
|
||
|
||
#define rm_BP 6
|
||
|
||
#define rm_BX 7
|
||
|
||
#define rm_sib 4
|
||
|
||
#define rm_d32 5
|
||
|
||
#define rm_EBP 5
|
||
|
||
|
||
|
||
// posttype values for call or jump types or post variables
|
||
|
||
enum{
|
||
|
||
CALL_NONE, //0
|
||
|
||
CALL_SHORT, // 1
|
||
|
||
BREAK_SHORT, // 2
|
||
|
||
CONTINUE_SHORT, // 3
|
||
|
||
CALL_NEAR, // 4
|
||
|
||
//CALL_NEARD,
|
||
|
||
JMP_NEAR, // 5
|
||
|
||
BREAK_NEAR, // 6
|
||
|
||
CONTINUE_NEAR, // 7
|
||
|
||
|
||
|
||
CALL_32, //8
|
||
|
||
//CALL_32D,
|
||
|
||
JMP_32, // 9
|
||
|
||
BREAK_32, // 10
|
||
|
||
CONTINUE_32, // 11
|
||
|
||
UNDEF_OFSET, //12
|
||
|
||
POST_STRING, //13
|
||
|
||
POST_STRING32,
|
||
|
||
CALL_EXT, // 14
|
||
|
||
EXT_VAR, // 15
|
||
|
||
|
||
|
||
CALL_32I, // 16
|
||
|
||
|
||
|
||
POST_VAR, // 17
|
||
|
||
FIX_VAR, // 18
|
||
|
||
FIX_CODE, // 19
|
||
|
||
|
||
|
||
POST_VAR32, // 20
|
||
|
||
FIX_VAR32, // 21
|
||
|
||
FIX_CODE32, // 22
|
||
|
||
|
||
|
||
POST_FLOATNUM, // 23
|
||
|
||
DATABLOCK_VAR, //24
|
||
|
||
DATABLOCK_VAR32, //25
|
||
|
||
DIN_VAR, //26
|
||
|
||
DIN_VAR32, //27
|
||
|
||
|
||
|
||
CODE_SIZE,
|
||
|
||
CODE_SIZE32,
|
||
|
||
DATA_SIZE,
|
||
|
||
DATA_SIZE32,
|
||
|
||
POST_SIZE,
|
||
|
||
POST_SIZE32,
|
||
|
||
STACK_SIZE,
|
||
|
||
STACK_SIZE32,
|
||
|
||
|
||
|
||
FIX_CODE_ADD,
|
||
|
||
//DATABLOCK_STRING, // 26
|
||
|
||
//DATABLOCK_STRING32 // 27
|
||
|
||
};
|
||
|
||
|
||
|
||
#define POINTER 0x8000
|
||
|
||
#define NOTPOINTER (~POINTER)
|
||
|
||
|
||
|
||
// format of output file
|
||
|
||
#define file_exe 0
|
||
|
||
#define file_com 1
|
||
|
||
#define file_sys 2
|
||
|
||
#define file_rom 3
|
||
|
||
#define file_w32 4
|
||
|
||
#define file_d32 5
|
||
|
||
#define file_meos 6
|
||
|
||
#define file_bin 7
|
||
|
||
|
||
|
||
//⨯<> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
|
||
#define TINY 0
|
||
|
||
#define SMALL 1
|
||
|
||
|
||
|
||
|
||
|
||
//䫠<><E4ABA0>
|
||
|
||
#define f_reloc 1 //<2F><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
|
||
#define f_typeproc 6 //⨯ <20>맮<EFBFBD><EBA7AE> <20><><EFBFBD>楤<EFBFBD><E6A5A4><EFBFBD>
|
||
|
||
#define f_far 8 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>楤<EFBFBD><E6A5A4><EFBFBD>
|
||
|
||
#define f_extern 0x10 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>楤<EFBFBD><E6A5A4><EFBFBD>, <20><>६<EFBFBD><E0A5AC><EFBFBD><EFBFBD><EFBFBD>
|
||
|
||
#define f_interrupt 0x20 //<2F><><EFBFBD><EFBFBD>뢠<EFBFBD><EBA2A0><EFBFBD>
|
||
|
||
#define f_export 0x40 //<2F><>ᯮ<EFBFBD><E1AFAE><EFBFBD><EFBFBD>㥬<EFBFBD><E3A5AC> <20><><EFBFBD>楤<EFBFBD><E6A5A4><EFBFBD>
|
||
|
||
#define f_inline 0x80 //inline <20><><EFBFBD>楤<EFBFBD><E6A5A4><EFBFBD>
|
||
|
||
#define f_retproc 0xf00 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 䫠<><E4ABA0> <20><> <20><><EFBFBD>楤<EFBFBD><E6A5A4><EFBFBD>
|
||
|
||
#define f_static 0x1000 //
|
||
|
||
#define f_classproc 0x2000 //<2F><><EFBFBD>楤<EFBFBD><E6A5A4><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
|
||
//䫠<><E4ABA0> <20><><EFBFBD>楤<EFBFBD><E6A5A4> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
|
||
#define fs_constructor 0x4000
|
||
|
||
#define fs_destructor 0x8000
|
||
|
||
|
||
|
||
#define f_useidx 0x10000 //<2F><>६<EFBFBD><E0A5AC><EFBFBD><EFBFBD><EFBFBD> <20>ᯮ<EFBFBD><E1AFAE><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> []
|
||
|
||
|
||
|
||
//⨯<> <20><><EFBFBD>楤<EFBFBD><E6A5A4>
|
||
|
||
#define tp_pascal 0
|
||
|
||
#define tp_cdecl 2
|
||
|
||
#define tp_stdcall 4
|
||
|
||
#define tp_fastcall 6
|
||
|
||
|
||
|
||
//⨯<> <20>맮<EFBFBD><EBA7AE> API <20><><EFBFBD>楤<EFBFBD><E6A5A4>
|
||
|
||
#define API_FAST 1
|
||
|
||
#define API_JMP 2
|
||
|
||
|
||
|
||
#define USEALLREG 8//0
|
||
|
||
//#define USEFIRST4REG 1
|
||
|
||
//#define USEONLY_AX 2
|
||
|
||
|
||
|
||
//<2F>㬥<EFBFBD><E3ACA5><EFBFBD><EFBFBD><EFBFBD> ᯨ᪠ <20><>४⨢
|
||
|
||
enum{
|
||
|
||
d_ctrl, d_jump, d_command,d_argc, d_resize,
|
||
|
||
d_resmes,d_stack,d_start, d_atr, d_name,
|
||
|
||
d_com, d_atex, d_dseg, d_rsize,d_mdr,
|
||
|
||
d_stm, d_fca, d_suv, d_us, d_ib,
|
||
|
||
d_end1,
|
||
|
||
|
||
|
||
d_align=d_end1, d_aligner,d_alignw, //d_beep,
|
||
|
||
d_code, d_define, d_DOS, d_endif, d_ifdef,
|
||
|
||
d_ifndef,d_incl, d_error, /*d_pause,*/ d_print,
|
||
|
||
d_prnex, d_random, d_speed, d_8086, d_8088,
|
||
|
||
d_80186, d_80286, d_80386, d_80486, d_80586,
|
||
|
||
d_80686, d_80786, d_sdp, d_warning,d_ip,
|
||
|
||
d_iav, d_am32, d_undef, d_alignc,
|
||
|
||
d_fut, d_dstr, d_cv, d_else, d_wmb,
|
||
|
||
d_pragma,d_inline, d_if, d_elif, d_end};
|
||
|
||
|
||
|
||
enum{
|
||
|
||
a_add,a_or, a_adc,a_sbb,a_and, a_sub, a_xor, a_cmp,
|
||
|
||
a_not,a_neg,a_mul,a_div=a_mul+2,a_idiv,
|
||
|
||
|
||
|
||
a_rol,a_ror,a_rcl,a_rcr,a_shl, a_shr, a_sar=a_shr+2,
|
||
|
||
|
||
|
||
a_bt, a_bts,a_btr,a_btc,
|
||
|
||
|
||
|
||
a_inc,a_dec,
|
||
|
||
|
||
|
||
a_test,a_imul,
|
||
|
||
|
||
|
||
a_shld,a_shrd,
|
||
|
||
|
||
|
||
a_daa,a_das,a_aaa,a_aas,a_aam, a_aad,
|
||
|
||
a_movzx,a_movsx,a_cbw,a_cwde,a_cwd,a_cdq,
|
||
|
||
a_bswap,a_xlat,
|
||
|
||
|
||
|
||
a_bsf,a_bsr,
|
||
|
||
|
||
|
||
a_cmpxchg,a_cmpxchg8b,a_xadd,
|
||
|
||
a_nop,a_wait,a_lock,a_hlt,a_int,
|
||
|
||
a_into,a_iret,a_iretd,
|
||
|
||
a_popf,a_popfd,a_pushf,a_pushfd,a_sahf,a_lahf,
|
||
|
||
a_cmc,a_clc,a_stc,a_cli,a_sti,a_cld,a_std,
|
||
|
||
a_push,a_pusha,a_pushad,a_pop,a_popa,a_popad,
|
||
|
||
a_xchg,a_mov,a_lea,
|
||
|
||
|
||
|
||
a_lfs,a_lgs,a_lss,
|
||
|
||
|
||
|
||
a_les,a_lds,
|
||
|
||
|
||
|
||
a_adrsiz,
|
||
|
||
a_in,a_out,a_insb,a_insw,a_insd,a_outsb,a_outsw,a_outsd,
|
||
|
||
a_movsb,a_movsw,a_movsd,a_cmpsb,a_cmpsw,a_cmpsd,
|
||
|
||
a_stosb,a_stosw,a_stosd,a_lodsb,a_lodsw,a_lodsd,
|
||
|
||
a_scasb,a_scasw,a_scasd,a_repnz,a_rep,
|
||
|
||
a_jcxz,a_jecxz,a_loop,a_loopd,a_loopz,a_loopnz,
|
||
|
||
|
||
|
||
a_jo,a_jno,a_jc,a_jnc,a_jz,a_jnz,a_jna,a_ja,
|
||
|
||
a_js,a_jns,a_jp,a_jnp,a_jl,a_jnl,a_jng,a_jg,
|
||
|
||
|
||
|
||
a_seto,a_setno,a_setc,a_setnc,a_setz,a_setnz,a_setna,a_seta,
|
||
|
||
a_sets,a_setns,a_setp,a_setnp,a_setl,a_setnl,a_setng,a_setg,
|
||
|
||
|
||
|
||
/*a_jmps,a_jmpn,a_jmpf,*/a_jmp,
|
||
|
||
a_call,/*a_callf,*/a_ret,a_retf,
|
||
|
||
a_enter,a_leave,a_bound,a_arpl,
|
||
|
||
a_sldt,a_str,a_lldt,a_ltr,a_verr,a_verw,
|
||
|
||
|
||
|
||
a_lar,a_lsl,
|
||
|
||
|
||
|
||
a_sgdt,a_sidt,a_lgdt,a_lidt,a_smsw,a_lmsw,a_clts,
|
||
|
||
a_invd,a_wbinvd,//a_invlpd,
|
||
|
||
a_wrmsr,a_cpuid,a_rdmsr,a_rdtsc,a_rsm,
|
||
|
||
a_rdpmc,a_ud2,/*a_emmx,a_setalc,*/
|
||
|
||
|
||
|
||
a_punpcklbw,a_punpcklwd,a_punpckldq,
|
||
|
||
a_packsswb,
|
||
|
||
a_pcmpgtb,a_pcmpgtw,a_pcmpgtd,
|
||
|
||
a_packuswb,
|
||
|
||
a_punpckhbw,a_punpckhwd,a_punpckhdq,
|
||
|
||
a_packssdw,
|
||
|
||
a_psrlw,a_psrld,a_psrlq,
|
||
|
||
a_psraw,a_psrad,
|
||
|
||
a_psllw,a_pslld,a_psllq,
|
||
|
||
a_pcmpeqb,a_pcmpeqw,a_pcmpeqd,
|
||
|
||
a_pmullw,
|
||
|
||
a_movd,a_movq,
|
||
|
||
a_psubusb,a_psubusw,
|
||
|
||
a_emms,
|
||
|
||
a_pand,
|
||
|
||
a_paddusb,a_paddusw,
|
||
|
||
a_pandn,a_pmulhw,
|
||
|
||
a_psubsb,a_psubsw,
|
||
|
||
a_por,
|
||
|
||
a_paddsb,a_paddsw,
|
||
|
||
a_pxor,
|
||
|
||
a_pmaddwd,
|
||
|
||
a_psubb,a_psubw,a_psubd,
|
||
|
||
a_paddb,a_paddw,a_paddd,
|
||
|
||
|
||
|
||
a_db,a_dw,a_dd,a_invlpg,a_loadall,a_opsiz,
|
||
|
||
a_f2xm1,a_fabs,a_fadd,a_faddp,a_fbld,a_fbstp,a_fchs,a_fclex,a_fcom,
|
||
|
||
a_fcomp,a_fnclex,a_fcompp,a_fcos,a_fdecstr,a_fdisi,a_fdiv,a_fdivp,
|
||
|
||
a_fdivr,a_fdivrp,a_ffree,a_fiadd,a_ficom,a_ficomp,a_fidiv,a_fidivr,
|
||
|
||
a_fild,a_fildq,a_fimul,a_fist,a_fistp,a_fisub,a_fisubr,a_feni,a_fincstr,
|
||
|
||
a_finit,a_fninit,a_fld,a_fldcw,a_fldenv,a_fldlg2,a_fldln2,a_fldl2e,
|
||
|
||
a_fldl2t,a_fldpi,a_fldz,a_fld1,a_fmul,a_fmulp,a_fnop,a_fpatan,a_fprem,
|
||
|
||
a_fprem1,a_fptan,a_frndint,a_fsetpm,a_frstor,a_fsave,a_fnsave,a_fscale,
|
||
|
||
a_fsin,a_fsincos,a_fsqrt,a_fst,a_fstcw,a_fnstcw,a_fstp,a_fstsw,a_fnstsw,
|
||
|
||
a_fstenv,a_fnstenv,a_fsub,a_fsubp,a_fsubr,a_fsubrp,a_ftst,a_fucom,a_fucomp,
|
||
|
||
a_fucompp,a_fxch,a_fwait,a_fxam,a_fxtract,a_fyl2x,a_fyl2xp1,
|
||
|
||
a_sysenter,a_sysexit,a_fcmovb,a_fcmove,a_fcmovbe,a_fcmovu,a_fcmovnb,
|
||
|
||
a_fcmovne,a_fcmovnbe,a_fcmovnu,a_fcomi,a_fcomip,a_fucomi,a_fucomip,
|
||
|
||
a_fxrstor,a_fxsave,a_fndisi,a_fneni,a_fnsetpm,
|
||
|
||
|
||
|
||
a_cmovo,a_cmovno,a_cmovc,a_cmovnc,a_cmovz,a_cmovnz,a_cmovna,a_cmova,
|
||
|
||
a_cmovs,a_cmovns,a_cmovp,a_cmovnp,a_cmovl,a_cmovnl,a_cmovng,a_cmovg,
|
||
|
||
|
||
|
||
//MMX Pentium III extention
|
||
|
||
a_maskmovq, a_movntq, a_pavgb, a_pavgw, a_pextrw, a_pinsrw,
|
||
|
||
a_pmaxub, a_pmaxsw, a_pminub, a_pminsw, a_pmovmskb,a_pmulhuw,
|
||
|
||
a_prefetcht0,a_prefetcht1,a_prefetcht2, a_prefetchnta,a_sfence, a_psadbw,
|
||
|
||
a_pshufw,
|
||
|
||
//XMM extentions Pentium III
|
||
|
||
a_addps, a_addss, a_andnps, a_andps, a_cmpps, a_cmpss,
|
||
|
||
a_comiss, a_cvtpi2ps,a_cvtps2pi,a_cvtsi2ss,a_cvtss2si,a_cvttps2pi,
|
||
|
||
a_cvttss2si,a_divps, a_divss, a_ldmxcsr, a_maxps, a_maxss,
|
||
|
||
a_minps, a_minss, a_movaps, a_movhlps, a_movhps, a_movlhps,
|
||
|
||
a_movlps, a_movmskps,a_movss, a_movups, a_mulps, a_mulss,
|
||
|
||
a_movntps, a_orps, a_rcpps, a_rcpss, a_rsqrtps, a_rsqrtss,
|
||
|
||
a_shufps, a_sqrtps, a_sqrtss, a_stmxcsr, a_subps, a_subss,
|
||
|
||
a_ucomiss, a_unpckhps,a_unpcklps,a_xorps,
|
||
|
||
|
||
|
||
// Pentium IV
|
||
|
||
a_lfence, a_mfence, a_addpd, a_addsd, a_andpd, a_andnpd,
|
||
|
||
a_cmppd, a_comisd, a_cvtdq2pd, a_cvtdq2ps, a_cvtpd2dq, a_cvtpd2pi,
|
||
|
||
a_cvtpd2ps,a_cvtpi2pd, a_cvtps2dq, a_cvtps2pd, a_cvtsd2si, a_cvtsd2ss,
|
||
|
||
a_cvtsi2sd,a_cvtss2sd, a_cvttpd2pi, a_cvttpd2dq, a_cvttps2dq, a_cvttsd2si,
|
||
|
||
a_divpd, a_divsd, a_maskmovdqu,a_maxpd, a_maxsd, a_minpd,
|
||
|
||
a_minsd, a_movapd, a_movdqa, a_movdqu, a_movdq2q, a_movhpd,
|
||
|
||
a_movlpd, a_movmskpd, a_movntdq, a_movntpd, a_movnti, a_movq2dq,
|
||
|
||
a_movupd, a_mulpd, a_mulsd, a_orpd, a_pshufd, a_pshufhw,
|
||
|
||
a_pshuflw, a_pslldq, a_psrldq, a_shufpd, a_sqrtpd, a_sqrtsd,
|
||
|
||
a_subpd, a_subsd, a_ucomisd, a_unpckhpd, a_unpcklpd, a_xorpd,
|
||
|
||
a_paddq, a_pmuludq, a_psubq, a_punpckhqdq,a_punpcklqdq,a_clflush,
|
||
|
||
a_monitor, a_mwait, a_addsubpd, a_addsubps, a_cmpeqsd, a_cmpltsd,
|
||
|
||
a_cmplesd, a_cmpunordsd,a_cmpneqsd, a_cmpnltsd, a_cmpnlesd, a_cmpordsd,
|
||
|
||
a_cmpeqpd, a_cmpltpd, a_cmplepd, a_cmpunordpd,a_cmpneqpd, a_cmpnltpd,
|
||
|
||
a_cmpnlepd,a_cmpordpd, a_cmpeqps, a_cmpltps, a_cmpleps, a_cmpunordps,
|
||
|
||
a_cmpneqps,a_cmpnltps, a_cmpnleps, a_cmpordps, a_cmpeqss, a_cmpltss,
|
||
|
||
a_cmpless, a_cmpunordss,a_cmpneqss, a_cmpnltss, a_cmpnless, a_cmpordss,
|
||
|
||
a_haddpd, a_haddps, a_hsubpd, a_hsubps, a_lddqu, a_movddup,
|
||
|
||
a_movshdup,a_movsldup, a_pause,
|
||
|
||
|
||
|
||
a_end};
|
||
|
||
|
||
|
||
enum{
|
||
|
||
pF3=1,
|
||
|
||
pF2,
|
||
|
||
p66
|
||
|
||
};
|
||
|
||
|
||
|