kolibrios/programs/develop/cmm/const.h
GerdtR 6bd5a354f5 Added source files C--.
git-svn-id: svn://kolibrios.org@6446 a494cfbc-eb01-0410-851d-a64ba20cac60
2016-06-13 02:07:22 +00:00

514 lines
14 KiB
C
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#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
};