commit f5c92970174dd6999b74217f7d39bc2a5eda0d69
parent 9fb3118a29f4f6842a05c3a7ebd855fa60bece67
Author: erai <erai@omiltem.net>
Date: Wed, 20 Nov 2024 21:38:39 -0500
reserve as
Diffstat:
M | cc0.c | | | 1343 | +++++++++++++++++++++++++++++++++++++++++-------------------------------------- |
M | cc1.om | | | 1296 | ++++++++++++++++++++++++++++++++++++++++---------------------------------------- |
M | cc3.peg | | | 6 | ++++-- |
M | decl.om | | | 4 | ++-- |
M | vimfiles/syntax/omiltem.vim | | | 6 | +++++- |
5 files changed, 1353 insertions(+), 1302 deletions(-)
diff --git a/cc0.c b/cc0.c
@@ -51,7 +51,7 @@ struct my_compiler {
unsigned char* my_filename;
unsigned long my_lineno;
unsigned long my_colno;
- struct my_assembler* my_as;
+ struct my_assembler* my_s;
struct my_decl* my_decls;
unsigned long my_do_cout;
struct my_file* my_cout;
@@ -407,6 +407,7 @@ enum {
my_P_add_op = 37,
my_P_and_op = 45,
my_P_arg_decl = 9,
+ my_P_as = 85,
my_P_assign_stmt = 22,
my_P_band_op = 27,
my_P_bnot_op = 55,
@@ -444,7 +445,7 @@ enum {
my_P_grammar = 0,
my_P_gt_op = 33,
my_P_hex = 64,
- my_P_ident = 85,
+ my_P_ident = 87,
my_P_if = 72,
my_P_if_stmt = 14,
my_P_index_expr = 57,
@@ -462,6 +463,7 @@ enum {
my_P_mul_op = 42,
my_P_ne_op = 35,
my_P_neg_op = 53,
+ my_P_nil = 86,
my_P_not_op = 54,
my_P_or_op = 39,
my_P_pos_op = 52,
@@ -476,7 +478,7 @@ enum {
my_P_shift_expr = 49,
my_P_sizeof = 71,
my_P_sizeof_expr = 63,
- my_P_sp = 86,
+ my_P_sp = 88,
my_P_stmt = 11,
my_P_str = 66,
my_P_struct = 79,
@@ -722,6 +724,7 @@ unsigned long( my_peg_P_add_expr)(struct my_peg* my_c);
unsigned long( my_peg_P_add_op)(struct my_peg* my_c);
unsigned long( my_peg_P_and_op)(struct my_peg* my_c);
unsigned long( my_peg_P_arg_decl)(struct my_peg* my_c);
+unsigned long( my_peg_P_as)(struct my_peg* my_c);
unsigned long( my_peg_P_assign_stmt)(struct my_peg* my_c);
unsigned long( my_peg_P_band_op)(struct my_peg* my_c);
unsigned long( my_peg_P_bnot_op)(struct my_peg* my_c);
@@ -1183,6 +1186,12 @@ unsigned char*( my_P_tag_to_str)(unsigned long my_tag){
if ((unsigned long)(((long)(my_tag))==((long)(my_P_func)))) {
return (unsigned char *)"func";
}
+ if ((unsigned long)(((long)(my_tag))==((long)(my_P_as)))) {
+ return (unsigned char *)"as";
+ }
+ if ((unsigned long)(((long)(my_tag))==((long)(my_P_nil)))) {
+ return (unsigned char *)"nil";
+ }
if ((unsigned long)(((long)(my_tag))==((long)(my_P_ident)))) {
return (unsigned char *)"ident";
}
@@ -1606,7 +1615,7 @@ struct my_compiler*( my_comp_setup)(struct my_alloc* my_a){
((my_c)->my_filename)=((unsigned char*)0UL);
((my_c)->my_lineno)=(0UL);
((my_c)->my_colno)=(0UL);
- ((my_c)->my_as)=((my_setup_assembler)((my_a)));
+ ((my_c)->my_s)=((my_setup_assembler)((my_a)));
((my_c)->my_decls)=((struct my_decl*)0UL);
((my_c)->my_do_cout)=(0UL);
((my_c)->my_cout)=((struct my_file*)0UL);
@@ -1701,11 +1710,11 @@ void( my_compile_expr)(struct my_compiler* my_c,struct my_decl* my_d,struct my_n
((my_c)->my_colno)=((my_n)->my_colno);
(my_kind)=((my_n)->my_kind);
if ((unsigned long)(((long)(my_kind))==((long)(my_N_STR)))) {
- (my_emit_str)(((my_c)->my_as),((my_n)->my_s));
+ (my_emit_str)(((my_c)->my_s),((my_n)->my_s));
} else if ((unsigned long)(((long)(my_kind))==((long)(my_N_NUM)))) {
- (my_emit_num)(((my_c)->my_as),((my_n)->my_n));
+ (my_emit_num)(((my_c)->my_s),((my_n)->my_n));
} else if ((unsigned long)(((long)(my_kind))==((long)(my_N_CHAR)))) {
- (my_emit_num)(((my_c)->my_as),((my_n)->my_n));
+ (my_emit_num)(((my_c)->my_s),((my_n)->my_n));
} else if ((unsigned long)(((long)(my_kind))==((long)(my_N_EXPRLIST)))) {
if ((my_n)->my_b) {
(my_compile_expr)((my_c),(my_d),((my_n)->my_b),(1UL));
@@ -1722,19 +1731,19 @@ void( my_compile_expr)(struct my_compiler* my_c,struct my_decl* my_d,struct my_n
}
(my_v)=((my_find)((my_c),((my_d)->my_name),(((my_n)->my_a)->my_s),(0UL)));
if ((unsigned long)((my_v)&&((my_v)->my_var_defined))) {
- (my_emit_lea)(((my_c)->my_as),((my_v)->my_var_offset));
- (my_emit_load)(((my_c)->my_as),(((my_n)->my_a)->my_t));
- (my_emit_call)(((my_c)->my_as),((my_count_args)((my_c),((((my_n)->my_a)->my_t)->my_arg))));
+ (my_emit_lea)(((my_c)->my_s),((my_v)->my_var_offset));
+ (my_emit_load)(((my_c)->my_s),(((my_n)->my_a)->my_t));
+ (my_emit_call)(((my_c)->my_s),((my_count_args)((my_c),((((my_n)->my_a)->my_t)->my_arg))));
} else if ((unsigned long)(!((my_strcmp)((((my_n)->my_a)->my_s),((unsigned char *)"_include"))))) {
(my_v)=((my_find)((my_c),(((my_n)->my_a)->my_s),((unsigned char*)0UL),(0UL)));
(my_compile_include)((my_c),(my_n));
} else {
(my_v)=((my_find)((my_c),(((my_n)->my_a)->my_s),((unsigned char*)0UL),(0UL)));
- (my_emit_lcall)(((my_c)->my_as),((my_v)->my_func_label),((my_count_args)((my_c),((((my_n)->my_a)->my_t)->my_arg))));
+ (my_emit_lcall)(((my_c)->my_s),((my_v)->my_func_label),((my_count_args)((my_c),((((my_n)->my_a)->my_t)->my_arg))));
}
} else {
(my_compile_expr)((my_c),(my_d),((my_n)->my_a),(1UL));
- (my_emit_call)(((my_c)->my_as),((my_count_args)((my_c),((((my_n)->my_a)->my_t)->my_arg))));
+ (my_emit_call)(((my_c)->my_s),((my_count_args)((my_c),((((my_n)->my_a)->my_t)->my_arg))));
}
if ((my_n)->my_b) {
(my_unify)((my_c),((((my_n)->my_a)->my_t)->my_arg),(((my_n)->my_b)->my_t));
@@ -1745,178 +1754,178 @@ void( my_compile_expr)(struct my_compiler* my_c,struct my_decl* my_d,struct my_n
(my_compile_expr)((my_c),(my_d),((my_n)->my_a),(0UL));
if ((unsigned long)(((long)((((my_n)->my_a)->my_t)->my_kind))==((long)(my_TY_PTR)))) {
(my_v)=((my_find)((my_c),((((((my_n)->my_a)->my_t)->my_val)->my_st)->my_name),(((my_n)->my_b)->my_s),(0UL)));
- (my_emit_load)(((my_c)->my_as),(((my_n)->my_a)->my_t));
+ (my_emit_load)(((my_c)->my_s),(((my_n)->my_a)->my_t));
} else {
(my_v)=((my_find)((my_c),(((((my_n)->my_a)->my_t)->my_st)->my_name),(((my_n)->my_b)->my_s),(0UL)));
}
- (my_emit_num)(((my_c)->my_as),((my_v)->my_member_offset));
- (my_emit_add)(((my_c)->my_as));
+ (my_emit_num)(((my_c)->my_s),((my_v)->my_member_offset));
+ (my_emit_add)(((my_c)->my_s));
if (my_rhs) {
- (my_emit_load)(((my_c)->my_as),((my_n)->my_t));
+ (my_emit_load)(((my_c)->my_s),((my_n)->my_t));
}
} else if ((unsigned long)(((long)(my_kind))==((long)(my_N_IDENT)))) {
(my_v)=((my_find)((my_c),((my_n)->my_s),((unsigned char*)0UL),(0UL)));
if ((unsigned long)((my_v)&&((my_v)->my_enum_defined))) {
- (my_emit_num)(((my_c)->my_as),((my_v)->my_enum_value));
+ (my_emit_num)(((my_c)->my_s),((my_v)->my_enum_value));
return;
}
(my_v)=((my_find)((my_c),((my_d)->my_name),((my_n)->my_s),(0UL)));
if ((unsigned long)((my_v)&&((my_v)->my_var_defined))) {
- (my_emit_lea)(((my_c)->my_as),((my_v)->my_var_offset));
+ (my_emit_lea)(((my_c)->my_s),((my_v)->my_var_offset));
if (my_rhs) {
- (my_emit_load)(((my_c)->my_as),((my_n)->my_t));
+ (my_emit_load)(((my_c)->my_s),((my_n)->my_t));
}
return;
}
(my_v)=((my_find)((my_c),((my_n)->my_s),((unsigned char*)0UL),(0UL)));
if ((unsigned long)((my_v)&&((my_v)->my_func_defined))) {
- (my_emit_ptr)(((my_c)->my_as),((my_v)->my_func_label));
+ (my_emit_ptr)(((my_c)->my_s),((my_v)->my_func_label));
return;
}
} else if ((unsigned long)(((long)(my_kind))==((long)(my_N_ASSIGN)))) {
(my_compile_expr)((my_c),(my_d),((my_n)->my_b),(1UL));
(my_compile_expr)((my_c),(my_d),((my_n)->my_a),(0UL));
- (my_emit_store)(((my_c)->my_as),((my_n)->my_t));
+ (my_emit_store)(((my_c)->my_s),((my_n)->my_t));
} else if ((unsigned long)(((long)(my_kind))==((long)(my_N_SIZEOF)))) {
- (my_out)=((my_mklabel)(((my_c)->my_as)));
- (my_emit_jmp)(((my_c)->my_as),(my_out));
+ (my_out)=((my_mklabel)(((my_c)->my_s)));
+ (my_emit_jmp)(((my_c)->my_s),(my_out));
(my_compile_expr)((my_c),(my_d),((my_n)->my_a),(0UL));
- (my_fixup_label)(((my_c)->my_as),(my_out));
+ (my_fixup_label)(((my_c)->my_s),(my_out));
if ((unsigned long)(((long)((((my_n)->my_a)->my_t)->my_kind))==((long)(my_TY_BYTE)))) {
- (my_emit_num)(((my_c)->my_as),(1UL));
+ (my_emit_num)(((my_c)->my_s),(1UL));
} else {
- (my_emit_num)(((my_c)->my_as),((my_type_sizeof)((my_c),(((my_n)->my_a)->my_t))));
+ (my_emit_num)(((my_c)->my_s),((my_type_sizeof)((my_c),(((my_n)->my_a)->my_t))));
}
} else if ((unsigned long)(((long)(my_kind))==((long)(my_N_REF)))) {
(my_compile_expr)((my_c),(my_d),((my_n)->my_a),(0UL));
} else if ((unsigned long)(((long)(my_kind))==((long)(my_N_DEREF)))) {
(my_compile_expr)((my_c),(my_d),((my_n)->my_a),(1UL));
if (my_rhs) {
- (my_emit_load)(((my_c)->my_as),((my_n)->my_t));
+ (my_emit_load)(((my_c)->my_s),((my_n)->my_t));
}
} else if ((unsigned long)(((long)(my_kind))==((long)(my_N_INDEX)))) {
(my_compile_expr)((my_c),(my_d),((my_n)->my_a),(1UL));
(my_compile_expr)((my_c),(my_d),((my_n)->my_b),(1UL));
if ((unsigned long)(((long)(((my_n)->my_t)->my_kind))==((long)(my_TY_BYTE)))) {
- (my_emit_num)(((my_c)->my_as),(1UL));
+ (my_emit_num)(((my_c)->my_s),(1UL));
} else {
- (my_emit_num)(((my_c)->my_as),((my_type_sizeof)((my_c),((my_n)->my_t))));
+ (my_emit_num)(((my_c)->my_s),((my_type_sizeof)((my_c),((my_n)->my_t))));
}
- (my_emit_mul)(((my_c)->my_as));
- (my_emit_add)(((my_c)->my_as));
+ (my_emit_mul)(((my_c)->my_s));
+ (my_emit_add)(((my_c)->my_s));
if (my_rhs) {
- (my_emit_load)(((my_c)->my_as),((my_n)->my_t));
+ (my_emit_load)(((my_c)->my_s),((my_n)->my_t));
}
} else if ((unsigned long)(((long)(my_kind))==((long)(my_N_LT)))) {
(my_compile_expr)((my_c),(my_d),((my_n)->my_b),(1UL));
(my_compile_expr)((my_c),(my_d),((my_n)->my_a),(1UL));
- (my_emit_lt)(((my_c)->my_as));
+ (my_emit_lt)(((my_c)->my_s));
} else if ((unsigned long)(((long)(my_kind))==((long)(my_N_GT)))) {
(my_compile_expr)((my_c),(my_d),((my_n)->my_b),(1UL));
(my_compile_expr)((my_c),(my_d),((my_n)->my_a),(1UL));
- (my_emit_gt)(((my_c)->my_as));
+ (my_emit_gt)(((my_c)->my_s));
} else if ((unsigned long)(((long)(my_kind))==((long)(my_N_LE)))) {
(my_compile_expr)((my_c),(my_d),((my_n)->my_b),(1UL));
(my_compile_expr)((my_c),(my_d),((my_n)->my_a),(1UL));
- (my_emit_le)(((my_c)->my_as));
+ (my_emit_le)(((my_c)->my_s));
} else if ((unsigned long)(((long)(my_kind))==((long)(my_N_GE)))) {
(my_compile_expr)((my_c),(my_d),((my_n)->my_b),(1UL));
(my_compile_expr)((my_c),(my_d),((my_n)->my_a),(1UL));
- (my_emit_ge)(((my_c)->my_as));
+ (my_emit_ge)(((my_c)->my_s));
} else if ((unsigned long)(((long)(my_kind))==((long)(my_N_EQ)))) {
(my_compile_expr)((my_c),(my_d),((my_n)->my_b),(1UL));
(my_compile_expr)((my_c),(my_d),((my_n)->my_a),(1UL));
- (my_emit_eq)(((my_c)->my_as));
+ (my_emit_eq)(((my_c)->my_s));
} else if ((unsigned long)(((long)(my_kind))==((long)(my_N_NE)))) {
(my_compile_expr)((my_c),(my_d),((my_n)->my_b),(1UL));
(my_compile_expr)((my_c),(my_d),((my_n)->my_a),(1UL));
- (my_emit_ne)(((my_c)->my_as));
+ (my_emit_ne)(((my_c)->my_s));
} else if ((unsigned long)(((long)(my_kind))==((long)(my_N_BNOT)))) {
- (my_no)=((my_mklabel)(((my_c)->my_as)));
- (my_out)=((my_mklabel)(((my_c)->my_as)));
+ (my_no)=((my_mklabel)(((my_c)->my_s)));
+ (my_out)=((my_mklabel)(((my_c)->my_s)));
(my_compile_expr)((my_c),(my_d),((my_n)->my_a),(1UL));
- (my_emit_jz)(((my_c)->my_as),(my_no));
- (my_emit_num)(((my_c)->my_as),(0UL));
- (my_emit_jmp)(((my_c)->my_as),(my_out));
- (my_fixup_label)(((my_c)->my_as),(my_no));
- (my_emit_num)(((my_c)->my_as),(1UL));
- (my_fixup_label)(((my_c)->my_as),(my_out));
+ (my_emit_jz)(((my_c)->my_s),(my_no));
+ (my_emit_num)(((my_c)->my_s),(0UL));
+ (my_emit_jmp)(((my_c)->my_s),(my_out));
+ (my_fixup_label)(((my_c)->my_s),(my_no));
+ (my_emit_num)(((my_c)->my_s),(1UL));
+ (my_fixup_label)(((my_c)->my_s),(my_out));
} else if ((unsigned long)(((long)(my_kind))==((long)(my_N_BOR)))) {
- (my_no)=((my_mklabel)(((my_c)->my_as)));
- (my_out)=((my_mklabel)(((my_c)->my_as)));
+ (my_no)=((my_mklabel)(((my_c)->my_s)));
+ (my_out)=((my_mklabel)(((my_c)->my_s)));
(my_compile_expr)((my_c),(my_d),((my_n)->my_a),(1UL));
- (my_emit_jz)(((my_c)->my_as),(my_no));
- (my_emit_num)(((my_c)->my_as),(1UL));
- (my_emit_jmp)(((my_c)->my_as),(my_out));
- (my_fixup_label)(((my_c)->my_as),(my_no));
- (my_no)=((my_mklabel)(((my_c)->my_as)));
+ (my_emit_jz)(((my_c)->my_s),(my_no));
+ (my_emit_num)(((my_c)->my_s),(1UL));
+ (my_emit_jmp)(((my_c)->my_s),(my_out));
+ (my_fixup_label)(((my_c)->my_s),(my_no));
+ (my_no)=((my_mklabel)(((my_c)->my_s)));
(my_compile_expr)((my_c),(my_d),((my_n)->my_b),(1UL));
- (my_emit_jz)(((my_c)->my_as),(my_no));
- (my_emit_num)(((my_c)->my_as),(1UL));
- (my_emit_jmp)(((my_c)->my_as),(my_out));
- (my_fixup_label)(((my_c)->my_as),(my_no));
- (my_emit_num)(((my_c)->my_as),(0UL));
- (my_fixup_label)(((my_c)->my_as),(my_out));
+ (my_emit_jz)(((my_c)->my_s),(my_no));
+ (my_emit_num)(((my_c)->my_s),(1UL));
+ (my_emit_jmp)(((my_c)->my_s),(my_out));
+ (my_fixup_label)(((my_c)->my_s),(my_no));
+ (my_emit_num)(((my_c)->my_s),(0UL));
+ (my_fixup_label)(((my_c)->my_s),(my_out));
} else if ((unsigned long)(((long)(my_kind))==((long)(my_N_BAND)))) {
- (my_no)=((my_mklabel)(((my_c)->my_as)));
- (my_out)=((my_mklabel)(((my_c)->my_as)));
+ (my_no)=((my_mklabel)(((my_c)->my_s)));
+ (my_out)=((my_mklabel)(((my_c)->my_s)));
(my_compile_expr)((my_c),(my_d),((my_n)->my_a),(1UL));
- (my_emit_jz)(((my_c)->my_as),(my_no));
+ (my_emit_jz)(((my_c)->my_s),(my_no));
(my_compile_expr)((my_c),(my_d),((my_n)->my_b),(1UL));
- (my_emit_jz)(((my_c)->my_as),(my_no));
- (my_emit_num)(((my_c)->my_as),(1UL));
- (my_emit_jmp)(((my_c)->my_as),(my_out));
- (my_fixup_label)(((my_c)->my_as),(my_no));
- (my_emit_num)(((my_c)->my_as),(0UL));
- (my_fixup_label)(((my_c)->my_as),(my_out));
+ (my_emit_jz)(((my_c)->my_s),(my_no));
+ (my_emit_num)(((my_c)->my_s),(1UL));
+ (my_emit_jmp)(((my_c)->my_s),(my_out));
+ (my_fixup_label)(((my_c)->my_s),(my_no));
+ (my_emit_num)(((my_c)->my_s),(0UL));
+ (my_fixup_label)(((my_c)->my_s),(my_out));
} else if ((unsigned long)(((long)(my_kind))==((long)(my_N_POS)))) {
(my_compile_expr)((my_c),(my_d),((my_n)->my_a),(1UL));
} else if ((unsigned long)(((long)(my_kind))==((long)(my_N_NEG)))) {
(my_compile_expr)((my_c),(my_d),((my_n)->my_a),(1UL));
- (my_emit_neg)(((my_c)->my_as));
+ (my_emit_neg)(((my_c)->my_s));
} else if ((unsigned long)(((long)(my_kind))==((long)(my_N_NOT)))) {
(my_compile_expr)((my_c),(my_d),((my_n)->my_a),(1UL));
- (my_emit_not)(((my_c)->my_as));
+ (my_emit_not)(((my_c)->my_s));
} else if ((unsigned long)(((long)(my_kind))==((long)(my_N_ADD)))) {
(my_compile_expr)((my_c),(my_d),((my_n)->my_b),(1UL));
(my_compile_expr)((my_c),(my_d),((my_n)->my_a),(1UL));
- (my_emit_add)(((my_c)->my_as));
+ (my_emit_add)(((my_c)->my_s));
} else if ((unsigned long)(((long)(my_kind))==((long)(my_N_SUB)))) {
(my_compile_expr)((my_c),(my_d),((my_n)->my_b),(1UL));
(my_compile_expr)((my_c),(my_d),((my_n)->my_a),(1UL));
- (my_emit_sub)(((my_c)->my_as));
+ (my_emit_sub)(((my_c)->my_s));
} else if ((unsigned long)(((long)(my_kind))==((long)(my_N_MUL)))) {
(my_compile_expr)((my_c),(my_d),((my_n)->my_b),(1UL));
(my_compile_expr)((my_c),(my_d),((my_n)->my_a),(1UL));
- (my_emit_mul)(((my_c)->my_as));
+ (my_emit_mul)(((my_c)->my_s));
} else if ((unsigned long)(((long)(my_kind))==((long)(my_N_DIV)))) {
(my_compile_expr)((my_c),(my_d),((my_n)->my_b),(1UL));
(my_compile_expr)((my_c),(my_d),((my_n)->my_a),(1UL));
- (my_emit_div)(((my_c)->my_as));
+ (my_emit_div)(((my_c)->my_s));
} else if ((unsigned long)(((long)(my_kind))==((long)(my_N_MOD)))) {
(my_compile_expr)((my_c),(my_d),((my_n)->my_b),(1UL));
(my_compile_expr)((my_c),(my_d),((my_n)->my_a),(1UL));
- (my_emit_mod)(((my_c)->my_as));
+ (my_emit_mod)(((my_c)->my_s));
} else if ((unsigned long)(((long)(my_kind))==((long)(my_N_LSH)))) {
(my_compile_expr)((my_c),(my_d),((my_n)->my_b),(1UL));
(my_compile_expr)((my_c),(my_d),((my_n)->my_a),(1UL));
- (my_emit_lsh)(((my_c)->my_as));
+ (my_emit_lsh)(((my_c)->my_s));
} else if ((unsigned long)(((long)(my_kind))==((long)(my_N_RSH)))) {
(my_compile_expr)((my_c),(my_d),((my_n)->my_b),(1UL));
(my_compile_expr)((my_c),(my_d),((my_n)->my_a),(1UL));
- (my_emit_rsh)(((my_c)->my_as));
+ (my_emit_rsh)(((my_c)->my_s));
} else if ((unsigned long)(((long)(my_kind))==((long)(my_N_AND)))) {
(my_compile_expr)((my_c),(my_d),((my_n)->my_b),(1UL));
(my_compile_expr)((my_c),(my_d),((my_n)->my_a),(1UL));
- (my_emit_and)(((my_c)->my_as));
+ (my_emit_and)(((my_c)->my_s));
} else if ((unsigned long)(((long)(my_kind))==((long)(my_N_OR)))) {
(my_compile_expr)((my_c),(my_d),((my_n)->my_b),(1UL));
(my_compile_expr)((my_c),(my_d),((my_n)->my_a),(1UL));
- (my_emit_or)(((my_c)->my_as));
+ (my_emit_or)(((my_c)->my_s));
} else if ((unsigned long)(((long)(my_kind))==((long)(my_N_XOR)))) {
(my_compile_expr)((my_c),(my_d),((my_n)->my_b),(1UL));
(my_compile_expr)((my_c),(my_d),((my_n)->my_a),(1UL));
- (my_emit_xor)(((my_c)->my_as));
+ (my_emit_xor)(((my_c)->my_s));
} else if ((unsigned long)(((long)(my_kind))==((long)(my_N_CAST)))) {
(my_compile_expr)((my_c),(my_d),((my_n)->my_a),(1UL));
} else {
@@ -1935,15 +1944,15 @@ void( my_compile_func)(struct my_compiler* my_c,struct my_decl* my_d){
} else {
(my_pragma)=(0UL);
}
- (my_fixup_label)(((my_c)->my_as),((my_d)->my_func_label));
- (my_add_symbol)(((my_c)->my_as),((my_d)->my_name),((my_d)->my_func_label));
- (my_emit_preamble)(((my_c)->my_as),((my_d)->my_func_preamble),(my_pragma));
+ (my_fixup_label)(((my_c)->my_s),((my_d)->my_func_label));
+ (my_add_symbol)(((my_c)->my_s),((my_d)->my_name),((my_d)->my_func_label));
+ (my_emit_preamble)(((my_c)->my_s),((my_d)->my_func_preamble),(my_pragma));
(my_compile_stmt)((my_c),(my_d),(((my_d)->my_func_def)->my_b),((struct my_label*)0UL),((struct my_label*)0UL));
- (my_emit_num)(((my_c)->my_as),(0UL));
+ (my_emit_num)(((my_c)->my_s),(0UL));
if (my_pragma) {
- (my_emit_ud)(((my_c)->my_as));
+ (my_emit_ud)(((my_c)->my_s));
}
- (my_emit_ret)(((my_c)->my_as));
+ (my_emit_ret)(((my_c)->my_s));
}
void( my_compile_include)(struct my_compiler* my_c,struct my_node* my_n){
unsigned char* my_filename = 0;
@@ -1960,11 +1969,11 @@ void( my_compile_include)(struct my_compiler* my_c,struct my_node* my_n){
}
(my_blob)=((my_readall)((my_fd),(&(my_len)),((my_c)->my_a)));
(my_close)((my_fd));
- (my_as_opr)(((my_c)->my_as),(my_OP_POPR),(my_R_RAX));
- (my_as_opr)(((my_c)->my_as),(my_OP_POPR),(my_R_RDI));
- (my_as_opri64)(((my_c)->my_as),(my_OP_MOVABS),(my_R_RAX),(my_len));
- (my_as_modrm)(((my_c)->my_as),(my_OP_STORE),(my_R_RAX),(my_R_RDI),(0UL),(0UL),(0UL));
- (my_emit_blob)(((my_c)->my_as),(my_blob),(my_len));
+ (my_as_opr)(((my_c)->my_s),(my_OP_POPR),(my_R_RAX));
+ (my_as_opr)(((my_c)->my_s),(my_OP_POPR),(my_R_RDI));
+ (my_as_opri64)(((my_c)->my_s),(my_OP_MOVABS),(my_R_RAX),(my_len));
+ (my_as_modrm)(((my_c)->my_s),(my_OP_STORE),(my_R_RAX),(my_R_RDI),(0UL),(0UL),(0UL));
+ (my_emit_blob)(((my_c)->my_s),(my_blob),(my_len));
(my_free)(((my_c)->my_a),(my_blob));
}
void( my_compile_stmt)(struct my_compiler* my_c,struct my_decl* my_d,struct my_node* my_n,struct my_label* my_top,struct my_label* my_out){
@@ -1980,25 +1989,25 @@ void( my_compile_stmt)(struct my_compiler* my_c,struct my_decl* my_d,struct my_n
((my_c)->my_colno)=((my_n)->my_colno);
(my_kind)=((my_n)->my_kind);
if ((unsigned long)(((long)(my_kind))==((long)(my_N_CONDLIST)))) {
- (my_ifout)=((my_mklabel)(((my_c)->my_as)));
+ (my_ifout)=((my_mklabel)(((my_c)->my_s)));
(my_no)=((struct my_label*)0UL);
while (1) {
if (my_no) {
- (my_fixup_label)(((my_c)->my_as),(my_no));
+ (my_fixup_label)(((my_c)->my_s),(my_no));
}
if ((unsigned long)(!(my_n))) {
break;
}
- (my_no)=((my_mklabel)(((my_c)->my_as)));
+ (my_no)=((my_mklabel)(((my_c)->my_s)));
if (((my_n)->my_a)->my_a) {
(my_compile_expr)((my_c),(my_d),(((my_n)->my_a)->my_a),(1UL));
- (my_emit_jz)(((my_c)->my_as),(my_no));
+ (my_emit_jz)(((my_c)->my_s),(my_no));
}
(my_compile_stmt)((my_c),(my_d),(((my_n)->my_a)->my_b),(my_top),(my_out));
- (my_emit_jmp)(((my_c)->my_as),(my_ifout));
+ (my_emit_jmp)(((my_c)->my_s),(my_ifout));
(my_n)=((my_n)->my_b);
}
- (my_fixup_label)(((my_c)->my_as),(my_ifout));
+ (my_fixup_label)(((my_c)->my_s),(my_ifout));
} else if ((unsigned long)(((long)(my_kind))==((long)(my_N_STMTLIST)))) {
while (1) {
if ((unsigned long)(!(my_n))) {
@@ -2008,22 +2017,22 @@ void( my_compile_stmt)(struct my_compiler* my_c,struct my_decl* my_d,struct my_n
(my_n)=((my_n)->my_b);
}
} else if ((unsigned long)(((long)(my_kind))==((long)(my_N_LOOP)))) {
- (my_top)=((my_mklabel)(((my_c)->my_as)));
- (my_out)=((my_mklabel)(((my_c)->my_as)));
- (my_fixup_label)(((my_c)->my_as),(my_top));
+ (my_top)=((my_mklabel)(((my_c)->my_s)));
+ (my_out)=((my_mklabel)(((my_c)->my_s)));
+ (my_fixup_label)(((my_c)->my_s),(my_top));
(my_compile_stmt)((my_c),(my_d),((my_n)->my_a),(my_top),(my_out));
- (my_emit_jmp)(((my_c)->my_as),(my_top));
- (my_fixup_label)(((my_c)->my_as),(my_out));
+ (my_emit_jmp)(((my_c)->my_s),(my_top));
+ (my_fixup_label)(((my_c)->my_s),(my_out));
} else if ((unsigned long)(((long)(my_kind))==((long)(my_N_BREAK)))) {
if ((unsigned long)(!(my_out))) {
(my_cdie)((my_c),((unsigned char *)"break outside loop"));
}
- (my_emit_jmp)(((my_c)->my_as),(my_out));
+ (my_emit_jmp)(((my_c)->my_s),(my_out));
} else if ((unsigned long)(((long)(my_kind))==((long)(my_N_CONTINUE)))) {
if ((unsigned long)(!(my_top))) {
(my_cdie)((my_c),((unsigned char *)"continue outside loop"));
}
- (my_emit_jmp)(((my_c)->my_as),(my_top));
+ (my_emit_jmp)(((my_c)->my_s),(my_top));
} else if ((unsigned long)(((long)(my_kind))==((long)(my_N_RETURN)))) {
if ((my_n)->my_a) {
if ((unsigned long)(((long)((((my_d)->my_func_type)->my_val)->my_kind))==((long)(my_TY_VOID)))) {
@@ -2034,21 +2043,21 @@ void( my_compile_stmt)(struct my_compiler* my_c,struct my_decl* my_d,struct my_n
if ((unsigned long)(((long)((((my_d)->my_func_type)->my_val)->my_kind))!=((long)(my_TY_VOID)))) {
(my_cdie)((my_c),((unsigned char *)"returning void in a non void function"));
}
- (my_emit_num)(((my_c)->my_as),(0UL));
+ (my_emit_num)(((my_c)->my_s),(0UL));
}
- (my_emit_ret)(((my_c)->my_as));
+ (my_emit_ret)(((my_c)->my_s));
} else if ((unsigned long)(((long)(my_kind))==((long)(my_N_LABEL)))) {
(my_v)=((my_find)((my_c),((my_d)->my_name),(((my_n)->my_a)->my_s),(0UL)));
- (my_fixup_label)(((my_c)->my_as),((my_v)->my_goto_label));
+ (my_fixup_label)(((my_c)->my_s),((my_v)->my_goto_label));
} else if ((unsigned long)(((long)(my_kind))==((long)(my_N_GOTO)))) {
(my_v)=((my_find)((my_c),((my_d)->my_name),(((my_n)->my_a)->my_s),(0UL)));
if ((unsigned long)(((unsigned long)(!(my_v)))||((unsigned long)(!((my_v)->my_goto_defined))))) {
(my_cdie)((my_c),((unsigned char *)"label not defined"));
}
- (my_emit_jmp)(((my_c)->my_as),((my_v)->my_goto_label));
+ (my_emit_jmp)(((my_c)->my_s),((my_v)->my_goto_label));
} else if ((unsigned long)(((long)(my_kind))!=((long)(my_N_VARDECL)))) {
(my_compile_expr)((my_c),(my_d),(my_n),(1UL));
- (my_emit_pop)(((my_c)->my_as),(1UL));
+ (my_emit_pop)(((my_c)->my_s),(1UL));
}
}
struct my_node*( my_concat_program)(struct my_node* my_a,struct my_node* my_b){
@@ -2976,519 +2985,519 @@ void( my_emit_builtin)(struct my_compiler* my_c){
struct my_decl* my_d = 0;
(my_d)=((my_find)((my_c),((unsigned char *)"syscall"),((unsigned char*)0UL),(1UL)));
if ((unsigned long)(((my_d)->my_func_defined)&&((unsigned long)(!(((my_d)->my_func_label)->my_fixed))))) {
- (my_fixup_label)(((my_c)->my_as),((my_d)->my_func_label));
- (my_add_symbol)(((my_c)->my_as),((my_d)->my_name),((my_d)->my_func_label));
- (my_emit_preamble)(((my_c)->my_as),(0UL),(0UL));
- (my_emit_syscall)(((my_c)->my_as));
- (my_emit_ret)(((my_c)->my_as));
+ (my_fixup_label)(((my_c)->my_s),((my_d)->my_func_label));
+ (my_add_symbol)(((my_c)->my_s),((my_d)->my_name),((my_d)->my_func_label));
+ (my_emit_preamble)(((my_c)->my_s),(0UL),(0UL));
+ (my_emit_syscall)(((my_c)->my_s));
+ (my_emit_ret)(((my_c)->my_s));
}
(my_d)=((my_find)((my_c),((unsigned char *)"_restorer"),((unsigned char*)0UL),(1UL)));
if ((unsigned long)(((my_d)->my_func_defined)&&((unsigned long)(!(((my_d)->my_func_label)->my_fixed))))) {
- (my_fixup_label)(((my_c)->my_as),((my_d)->my_func_label));
- (my_add_symbol)(((my_c)->my_as),((my_d)->my_name),((my_d)->my_func_label));
- (my_emit_restorer)(((my_c)->my_as));
+ (my_fixup_label)(((my_c)->my_s),((my_d)->my_func_label));
+ (my_add_symbol)(((my_c)->my_s),((my_d)->my_name),((my_d)->my_func_label));
+ (my_emit_restorer)(((my_c)->my_s));
}
(my_d)=((my_find)((my_c),((unsigned char *)"_include"),((unsigned char*)0UL),(1UL)));
if ((unsigned long)(((my_d)->my_func_defined)&&((unsigned long)(!(((my_d)->my_func_label)->my_fixed))))) {
- (my_fixup_label)(((my_c)->my_as),((my_d)->my_func_label));
- (my_add_symbol)(((my_c)->my_as),((my_d)->my_name),((my_d)->my_func_label));
- (my_emit_preamble)(((my_c)->my_as),(0UL),(0UL));
- (my_as_op)(((my_c)->my_as),(my_OP_UD2));
- (my_as_opr)(((my_c)->my_as),(my_OP_PUSHR),(my_R_RAX));
- (my_emit_ret)(((my_c)->my_as));
+ (my_fixup_label)(((my_c)->my_s),((my_d)->my_func_label));
+ (my_add_symbol)(((my_c)->my_s),((my_d)->my_name),((my_d)->my_func_label));
+ (my_emit_preamble)(((my_c)->my_s),(0UL),(0UL));
+ (my_as_op)(((my_c)->my_s),(my_OP_UD2));
+ (my_as_opr)(((my_c)->my_s),(my_OP_PUSHR),(my_R_RAX));
+ (my_emit_ret)(((my_c)->my_s));
}
(my_d)=((my_find)((my_c),((unsigned char *)"ud2"),((unsigned char*)0UL),(1UL)));
if ((unsigned long)(((my_d)->my_func_defined)&&((unsigned long)(!(((my_d)->my_func_label)->my_fixed))))) {
- (my_fixup_label)(((my_c)->my_as),((my_d)->my_func_label));
- (my_add_symbol)(((my_c)->my_as),((my_d)->my_name),((my_d)->my_func_label));
- (my_emit_preamble)(((my_c)->my_as),(0UL),(0UL));
- (my_as_op)(((my_c)->my_as),(my_OP_UD2));
- (my_as_opr)(((my_c)->my_as),(my_OP_PUSHR),(my_R_RAX));
- (my_emit_ret)(((my_c)->my_as));
+ (my_fixup_label)(((my_c)->my_s),((my_d)->my_func_label));
+ (my_add_symbol)(((my_c)->my_s),((my_d)->my_name),((my_d)->my_func_label));
+ (my_emit_preamble)(((my_c)->my_s),(0UL),(0UL));
+ (my_as_op)(((my_c)->my_s),(my_OP_UD2));
+ (my_as_opr)(((my_c)->my_s),(my_OP_PUSHR),(my_R_RAX));
+ (my_emit_ret)(((my_c)->my_s));
}
(my_d)=((my_find)((my_c),((unsigned char *)"cpuid"),((unsigned char*)0UL),(1UL)));
if ((unsigned long)(((my_d)->my_func_defined)&&((unsigned long)(!(((my_d)->my_func_label)->my_fixed))))) {
- (my_fixup_label)(((my_c)->my_as),((my_d)->my_func_label));
- (my_add_symbol)(((my_c)->my_as),((my_d)->my_name),((my_d)->my_func_label));
- (my_emit_preamble)(((my_c)->my_as),(0UL),(0UL));
- (my_as_modrm)(((my_c)->my_as),(my_OP_LOAD),(my_R_RDI),(my_R_RBP),(0UL),(0UL),(16UL));
- (my_as_modrm)(((my_c)->my_as),(my_OP_LOAD),(my_R_RAX),(my_R_RDI),(0UL),(0UL),(0UL));
- (my_as_modrm)(((my_c)->my_as),(my_OP_LOAD),(my_R_RDI),(my_R_RBP),(0UL),(0UL),(24UL));
- (my_as_modrm)(((my_c)->my_as),(my_OP_LOAD),(my_R_RCX),(my_R_RDI),(0UL),(0UL),(0UL));
- (my_as_modrm)(((my_c)->my_as),(my_OP_LOAD),(my_R_RDI),(my_R_RBP),(0UL),(0UL),(32UL));
- (my_as_modrm)(((my_c)->my_as),(my_OP_LOAD),(my_R_RDX),(my_R_RDI),(0UL),(0UL),(0UL));
- (my_as_modrm)(((my_c)->my_as),(my_OP_LOAD),(my_R_RDI),(my_R_RBP),(0UL),(0UL),(40UL));
- (my_as_modrm)(((my_c)->my_as),(my_OP_LOAD),(my_R_RBX),(my_R_RDI),(0UL),(0UL),(0UL));
- (my_as_op)(((my_c)->my_as),(my_OP_CPUID));
- (my_as_modrm)(((my_c)->my_as),(my_OP_LOAD),(my_R_RDI),(my_R_RBP),(0UL),(0UL),(16UL));
- (my_as_modrm)(((my_c)->my_as),(my_OP_STORE),(my_R_RAX),(my_R_RDI),(0UL),(0UL),(0UL));
- (my_as_modrm)(((my_c)->my_as),(my_OP_LOAD),(my_R_RDI),(my_R_RBP),(0UL),(0UL),(24UL));
- (my_as_modrm)(((my_c)->my_as),(my_OP_STORE),(my_R_RCX),(my_R_RDI),(0UL),(0UL),(0UL));
- (my_as_modrm)(((my_c)->my_as),(my_OP_LOAD),(my_R_RDI),(my_R_RBP),(0UL),(0UL),(32UL));
- (my_as_modrm)(((my_c)->my_as),(my_OP_STORE),(my_R_RDX),(my_R_RDI),(0UL),(0UL),(0UL));
- (my_as_modrm)(((my_c)->my_as),(my_OP_LOAD),(my_R_RDI),(my_R_RBP),(0UL),(0UL),(40UL));
- (my_as_modrm)(((my_c)->my_as),(my_OP_STORE),(my_R_RBX),(my_R_RDI),(0UL),(0UL),(0UL));
- (my_as_opr)(((my_c)->my_as),(my_OP_PUSHR),(my_R_RAX));
- (my_emit_ret)(((my_c)->my_as));
+ (my_fixup_label)(((my_c)->my_s),((my_d)->my_func_label));
+ (my_add_symbol)(((my_c)->my_s),((my_d)->my_name),((my_d)->my_func_label));
+ (my_emit_preamble)(((my_c)->my_s),(0UL),(0UL));
+ (my_as_modrm)(((my_c)->my_s),(my_OP_LOAD),(my_R_RDI),(my_R_RBP),(0UL),(0UL),(16UL));
+ (my_as_modrm)(((my_c)->my_s),(my_OP_LOAD),(my_R_RAX),(my_R_RDI),(0UL),(0UL),(0UL));
+ (my_as_modrm)(((my_c)->my_s),(my_OP_LOAD),(my_R_RDI),(my_R_RBP),(0UL),(0UL),(24UL));
+ (my_as_modrm)(((my_c)->my_s),(my_OP_LOAD),(my_R_RCX),(my_R_RDI),(0UL),(0UL),(0UL));
+ (my_as_modrm)(((my_c)->my_s),(my_OP_LOAD),(my_R_RDI),(my_R_RBP),(0UL),(0UL),(32UL));
+ (my_as_modrm)(((my_c)->my_s),(my_OP_LOAD),(my_R_RDX),(my_R_RDI),(0UL),(0UL),(0UL));
+ (my_as_modrm)(((my_c)->my_s),(my_OP_LOAD),(my_R_RDI),(my_R_RBP),(0UL),(0UL),(40UL));
+ (my_as_modrm)(((my_c)->my_s),(my_OP_LOAD),(my_R_RBX),(my_R_RDI),(0UL),(0UL),(0UL));
+ (my_as_op)(((my_c)->my_s),(my_OP_CPUID));
+ (my_as_modrm)(((my_c)->my_s),(my_OP_LOAD),(my_R_RDI),(my_R_RBP),(0UL),(0UL),(16UL));
+ (my_as_modrm)(((my_c)->my_s),(my_OP_STORE),(my_R_RAX),(my_R_RDI),(0UL),(0UL),(0UL));
+ (my_as_modrm)(((my_c)->my_s),(my_OP_LOAD),(my_R_RDI),(my_R_RBP),(0UL),(0UL),(24UL));
+ (my_as_modrm)(((my_c)->my_s),(my_OP_STORE),(my_R_RCX),(my_R_RDI),(0UL),(0UL),(0UL));
+ (my_as_modrm)(((my_c)->my_s),(my_OP_LOAD),(my_R_RDI),(my_R_RBP),(0UL),(0UL),(32UL));
+ (my_as_modrm)(((my_c)->my_s),(my_OP_STORE),(my_R_RDX),(my_R_RDI),(0UL),(0UL),(0UL));
+ (my_as_modrm)(((my_c)->my_s),(my_OP_LOAD),(my_R_RDI),(my_R_RBP),(0UL),(0UL),(40UL));
+ (my_as_modrm)(((my_c)->my_s),(my_OP_STORE),(my_R_RBX),(my_R_RDI),(0UL),(0UL),(0UL));
+ (my_as_opr)(((my_c)->my_s),(my_OP_PUSHR),(my_R_RAX));
+ (my_emit_ret)(((my_c)->my_s));
}
(my_d)=((my_find)((my_c),((unsigned char *)"inb"),((unsigned char*)0UL),(1UL)));
if ((unsigned long)(((my_d)->my_func_defined)&&((unsigned long)(!(((my_d)->my_func_label)->my_fixed))))) {
- (my_fixup_label)(((my_c)->my_as),((my_d)->my_func_label));
- (my_add_symbol)(((my_c)->my_as),((my_d)->my_name),((my_d)->my_func_label));
- (my_emit_preamble)(((my_c)->my_as),(0UL),(0UL));
- (my_as_modrm)(((my_c)->my_as),(my_OP_LOAD),(my_R_RDX),(my_R_RBP),(0UL),(0UL),(16UL));
- (my_as_op)(((my_c)->my_as),(my_OP_IN));
- (my_as_opr)(((my_c)->my_as),(my_OP_PUSHR),(my_R_RAX));
- (my_emit_ret)(((my_c)->my_as));
+ (my_fixup_label)(((my_c)->my_s),((my_d)->my_func_label));
+ (my_add_symbol)(((my_c)->my_s),((my_d)->my_name),((my_d)->my_func_label));
+ (my_emit_preamble)(((my_c)->my_s),(0UL),(0UL));
+ (my_as_modrm)(((my_c)->my_s),(my_OP_LOAD),(my_R_RDX),(my_R_RBP),(0UL),(0UL),(16UL));
+ (my_as_op)(((my_c)->my_s),(my_OP_IN));
+ (my_as_opr)(((my_c)->my_s),(my_OP_PUSHR),(my_R_RAX));
+ (my_emit_ret)(((my_c)->my_s));
}
(my_d)=((my_find)((my_c),((unsigned char *)"outb"),((unsigned char*)0UL),(1UL)));
if ((unsigned long)(((my_d)->my_func_defined)&&((unsigned long)(!(((my_d)->my_func_label)->my_fixed))))) {
- (my_fixup_label)(((my_c)->my_as),((my_d)->my_func_label));
- (my_add_symbol)(((my_c)->my_as),((my_d)->my_name),((my_d)->my_func_label));
- (my_emit_preamble)(((my_c)->my_as),(0UL),(0UL));
- (my_as_modrm)(((my_c)->my_as),(my_OP_LOAD),(my_R_RDX),(my_R_RBP),(0UL),(0UL),(16UL));
- (my_as_modrm)(((my_c)->my_as),(my_OP_LOAD),(my_R_RAX),(my_R_RBP),(0UL),(0UL),(24UL));
- (my_as_op)(((my_c)->my_as),(my_OP_OUT));
- (my_as_opr)(((my_c)->my_as),(my_OP_PUSHR),(my_R_RAX));
- (my_emit_ret)(((my_c)->my_as));
+ (my_fixup_label)(((my_c)->my_s),((my_d)->my_func_label));
+ (my_add_symbol)(((my_c)->my_s),((my_d)->my_name),((my_d)->my_func_label));
+ (my_emit_preamble)(((my_c)->my_s),(0UL),(0UL));
+ (my_as_modrm)(((my_c)->my_s),(my_OP_LOAD),(my_R_RDX),(my_R_RBP),(0UL),(0UL),(16UL));
+ (my_as_modrm)(((my_c)->my_s),(my_OP_LOAD),(my_R_RAX),(my_R_RBP),(0UL),(0UL),(24UL));
+ (my_as_op)(((my_c)->my_s),(my_OP_OUT));
+ (my_as_opr)(((my_c)->my_s),(my_OP_PUSHR),(my_R_RAX));
+ (my_emit_ret)(((my_c)->my_s));
}
(my_d)=((my_find)((my_c),((unsigned char *)"inw"),((unsigned char*)0UL),(1UL)));
if ((unsigned long)(((my_d)->my_func_defined)&&((unsigned long)(!(((my_d)->my_func_label)->my_fixed))))) {
- (my_fixup_label)(((my_c)->my_as),((my_d)->my_func_label));
- (my_add_symbol)(((my_c)->my_as),((my_d)->my_name),((my_d)->my_func_label));
- (my_emit_preamble)(((my_c)->my_as),(0UL),(0UL));
- (my_as_modrm)(((my_c)->my_as),(my_OP_LOAD),(my_R_RDX),(my_R_RBP),(0UL),(0UL),(16UL));
- (my_as_emit)(((my_c)->my_as),(my_OP_OS));
- (my_as_op)(((my_c)->my_as),(my_OP_IND));
- (my_as_opr)(((my_c)->my_as),(my_OP_PUSHR),(my_R_RAX));
- (my_emit_ret)(((my_c)->my_as));
+ (my_fixup_label)(((my_c)->my_s),((my_d)->my_func_label));
+ (my_add_symbol)(((my_c)->my_s),((my_d)->my_name),((my_d)->my_func_label));
+ (my_emit_preamble)(((my_c)->my_s),(0UL),(0UL));
+ (my_as_modrm)(((my_c)->my_s),(my_OP_LOAD),(my_R_RDX),(my_R_RBP),(0UL),(0UL),(16UL));
+ (my_as_emit)(((my_c)->my_s),(my_OP_OS));
+ (my_as_op)(((my_c)->my_s),(my_OP_IND));
+ (my_as_opr)(((my_c)->my_s),(my_OP_PUSHR),(my_R_RAX));
+ (my_emit_ret)(((my_c)->my_s));
}
(my_d)=((my_find)((my_c),((unsigned char *)"outw"),((unsigned char*)0UL),(1UL)));
if ((unsigned long)(((my_d)->my_func_defined)&&((unsigned long)(!(((my_d)->my_func_label)->my_fixed))))) {
- (my_fixup_label)(((my_c)->my_as),((my_d)->my_func_label));
- (my_add_symbol)(((my_c)->my_as),((my_d)->my_name),((my_d)->my_func_label));
- (my_emit_preamble)(((my_c)->my_as),(0UL),(0UL));
- (my_as_modrm)(((my_c)->my_as),(my_OP_LOAD),(my_R_RDX),(my_R_RBP),(0UL),(0UL),(16UL));
- (my_as_modrm)(((my_c)->my_as),(my_OP_LOAD),(my_R_RAX),(my_R_RBP),(0UL),(0UL),(24UL));
- (my_as_emit)(((my_c)->my_as),(my_OP_OS));
- (my_as_op)(((my_c)->my_as),(my_OP_OUTD));
- (my_as_opr)(((my_c)->my_as),(my_OP_PUSHR),(my_R_RAX));
- (my_emit_ret)(((my_c)->my_as));
+ (my_fixup_label)(((my_c)->my_s),((my_d)->my_func_label));
+ (my_add_symbol)(((my_c)->my_s),((my_d)->my_name),((my_d)->my_func_label));
+ (my_emit_preamble)(((my_c)->my_s),(0UL),(0UL));
+ (my_as_modrm)(((my_c)->my_s),(my_OP_LOAD),(my_R_RDX),(my_R_RBP),(0UL),(0UL),(16UL));
+ (my_as_modrm)(((my_c)->my_s),(my_OP_LOAD),(my_R_RAX),(my_R_RBP),(0UL),(0UL),(24UL));
+ (my_as_emit)(((my_c)->my_s),(my_OP_OS));
+ (my_as_op)(((my_c)->my_s),(my_OP_OUTD));
+ (my_as_opr)(((my_c)->my_s),(my_OP_PUSHR),(my_R_RAX));
+ (my_emit_ret)(((my_c)->my_s));
}
(my_d)=((my_find)((my_c),((unsigned char *)"ind"),((unsigned char*)0UL),(1UL)));
if ((unsigned long)(((my_d)->my_func_defined)&&((unsigned long)(!(((my_d)->my_func_label)->my_fixed))))) {
- (my_fixup_label)(((my_c)->my_as),((my_d)->my_func_label));
- (my_add_symbol)(((my_c)->my_as),((my_d)->my_name),((my_d)->my_func_label));
- (my_emit_preamble)(((my_c)->my_as),(0UL),(0UL));
- (my_as_modrm)(((my_c)->my_as),(my_OP_LOAD),(my_R_RDX),(my_R_RBP),(0UL),(0UL),(16UL));
- (my_as_op)(((my_c)->my_as),(my_OP_IND));
- (my_as_opr)(((my_c)->my_as),(my_OP_PUSHR),(my_R_RAX));
- (my_emit_ret)(((my_c)->my_as));
+ (my_fixup_label)(((my_c)->my_s),((my_d)->my_func_label));
+ (my_add_symbol)(((my_c)->my_s),((my_d)->my_name),((my_d)->my_func_label));
+ (my_emit_preamble)(((my_c)->my_s),(0UL),(0UL));
+ (my_as_modrm)(((my_c)->my_s),(my_OP_LOAD),(my_R_RDX),(my_R_RBP),(0UL),(0UL),(16UL));
+ (my_as_op)(((my_c)->my_s),(my_OP_IND));
+ (my_as_opr)(((my_c)->my_s),(my_OP_PUSHR),(my_R_RAX));
+ (my_emit_ret)(((my_c)->my_s));
}
(my_d)=((my_find)((my_c),((unsigned char *)"outd"),((unsigned char*)0UL),(1UL)));
if ((unsigned long)(((my_d)->my_func_defined)&&((unsigned long)(!(((my_d)->my_func_label)->my_fixed))))) {
- (my_fixup_label)(((my_c)->my_as),((my_d)->my_func_label));
- (my_add_symbol)(((my_c)->my_as),((my_d)->my_name),((my_d)->my_func_label));
- (my_emit_preamble)(((my_c)->my_as),(0UL),(0UL));
- (my_as_modrm)(((my_c)->my_as),(my_OP_LOAD),(my_R_RDX),(my_R_RBP),(0UL),(0UL),(16UL));
- (my_as_modrm)(((my_c)->my_as),(my_OP_LOAD),(my_R_RAX),(my_R_RBP),(0UL),(0UL),(24UL));
- (my_as_op)(((my_c)->my_as),(my_OP_OUTD));
- (my_as_opr)(((my_c)->my_as),(my_OP_PUSHR),(my_R_RAX));
- (my_emit_ret)(((my_c)->my_as));
+ (my_fixup_label)(((my_c)->my_s),((my_d)->my_func_label));
+ (my_add_symbol)(((my_c)->my_s),((my_d)->my_name),((my_d)->my_func_label));
+ (my_emit_preamble)(((my_c)->my_s),(0UL),(0UL));
+ (my_as_modrm)(((my_c)->my_s),(my_OP_LOAD),(my_R_RDX),(my_R_RBP),(0UL),(0UL),(16UL));
+ (my_as_modrm)(((my_c)->my_s),(my_OP_LOAD),(my_R_RAX),(my_R_RBP),(0UL),(0UL),(24UL));
+ (my_as_op)(((my_c)->my_s),(my_OP_OUTD));
+ (my_as_opr)(((my_c)->my_s),(my_OP_PUSHR),(my_R_RAX));
+ (my_emit_ret)(((my_c)->my_s));
}
(my_d)=((my_find)((my_c),((unsigned char *)"rdmsr"),((unsigned char*)0UL),(1UL)));
if ((unsigned long)(((my_d)->my_func_defined)&&((unsigned long)(!(((my_d)->my_func_label)->my_fixed))))) {
- (my_fixup_label)(((my_c)->my_as),((my_d)->my_func_label));
- (my_add_symbol)(((my_c)->my_as),((my_d)->my_name),((my_d)->my_func_label));
- (my_emit_preamble)(((my_c)->my_as),(0UL),(0UL));
- (my_as_modrm)(((my_c)->my_as),(my_OP_LOAD),(my_R_RCX),(my_R_RBP),(0UL),(0UL),(16UL));
- (my_as_op)(((my_c)->my_as),(my_OP_RDMSR));
- (my_as_modri)(((my_c)->my_as),(my_OP_MOVI),(my_R_RCX),(32UL));
- (my_as_modr)(((my_c)->my_as),(my_OP_SHLM),(my_R_RDX));
- (my_as_modrr)(((my_c)->my_as),(my_OP_ORRM),(my_R_RAX),(my_R_RDX));
- (my_as_opr)(((my_c)->my_as),(my_OP_PUSHR),(my_R_RAX));
- (my_emit_ret)(((my_c)->my_as));
+ (my_fixup_label)(((my_c)->my_s),((my_d)->my_func_label));
+ (my_add_symbol)(((my_c)->my_s),((my_d)->my_name),((my_d)->my_func_label));
+ (my_emit_preamble)(((my_c)->my_s),(0UL),(0UL));
+ (my_as_modrm)(((my_c)->my_s),(my_OP_LOAD),(my_R_RCX),(my_R_RBP),(0UL),(0UL),(16UL));
+ (my_as_op)(((my_c)->my_s),(my_OP_RDMSR));
+ (my_as_modri)(((my_c)->my_s),(my_OP_MOVI),(my_R_RCX),(32UL));
+ (my_as_modr)(((my_c)->my_s),(my_OP_SHLM),(my_R_RDX));
+ (my_as_modrr)(((my_c)->my_s),(my_OP_ORRM),(my_R_RAX),(my_R_RDX));
+ (my_as_opr)(((my_c)->my_s),(my_OP_PUSHR),(my_R_RAX));
+ (my_emit_ret)(((my_c)->my_s));
}
(my_d)=((my_find)((my_c),((unsigned char *)"wrmsr"),((unsigned char*)0UL),(1UL)));
if ((unsigned long)(((my_d)->my_func_defined)&&((unsigned long)(!(((my_d)->my_func_label)->my_fixed))))) {
- (my_fixup_label)(((my_c)->my_as),((my_d)->my_func_label));
- (my_add_symbol)(((my_c)->my_as),((my_d)->my_name),((my_d)->my_func_label));
- (my_emit_preamble)(((my_c)->my_as),(0UL),(0UL));
- (my_as_modrm)(((my_c)->my_as),(my_OP_LOAD),(my_R_RAX),(my_R_RBP),(0UL),(0UL),(24UL));
- (my_as_modrr)(((my_c)->my_as),(my_OP_MOVE),(my_R_RDX),(my_R_RAX));
- (my_as_modri)(((my_c)->my_as),(my_OP_MOVI),(my_R_RCX),(32UL));
- (my_as_modr)(((my_c)->my_as),(my_OP_SHRM),(my_R_RDX));
- (my_as_modrm)(((my_c)->my_as),(my_OP_LOAD),(my_R_RCX),(my_R_RBP),(0UL),(0UL),(16UL));
- (my_as_op)(((my_c)->my_as),(my_OP_WRMSR));
- (my_as_opr)(((my_c)->my_as),(my_OP_PUSHR),(my_R_RAX));
- (my_emit_ret)(((my_c)->my_as));
+ (my_fixup_label)(((my_c)->my_s),((my_d)->my_func_label));
+ (my_add_symbol)(((my_c)->my_s),((my_d)->my_name),((my_d)->my_func_label));
+ (my_emit_preamble)(((my_c)->my_s),(0UL),(0UL));
+ (my_as_modrm)(((my_c)->my_s),(my_OP_LOAD),(my_R_RAX),(my_R_RBP),(0UL),(0UL),(24UL));
+ (my_as_modrr)(((my_c)->my_s),(my_OP_MOVE),(my_R_RDX),(my_R_RAX));
+ (my_as_modri)(((my_c)->my_s),(my_OP_MOVI),(my_R_RCX),(32UL));
+ (my_as_modr)(((my_c)->my_s),(my_OP_SHRM),(my_R_RDX));
+ (my_as_modrm)(((my_c)->my_s),(my_OP_LOAD),(my_R_RCX),(my_R_RBP),(0UL),(0UL),(16UL));
+ (my_as_op)(((my_c)->my_s),(my_OP_WRMSR));
+ (my_as_opr)(((my_c)->my_s),(my_OP_PUSHR),(my_R_RAX));
+ (my_emit_ret)(((my_c)->my_s));
}
(my_d)=((my_find)((my_c),((unsigned char *)"rdcr0"),((unsigned char*)0UL),(1UL)));
if ((unsigned long)(((my_d)->my_func_defined)&&((unsigned long)(!(((my_d)->my_func_label)->my_fixed))))) {
- (my_fixup_label)(((my_c)->my_as),((my_d)->my_func_label));
- (my_add_symbol)(((my_c)->my_as),((my_d)->my_name),((my_d)->my_func_label));
- (my_emit_preamble)(((my_c)->my_as),(0UL),(0UL));
- (my_as_modrr)(((my_c)->my_as),(my_OP_RDCRR),(my_R_CR0),(my_R_RAX));
- (my_as_opr)(((my_c)->my_as),(my_OP_PUSHR),(my_R_RAX));
- (my_emit_ret)(((my_c)->my_as));
+ (my_fixup_label)(((my_c)->my_s),((my_d)->my_func_label));
+ (my_add_symbol)(((my_c)->my_s),((my_d)->my_name),((my_d)->my_func_label));
+ (my_emit_preamble)(((my_c)->my_s),(0UL),(0UL));
+ (my_as_modrr)(((my_c)->my_s),(my_OP_RDCRR),(my_R_CR0),(my_R_RAX));
+ (my_as_opr)(((my_c)->my_s),(my_OP_PUSHR),(my_R_RAX));
+ (my_emit_ret)(((my_c)->my_s));
}
(my_d)=((my_find)((my_c),((unsigned char *)"wrcr0"),((unsigned char*)0UL),(1UL)));
if ((unsigned long)(((my_d)->my_func_defined)&&((unsigned long)(!(((my_d)->my_func_label)->my_fixed))))) {
- (my_fixup_label)(((my_c)->my_as),((my_d)->my_func_label));
- (my_add_symbol)(((my_c)->my_as),((my_d)->my_name),((my_d)->my_func_label));
- (my_emit_preamble)(((my_c)->my_as),(0UL),(0UL));
- (my_as_modrm)(((my_c)->my_as),(my_OP_LOAD),(my_R_RCX),(my_R_RBP),(0UL),(0UL),(16UL));
- (my_as_modrr)(((my_c)->my_as),(my_OP_WRCRR),(my_R_CR0),(my_R_RAX));
- (my_as_opr)(((my_c)->my_as),(my_OP_PUSHR),(my_R_RAX));
- (my_emit_ret)(((my_c)->my_as));
+ (my_fixup_label)(((my_c)->my_s),((my_d)->my_func_label));
+ (my_add_symbol)(((my_c)->my_s),((my_d)->my_name),((my_d)->my_func_label));
+ (my_emit_preamble)(((my_c)->my_s),(0UL),(0UL));
+ (my_as_modrm)(((my_c)->my_s),(my_OP_LOAD),(my_R_RCX),(my_R_RBP),(0UL),(0UL),(16UL));
+ (my_as_modrr)(((my_c)->my_s),(my_OP_WRCRR),(my_R_CR0),(my_R_RAX));
+ (my_as_opr)(((my_c)->my_s),(my_OP_PUSHR),(my_R_RAX));
+ (my_emit_ret)(((my_c)->my_s));
}
(my_d)=((my_find)((my_c),((unsigned char *)"rdcr2"),((unsigned char*)0UL),(1UL)));
if ((unsigned long)(((my_d)->my_func_defined)&&((unsigned long)(!(((my_d)->my_func_label)->my_fixed))))) {
- (my_fixup_label)(((my_c)->my_as),((my_d)->my_func_label));
- (my_add_symbol)(((my_c)->my_as),((my_d)->my_name),((my_d)->my_func_label));
- (my_emit_preamble)(((my_c)->my_as),(0UL),(0UL));
- (my_as_modrr)(((my_c)->my_as),(my_OP_RDCRR),(my_R_CR2),(my_R_RAX));
- (my_as_opr)(((my_c)->my_as),(my_OP_PUSHR),(my_R_RAX));
- (my_emit_ret)(((my_c)->my_as));
+ (my_fixup_label)(((my_c)->my_s),((my_d)->my_func_label));
+ (my_add_symbol)(((my_c)->my_s),((my_d)->my_name),((my_d)->my_func_label));
+ (my_emit_preamble)(((my_c)->my_s),(0UL),(0UL));
+ (my_as_modrr)(((my_c)->my_s),(my_OP_RDCRR),(my_R_CR2),(my_R_RAX));
+ (my_as_opr)(((my_c)->my_s),(my_OP_PUSHR),(my_R_RAX));
+ (my_emit_ret)(((my_c)->my_s));
}
(my_d)=((my_find)((my_c),((unsigned char *)"wrcr2"),((unsigned char*)0UL),(1UL)));
if ((unsigned long)(((my_d)->my_func_defined)&&((unsigned long)(!(((my_d)->my_func_label)->my_fixed))))) {
- (my_fixup_label)(((my_c)->my_as),((my_d)->my_func_label));
- (my_add_symbol)(((my_c)->my_as),((my_d)->my_name),((my_d)->my_func_label));
- (my_emit_preamble)(((my_c)->my_as),(0UL),(0UL));
- (my_as_modrm)(((my_c)->my_as),(my_OP_LOAD),(my_R_RCX),(my_R_RBP),(0UL),(0UL),(16UL));
- (my_as_modrr)(((my_c)->my_as),(my_OP_WRCRR),(my_R_CR2),(my_R_RAX));
- (my_as_opr)(((my_c)->my_as),(my_OP_PUSHR),(my_R_RAX));
- (my_emit_ret)(((my_c)->my_as));
+ (my_fixup_label)(((my_c)->my_s),((my_d)->my_func_label));
+ (my_add_symbol)(((my_c)->my_s),((my_d)->my_name),((my_d)->my_func_label));
+ (my_emit_preamble)(((my_c)->my_s),(0UL),(0UL));
+ (my_as_modrm)(((my_c)->my_s),(my_OP_LOAD),(my_R_RCX),(my_R_RBP),(0UL),(0UL),(16UL));
+ (my_as_modrr)(((my_c)->my_s),(my_OP_WRCRR),(my_R_CR2),(my_R_RAX));
+ (my_as_opr)(((my_c)->my_s),(my_OP_PUSHR),(my_R_RAX));
+ (my_emit_ret)(((my_c)->my_s));
}
(my_d)=((my_find)((my_c),((unsigned char *)"rdcr3"),((unsigned char*)0UL),(1UL)));
if ((unsigned long)(((my_d)->my_func_defined)&&((unsigned long)(!(((my_d)->my_func_label)->my_fixed))))) {
- (my_fixup_label)(((my_c)->my_as),((my_d)->my_func_label));
- (my_add_symbol)(((my_c)->my_as),((my_d)->my_name),((my_d)->my_func_label));
- (my_emit_preamble)(((my_c)->my_as),(0UL),(0UL));
- (my_as_modrr)(((my_c)->my_as),(my_OP_RDCRR),(my_R_CR3),(my_R_RAX));
- (my_as_opr)(((my_c)->my_as),(my_OP_PUSHR),(my_R_RAX));
- (my_emit_ret)(((my_c)->my_as));
+ (my_fixup_label)(((my_c)->my_s),((my_d)->my_func_label));
+ (my_add_symbol)(((my_c)->my_s),((my_d)->my_name),((my_d)->my_func_label));
+ (my_emit_preamble)(((my_c)->my_s),(0UL),(0UL));
+ (my_as_modrr)(((my_c)->my_s),(my_OP_RDCRR),(my_R_CR3),(my_R_RAX));
+ (my_as_opr)(((my_c)->my_s),(my_OP_PUSHR),(my_R_RAX));
+ (my_emit_ret)(((my_c)->my_s));
}
(my_d)=((my_find)((my_c),((unsigned char *)"wrcr3"),((unsigned char*)0UL),(1UL)));
if ((unsigned long)(((my_d)->my_func_defined)&&((unsigned long)(!(((my_d)->my_func_label)->my_fixed))))) {
- (my_fixup_label)(((my_c)->my_as),((my_d)->my_func_label));
- (my_add_symbol)(((my_c)->my_as),((my_d)->my_name),((my_d)->my_func_label));
- (my_emit_preamble)(((my_c)->my_as),(0UL),(0UL));
- (my_as_modrm)(((my_c)->my_as),(my_OP_LOAD),(my_R_RCX),(my_R_RBP),(0UL),(0UL),(16UL));
- (my_as_modrr)(((my_c)->my_as),(my_OP_WRCRR),(my_R_CR3),(my_R_RAX));
- (my_as_opr)(((my_c)->my_as),(my_OP_PUSHR),(my_R_RAX));
- (my_emit_ret)(((my_c)->my_as));
+ (my_fixup_label)(((my_c)->my_s),((my_d)->my_func_label));
+ (my_add_symbol)(((my_c)->my_s),((my_d)->my_name),((my_d)->my_func_label));
+ (my_emit_preamble)(((my_c)->my_s),(0UL),(0UL));
+ (my_as_modrm)(((my_c)->my_s),(my_OP_LOAD),(my_R_RCX),(my_R_RBP),(0UL),(0UL),(16UL));
+ (my_as_modrr)(((my_c)->my_s),(my_OP_WRCRR),(my_R_CR3),(my_R_RAX));
+ (my_as_opr)(((my_c)->my_s),(my_OP_PUSHR),(my_R_RAX));
+ (my_emit_ret)(((my_c)->my_s));
}
(my_d)=((my_find)((my_c),((unsigned char *)"rdcr4"),((unsigned char*)0UL),(1UL)));
if ((unsigned long)(((my_d)->my_func_defined)&&((unsigned long)(!(((my_d)->my_func_label)->my_fixed))))) {
- (my_fixup_label)(((my_c)->my_as),((my_d)->my_func_label));
- (my_add_symbol)(((my_c)->my_as),((my_d)->my_name),((my_d)->my_func_label));
- (my_emit_preamble)(((my_c)->my_as),(0UL),(0UL));
- (my_as_modrr)(((my_c)->my_as),(my_OP_RDCRR),(my_R_CR4),(my_R_RAX));
- (my_as_opr)(((my_c)->my_as),(my_OP_PUSHR),(my_R_RAX));
- (my_emit_ret)(((my_c)->my_as));
+ (my_fixup_label)(((my_c)->my_s),((my_d)->my_func_label));
+ (my_add_symbol)(((my_c)->my_s),((my_d)->my_name),((my_d)->my_func_label));
+ (my_emit_preamble)(((my_c)->my_s),(0UL),(0UL));
+ (my_as_modrr)(((my_c)->my_s),(my_OP_RDCRR),(my_R_CR4),(my_R_RAX));
+ (my_as_opr)(((my_c)->my_s),(my_OP_PUSHR),(my_R_RAX));
+ (my_emit_ret)(((my_c)->my_s));
}
(my_d)=((my_find)((my_c),((unsigned char *)"wrcr4"),((unsigned char*)0UL),(1UL)));
if ((unsigned long)(((my_d)->my_func_defined)&&((unsigned long)(!(((my_d)->my_func_label)->my_fixed))))) {
- (my_fixup_label)(((my_c)->my_as),((my_d)->my_func_label));
- (my_add_symbol)(((my_c)->my_as),((my_d)->my_name),((my_d)->my_func_label));
- (my_emit_preamble)(((my_c)->my_as),(0UL),(0UL));
- (my_as_modrm)(((my_c)->my_as),(my_OP_LOAD),(my_R_RCX),(my_R_RBP),(0UL),(0UL),(16UL));
- (my_as_modrr)(((my_c)->my_as),(my_OP_WRCRR),(my_R_CR4),(my_R_RAX));
- (my_as_opr)(((my_c)->my_as),(my_OP_PUSHR),(my_R_RAX));
- (my_emit_ret)(((my_c)->my_as));
+ (my_fixup_label)(((my_c)->my_s),((my_d)->my_func_label));
+ (my_add_symbol)(((my_c)->my_s),((my_d)->my_name),((my_d)->my_func_label));
+ (my_emit_preamble)(((my_c)->my_s),(0UL),(0UL));
+ (my_as_modrm)(((my_c)->my_s),(my_OP_LOAD),(my_R_RCX),(my_R_RBP),(0UL),(0UL),(16UL));
+ (my_as_modrr)(((my_c)->my_s),(my_OP_WRCRR),(my_R_CR4),(my_R_RAX));
+ (my_as_opr)(((my_c)->my_s),(my_OP_PUSHR),(my_R_RAX));
+ (my_emit_ret)(((my_c)->my_s));
}
(my_d)=((my_find)((my_c),((unsigned char *)"lgdt"),((unsigned char*)0UL),(1UL)));
if ((unsigned long)(((my_d)->my_func_defined)&&((unsigned long)(!(((my_d)->my_func_label)->my_fixed))))) {
- (my_fixup_label)(((my_c)->my_as),((my_d)->my_func_label));
- (my_add_symbol)(((my_c)->my_as),((my_d)->my_name),((my_d)->my_func_label));
- (my_emit_preamble)(((my_c)->my_as),(0UL),(0UL));
- (my_as_modri)(((my_c)->my_as),(my_OP_SUBI),(my_R_RSP),(16UL));
- (my_as_modrm)(((my_c)->my_as),(my_OP_LOAD),(my_R_RAX),(my_R_RBP),(0UL),(0UL),(24UL));
- (my_as_modri)(((my_c)->my_as),(my_OP_SUBI),(my_R_RAX),(1UL));
- (my_as_modrm)(((my_c)->my_as),(my_OP_STORE),(my_R_RAX),(my_R_RSP),(0UL),(0UL),(0UL));
- (my_as_modrm)(((my_c)->my_as),(my_OP_LOAD),(my_R_RAX),(my_R_RBP),(0UL),(0UL),(16UL));
- (my_as_modrm)(((my_c)->my_as),(my_OP_STORE),(my_R_RAX),(my_R_RSP),(0UL),(0UL),(2UL));
- (my_as_modm)(((my_c)->my_as),(my_OP_LGDTM),(my_R_RSP),(0UL),(0UL),(0UL));
- (my_as_modri)(((my_c)->my_as),(my_OP_ADDI),(my_R_RSP),(16UL));
- (my_as_opr)(((my_c)->my_as),(my_OP_PUSHR),(my_R_RAX));
- (my_emit_ret)(((my_c)->my_as));
+ (my_fixup_label)(((my_c)->my_s),((my_d)->my_func_label));
+ (my_add_symbol)(((my_c)->my_s),((my_d)->my_name),((my_d)->my_func_label));
+ (my_emit_preamble)(((my_c)->my_s),(0UL),(0UL));
+ (my_as_modri)(((my_c)->my_s),(my_OP_SUBI),(my_R_RSP),(16UL));
+ (my_as_modrm)(((my_c)->my_s),(my_OP_LOAD),(my_R_RAX),(my_R_RBP),(0UL),(0UL),(24UL));
+ (my_as_modri)(((my_c)->my_s),(my_OP_SUBI),(my_R_RAX),(1UL));
+ (my_as_modrm)(((my_c)->my_s),(my_OP_STORE),(my_R_RAX),(my_R_RSP),(0UL),(0UL),(0UL));
+ (my_as_modrm)(((my_c)->my_s),(my_OP_LOAD),(my_R_RAX),(my_R_RBP),(0UL),(0UL),(16UL));
+ (my_as_modrm)(((my_c)->my_s),(my_OP_STORE),(my_R_RAX),(my_R_RSP),(0UL),(0UL),(2UL));
+ (my_as_modm)(((my_c)->my_s),(my_OP_LGDTM),(my_R_RSP),(0UL),(0UL),(0UL));
+ (my_as_modri)(((my_c)->my_s),(my_OP_ADDI),(my_R_RSP),(16UL));
+ (my_as_opr)(((my_c)->my_s),(my_OP_PUSHR),(my_R_RAX));
+ (my_emit_ret)(((my_c)->my_s));
}
(my_d)=((my_find)((my_c),((unsigned char *)"lidt"),((unsigned char*)0UL),(1UL)));
if ((unsigned long)(((my_d)->my_func_defined)&&((unsigned long)(!(((my_d)->my_func_label)->my_fixed))))) {
- (my_fixup_label)(((my_c)->my_as),((my_d)->my_func_label));
- (my_add_symbol)(((my_c)->my_as),((my_d)->my_name),((my_d)->my_func_label));
- (my_emit_preamble)(((my_c)->my_as),(0UL),(0UL));
- (my_as_modri)(((my_c)->my_as),(my_OP_SUBI),(my_R_RSP),(16UL));
- (my_as_modrm)(((my_c)->my_as),(my_OP_LOAD),(my_R_RAX),(my_R_RBP),(0UL),(0UL),(24UL));
- (my_as_modri)(((my_c)->my_as),(my_OP_SUBI),(my_R_RAX),(1UL));
- (my_as_modrm)(((my_c)->my_as),(my_OP_STORE),(my_R_RAX),(my_R_RSP),(0UL),(0UL),(0UL));
- (my_as_modrm)(((my_c)->my_as),(my_OP_LOAD),(my_R_RAX),(my_R_RBP),(0UL),(0UL),(16UL));
- (my_as_modrm)(((my_c)->my_as),(my_OP_STORE),(my_R_RAX),(my_R_RSP),(0UL),(0UL),(2UL));
- (my_as_modm)(((my_c)->my_as),(my_OP_LIDTM),(my_R_RSP),(0UL),(0UL),(0UL));
- (my_as_modri)(((my_c)->my_as),(my_OP_ADDI),(my_R_RSP),(16UL));
- (my_as_opr)(((my_c)->my_as),(my_OP_PUSHR),(my_R_RAX));
- (my_emit_ret)(((my_c)->my_as));
+ (my_fixup_label)(((my_c)->my_s),((my_d)->my_func_label));
+ (my_add_symbol)(((my_c)->my_s),((my_d)->my_name),((my_d)->my_func_label));
+ (my_emit_preamble)(((my_c)->my_s),(0UL),(0UL));
+ (my_as_modri)(((my_c)->my_s),(my_OP_SUBI),(my_R_RSP),(16UL));
+ (my_as_modrm)(((my_c)->my_s),(my_OP_LOAD),(my_R_RAX),(my_R_RBP),(0UL),(0UL),(24UL));
+ (my_as_modri)(((my_c)->my_s),(my_OP_SUBI),(my_R_RAX),(1UL));
+ (my_as_modrm)(((my_c)->my_s),(my_OP_STORE),(my_R_RAX),(my_R_RSP),(0UL),(0UL),(0UL));
+ (my_as_modrm)(((my_c)->my_s),(my_OP_LOAD),(my_R_RAX),(my_R_RBP),(0UL),(0UL),(16UL));
+ (my_as_modrm)(((my_c)->my_s),(my_OP_STORE),(my_R_RAX),(my_R_RSP),(0UL),(0UL),(2UL));
+ (my_as_modm)(((my_c)->my_s),(my_OP_LIDTM),(my_R_RSP),(0UL),(0UL),(0UL));
+ (my_as_modri)(((my_c)->my_s),(my_OP_ADDI),(my_R_RSP),(16UL));
+ (my_as_opr)(((my_c)->my_s),(my_OP_PUSHR),(my_R_RAX));
+ (my_emit_ret)(((my_c)->my_s));
}
(my_d)=((my_find)((my_c),((unsigned char *)"lldt"),((unsigned char*)0UL),(1UL)));
if ((unsigned long)(((my_d)->my_func_defined)&&((unsigned long)(!(((my_d)->my_func_label)->my_fixed))))) {
- (my_fixup_label)(((my_c)->my_as),((my_d)->my_func_label));
- (my_add_symbol)(((my_c)->my_as),((my_d)->my_name),((my_d)->my_func_label));
- (my_emit_preamble)(((my_c)->my_as),(0UL),(0UL));
- (my_as_modrm)(((my_c)->my_as),(my_OP_LOAD),(my_R_RAX),(my_R_RBP),(0UL),(0UL),(16UL));
- (my_as_modr)(((my_c)->my_as),(my_OP_LLDTM),(my_R_RAX));
- (my_as_opr)(((my_c)->my_as),(my_OP_PUSHR),(my_R_RAX));
- (my_emit_ret)(((my_c)->my_as));
+ (my_fixup_label)(((my_c)->my_s),((my_d)->my_func_label));
+ (my_add_symbol)(((my_c)->my_s),((my_d)->my_name),((my_d)->my_func_label));
+ (my_emit_preamble)(((my_c)->my_s),(0UL),(0UL));
+ (my_as_modrm)(((my_c)->my_s),(my_OP_LOAD),(my_R_RAX),(my_R_RBP),(0UL),(0UL),(16UL));
+ (my_as_modr)(((my_c)->my_s),(my_OP_LLDTM),(my_R_RAX));
+ (my_as_opr)(((my_c)->my_s),(my_OP_PUSHR),(my_R_RAX));
+ (my_emit_ret)(((my_c)->my_s));
}
(my_d)=((my_find)((my_c),((unsigned char *)"ltr"),((unsigned char*)0UL),(1UL)));
if ((unsigned long)(((my_d)->my_func_defined)&&((unsigned long)(!(((my_d)->my_func_label)->my_fixed))))) {
- (my_fixup_label)(((my_c)->my_as),((my_d)->my_func_label));
- (my_add_symbol)(((my_c)->my_as),((my_d)->my_name),((my_d)->my_func_label));
- (my_emit_preamble)(((my_c)->my_as),(0UL),(0UL));
- (my_as_modrm)(((my_c)->my_as),(my_OP_LOAD),(my_R_RAX),(my_R_RBP),(0UL),(0UL),(16UL));
- (my_as_modr)(((my_c)->my_as),(my_OP_LTRM),(my_R_RAX));
- (my_as_opr)(((my_c)->my_as),(my_OP_PUSHR),(my_R_RAX));
- (my_emit_ret)(((my_c)->my_as));
+ (my_fixup_label)(((my_c)->my_s),((my_d)->my_func_label));
+ (my_add_symbol)(((my_c)->my_s),((my_d)->my_name),((my_d)->my_func_label));
+ (my_emit_preamble)(((my_c)->my_s),(0UL),(0UL));
+ (my_as_modrm)(((my_c)->my_s),(my_OP_LOAD),(my_R_RAX),(my_R_RBP),(0UL),(0UL),(16UL));
+ (my_as_modr)(((my_c)->my_s),(my_OP_LTRM),(my_R_RAX));
+ (my_as_opr)(((my_c)->my_s),(my_OP_PUSHR),(my_R_RAX));
+ (my_emit_ret)(((my_c)->my_s));
}
(my_d)=((my_find)((my_c),((unsigned char *)"lseg"),((unsigned char*)0UL),(1UL)));
if ((unsigned long)(((my_d)->my_func_defined)&&((unsigned long)(!(((my_d)->my_func_label)->my_fixed))))) {
- (my_fixup_label)(((my_c)->my_as),((my_d)->my_func_label));
- (my_add_symbol)(((my_c)->my_as),((my_d)->my_name),((my_d)->my_func_label));
- (my_emit_preamble)(((my_c)->my_as),(0UL),(0UL));
- (my_as_modrm)(((my_c)->my_as),(my_OP_LOAD),(my_R_RAX),(my_R_RBP),(0UL),(0UL),(24UL));
- (my_as_modrr)(((my_c)->my_as),(my_OP_WRSR),(my_R_ES),(my_R_RAX));
- (my_as_modrr)(((my_c)->my_as),(my_OP_WRSR),(my_R_DS),(my_R_RAX));
- (my_as_modrr)(((my_c)->my_as),(my_OP_WRSR),(my_R_FS),(my_R_RAX));
- (my_as_modrr)(((my_c)->my_as),(my_OP_WRSR),(my_R_GS),(my_R_RAX));
- (my_as_opr)(((my_c)->my_as),(my_OP_PUSHR),(my_R_RAX));
- (my_as_opr)(((my_c)->my_as),(my_OP_PUSHR),(my_R_RBP));
- (my_as_op)(((my_c)->my_as),(my_OP_PUSHF));
- (my_as_modrm)(((my_c)->my_as),(my_OP_LOAD),(my_R_RAX),(my_R_RBP),(0UL),(0UL),(16UL));
- (my_as_opr)(((my_c)->my_as),(my_OP_PUSHR),(my_R_RAX));
- (my_as_op)(((my_c)->my_as),(my_OP_CALL));
- (my_as_emit)(((my_c)->my_as),(5UL));
- (my_as_emit)(((my_c)->my_as),(0UL));
- (my_as_emit)(((my_c)->my_as),(0UL));
- (my_as_emit)(((my_c)->my_as),(0UL));
- (my_as_op)(((my_c)->my_as),(my_OP_JMP));
- (my_as_emit)(((my_c)->my_as),(2UL));
- (my_as_emit)(((my_c)->my_as),(0UL));
- (my_as_emit)(((my_c)->my_as),(0UL));
- (my_as_emit)(((my_c)->my_as),(0UL));
- (my_as_op)(((my_c)->my_as),(my_OP_IRETQ));
- (my_as_opr)(((my_c)->my_as),(my_OP_PUSHR),(my_R_RAX));
- (my_emit_ret)(((my_c)->my_as));
+ (my_fixup_label)(((my_c)->my_s),((my_d)->my_func_label));
+ (my_add_symbol)(((my_c)->my_s),((my_d)->my_name),((my_d)->my_func_label));
+ (my_emit_preamble)(((my_c)->my_s),(0UL),(0UL));
+ (my_as_modrm)(((my_c)->my_s),(my_OP_LOAD),(my_R_RAX),(my_R_RBP),(0UL),(0UL),(24UL));
+ (my_as_modrr)(((my_c)->my_s),(my_OP_WRSR),(my_R_ES),(my_R_RAX));
+ (my_as_modrr)(((my_c)->my_s),(my_OP_WRSR),(my_R_DS),(my_R_RAX));
+ (my_as_modrr)(((my_c)->my_s),(my_OP_WRSR),(my_R_FS),(my_R_RAX));
+ (my_as_modrr)(((my_c)->my_s),(my_OP_WRSR),(my_R_GS),(my_R_RAX));
+ (my_as_opr)(((my_c)->my_s),(my_OP_PUSHR),(my_R_RAX));
+ (my_as_opr)(((my_c)->my_s),(my_OP_PUSHR),(my_R_RBP));
+ (my_as_op)(((my_c)->my_s),(my_OP_PUSHF));
+ (my_as_modrm)(((my_c)->my_s),(my_OP_LOAD),(my_R_RAX),(my_R_RBP),(0UL),(0UL),(16UL));
+ (my_as_opr)(((my_c)->my_s),(my_OP_PUSHR),(my_R_RAX));
+ (my_as_op)(((my_c)->my_s),(my_OP_CALL));
+ (my_as_emit)(((my_c)->my_s),(5UL));
+ (my_as_emit)(((my_c)->my_s),(0UL));
+ (my_as_emit)(((my_c)->my_s),(0UL));
+ (my_as_emit)(((my_c)->my_s),(0UL));
+ (my_as_op)(((my_c)->my_s),(my_OP_JMP));
+ (my_as_emit)(((my_c)->my_s),(2UL));
+ (my_as_emit)(((my_c)->my_s),(0UL));
+ (my_as_emit)(((my_c)->my_s),(0UL));
+ (my_as_emit)(((my_c)->my_s),(0UL));
+ (my_as_op)(((my_c)->my_s),(my_OP_IRETQ));
+ (my_as_opr)(((my_c)->my_s),(my_OP_PUSHR),(my_R_RAX));
+ (my_emit_ret)(((my_c)->my_s));
}
(my_d)=((my_find)((my_c),((unsigned char *)"hlt"),((unsigned char*)0UL),(1UL)));
if ((unsigned long)(((my_d)->my_func_defined)&&((unsigned long)(!(((my_d)->my_func_label)->my_fixed))))) {
- (my_fixup_label)(((my_c)->my_as),((my_d)->my_func_label));
- (my_add_symbol)(((my_c)->my_as),((my_d)->my_name),((my_d)->my_func_label));
- (my_emit_preamble)(((my_c)->my_as),(0UL),(0UL));
- (my_as_op)(((my_c)->my_as),(my_OP_HLT));
- (my_as_opr)(((my_c)->my_as),(my_OP_PUSHR),(my_R_RAX));
- (my_emit_ret)(((my_c)->my_as));
+ (my_fixup_label)(((my_c)->my_s),((my_d)->my_func_label));
+ (my_add_symbol)(((my_c)->my_s),((my_d)->my_name),((my_d)->my_func_label));
+ (my_emit_preamble)(((my_c)->my_s),(0UL),(0UL));
+ (my_as_op)(((my_c)->my_s),(my_OP_HLT));
+ (my_as_opr)(((my_c)->my_s),(my_OP_PUSHR),(my_R_RAX));
+ (my_emit_ret)(((my_c)->my_s));
}
(my_d)=((my_find)((my_c),((unsigned char *)"cli"),((unsigned char*)0UL),(1UL)));
if ((unsigned long)(((my_d)->my_func_defined)&&((unsigned long)(!(((my_d)->my_func_label)->my_fixed))))) {
- (my_fixup_label)(((my_c)->my_as),((my_d)->my_func_label));
- (my_add_symbol)(((my_c)->my_as),((my_d)->my_name),((my_d)->my_func_label));
- (my_emit_preamble)(((my_c)->my_as),(0UL),(0UL));
- (my_as_op)(((my_c)->my_as),(my_OP_CLI));
- (my_as_opr)(((my_c)->my_as),(my_OP_PUSHR),(my_R_RAX));
- (my_emit_ret)(((my_c)->my_as));
+ (my_fixup_label)(((my_c)->my_s),((my_d)->my_func_label));
+ (my_add_symbol)(((my_c)->my_s),((my_d)->my_name),((my_d)->my_func_label));
+ (my_emit_preamble)(((my_c)->my_s),(0UL),(0UL));
+ (my_as_op)(((my_c)->my_s),(my_OP_CLI));
+ (my_as_opr)(((my_c)->my_s),(my_OP_PUSHR),(my_R_RAX));
+ (my_emit_ret)(((my_c)->my_s));
}
(my_d)=((my_find)((my_c),((unsigned char *)"sti"),((unsigned char*)0UL),(1UL)));
if ((unsigned long)(((my_d)->my_func_defined)&&((unsigned long)(!(((my_d)->my_func_label)->my_fixed))))) {
- (my_fixup_label)(((my_c)->my_as),((my_d)->my_func_label));
- (my_add_symbol)(((my_c)->my_as),((my_d)->my_name),((my_d)->my_func_label));
- (my_emit_preamble)(((my_c)->my_as),(0UL),(0UL));
- (my_as_op)(((my_c)->my_as),(my_OP_STI));
- (my_as_opr)(((my_c)->my_as),(my_OP_PUSHR),(my_R_RAX));
- (my_emit_ret)(((my_c)->my_as));
+ (my_fixup_label)(((my_c)->my_s),((my_d)->my_func_label));
+ (my_add_symbol)(((my_c)->my_s),((my_d)->my_name),((my_d)->my_func_label));
+ (my_emit_preamble)(((my_c)->my_s),(0UL),(0UL));
+ (my_as_op)(((my_c)->my_s),(my_OP_STI));
+ (my_as_opr)(((my_c)->my_s),(my_OP_PUSHR),(my_R_RAX));
+ (my_emit_ret)(((my_c)->my_s));
}
(my_d)=((my_find)((my_c),((unsigned char *)"rdflags"),((unsigned char*)0UL),(1UL)));
if ((unsigned long)(((my_d)->my_func_defined)&&((unsigned long)(!(((my_d)->my_func_label)->my_fixed))))) {
- (my_fixup_label)(((my_c)->my_as),((my_d)->my_func_label));
- (my_add_symbol)(((my_c)->my_as),((my_d)->my_name),((my_d)->my_func_label));
- (my_emit_preamble)(((my_c)->my_as),(0UL),(0UL));
- (my_as_op)(((my_c)->my_as),(my_OP_PUSHF));
- (my_emit_ret)(((my_c)->my_as));
+ (my_fixup_label)(((my_c)->my_s),((my_d)->my_func_label));
+ (my_add_symbol)(((my_c)->my_s),((my_d)->my_name),((my_d)->my_func_label));
+ (my_emit_preamble)(((my_c)->my_s),(0UL),(0UL));
+ (my_as_op)(((my_c)->my_s),(my_OP_PUSHF));
+ (my_emit_ret)(((my_c)->my_s));
}
(my_d)=((my_find)((my_c),((unsigned char *)"wrflags"),((unsigned char*)0UL),(1UL)));
if ((unsigned long)(((my_d)->my_func_defined)&&((unsigned long)(!(((my_d)->my_func_label)->my_fixed))))) {
- (my_fixup_label)(((my_c)->my_as),((my_d)->my_func_label));
- (my_add_symbol)(((my_c)->my_as),((my_d)->my_name),((my_d)->my_func_label));
- (my_emit_preamble)(((my_c)->my_as),(0UL),(0UL));
- (my_as_op)(((my_c)->my_as),(my_OP_PUSHF));
- (my_as_modrm)(((my_c)->my_as),(my_OP_LOAD),(my_R_RAX),(my_R_RBP),(0UL),(0UL),(16UL));
- (my_as_opr)(((my_c)->my_as),(my_OP_PUSHR),(my_R_RAX));
- (my_as_op)(((my_c)->my_as),(my_OP_POPF));
- (my_emit_ret)(((my_c)->my_as));
+ (my_fixup_label)(((my_c)->my_s),((my_d)->my_func_label));
+ (my_add_symbol)(((my_c)->my_s),((my_d)->my_name),((my_d)->my_func_label));
+ (my_emit_preamble)(((my_c)->my_s),(0UL),(0UL));
+ (my_as_op)(((my_c)->my_s),(my_OP_PUSHF));
+ (my_as_modrm)(((my_c)->my_s),(my_OP_LOAD),(my_R_RAX),(my_R_RBP),(0UL),(0UL),(16UL));
+ (my_as_opr)(((my_c)->my_s),(my_OP_PUSHR),(my_R_RAX));
+ (my_as_op)(((my_c)->my_s),(my_OP_POPF));
+ (my_emit_ret)(((my_c)->my_s));
}
(my_d)=((my_find)((my_c),((unsigned char *)"wbinvld"),((unsigned char*)0UL),(1UL)));
if ((unsigned long)(((my_d)->my_func_defined)&&((unsigned long)(!(((my_d)->my_func_label)->my_fixed))))) {
- (my_fixup_label)(((my_c)->my_as),((my_d)->my_func_label));
- (my_add_symbol)(((my_c)->my_as),((my_d)->my_name),((my_d)->my_func_label));
- (my_emit_preamble)(((my_c)->my_as),(0UL),(0UL));
- (my_as_modrm)(((my_c)->my_as),(my_OP_LOAD),(my_R_RAX),(my_R_RBP),(0UL),(0UL),(16UL));
- (my_as_modm)(((my_c)->my_as),(my_OP_WBINVD),(my_R_RAX),(0UL),(0UL),(0UL));
- (my_as_opr)(((my_c)->my_as),(my_OP_PUSHR),(my_R_RAX));
- (my_emit_ret)(((my_c)->my_as));
+ (my_fixup_label)(((my_c)->my_s),((my_d)->my_func_label));
+ (my_add_symbol)(((my_c)->my_s),((my_d)->my_name),((my_d)->my_func_label));
+ (my_emit_preamble)(((my_c)->my_s),(0UL),(0UL));
+ (my_as_modrm)(((my_c)->my_s),(my_OP_LOAD),(my_R_RAX),(my_R_RBP),(0UL),(0UL),(16UL));
+ (my_as_modm)(((my_c)->my_s),(my_OP_WBINVD),(my_R_RAX),(0UL),(0UL),(0UL));
+ (my_as_opr)(((my_c)->my_s),(my_OP_PUSHR),(my_R_RAX));
+ (my_emit_ret)(((my_c)->my_s));
}
(my_d)=((my_find)((my_c),((unsigned char *)"invlpg"),((unsigned char*)0UL),(1UL)));
if ((unsigned long)(((my_d)->my_func_defined)&&((unsigned long)(!(((my_d)->my_func_label)->my_fixed))))) {
- (my_fixup_label)(((my_c)->my_as),((my_d)->my_func_label));
- (my_add_symbol)(((my_c)->my_as),((my_d)->my_name),((my_d)->my_func_label));
- (my_emit_preamble)(((my_c)->my_as),(0UL),(0UL));
- (my_as_modrm)(((my_c)->my_as),(my_OP_LOAD),(my_R_RAX),(my_R_RBP),(0UL),(0UL),(16UL));
- (my_as_modm)(((my_c)->my_as),(my_OP_INVLPGM),(my_R_RAX),(0UL),(0UL),(0UL));
- (my_as_opr)(((my_c)->my_as),(my_OP_PUSHR),(my_R_RAX));
- (my_emit_ret)(((my_c)->my_as));
+ (my_fixup_label)(((my_c)->my_s),((my_d)->my_func_label));
+ (my_add_symbol)(((my_c)->my_s),((my_d)->my_name),((my_d)->my_func_label));
+ (my_emit_preamble)(((my_c)->my_s),(0UL),(0UL));
+ (my_as_modrm)(((my_c)->my_s),(my_OP_LOAD),(my_R_RAX),(my_R_RBP),(0UL),(0UL),(16UL));
+ (my_as_modm)(((my_c)->my_s),(my_OP_INVLPGM),(my_R_RAX),(0UL),(0UL),(0UL));
+ (my_as_opr)(((my_c)->my_s),(my_OP_PUSHR),(my_R_RAX));
+ (my_emit_ret)(((my_c)->my_s));
}
(my_d)=((my_find)((my_c),((unsigned char *)"_ssr0"),((unsigned char*)0UL),(1UL)));
if ((unsigned long)(((my_d)->my_func_defined)&&((unsigned long)(!(((my_d)->my_func_label)->my_fixed))))) {
- (my_fixup_label)(((my_c)->my_as),((my_d)->my_func_label));
- (my_add_symbol)(((my_c)->my_as),((my_d)->my_name),((my_d)->my_func_label));
+ (my_fixup_label)(((my_c)->my_s),((my_d)->my_func_label));
+ (my_add_symbol)(((my_c)->my_s),((my_d)->my_name),((my_d)->my_func_label));
(my_emit_ssr)((my_c));
}
(my_d)=((my_find)((my_c),((unsigned char *)"_isr0"),((unsigned char*)0UL),(1UL)));
if ((unsigned long)(((my_d)->my_func_defined)&&((unsigned long)(!(((my_d)->my_func_label)->my_fixed))))) {
- (my_fixup_label)(((my_c)->my_as),((my_d)->my_func_label));
- (my_add_symbol)(((my_c)->my_as),((my_d)->my_name),((my_d)->my_func_label));
+ (my_fixup_label)(((my_c)->my_s),((my_d)->my_func_label));
+ (my_add_symbol)(((my_c)->my_s),((my_d)->my_name),((my_d)->my_func_label));
(my_emit_isr)((my_c));
}
(my_d)=((my_find)((my_c),((unsigned char *)"_rgs"),((unsigned char*)0UL),(1UL)));
if ((unsigned long)(((my_d)->my_func_defined)&&((unsigned long)(!(((my_d)->my_func_label)->my_fixed))))) {
- (my_fixup_label)(((my_c)->my_as),((my_d)->my_func_label));
- (my_add_symbol)(((my_c)->my_as),((my_d)->my_name),((my_d)->my_func_label));
- (my_emit_preamble)(((my_c)->my_as),(0UL),(0UL));
- (my_as_modrm)(((my_c)->my_as),(my_OP_LOAD),(my_R_RSI),(my_R_RBP),(0UL),(0UL),(16UL));
- (my_as_emit)(((my_c)->my_as),(my_OP_GS));
- (my_as_modrm)(((my_c)->my_as),(my_OP_LOAD),(my_R_RAX),(my_R_RSI),(0UL),(0UL),(0UL));
- (my_as_opr)(((my_c)->my_as),(my_OP_PUSHR),(my_R_RAX));
- (my_emit_ret)(((my_c)->my_as));
+ (my_fixup_label)(((my_c)->my_s),((my_d)->my_func_label));
+ (my_add_symbol)(((my_c)->my_s),((my_d)->my_name),((my_d)->my_func_label));
+ (my_emit_preamble)(((my_c)->my_s),(0UL),(0UL));
+ (my_as_modrm)(((my_c)->my_s),(my_OP_LOAD),(my_R_RSI),(my_R_RBP),(0UL),(0UL),(16UL));
+ (my_as_emit)(((my_c)->my_s),(my_OP_GS));
+ (my_as_modrm)(((my_c)->my_s),(my_OP_LOAD),(my_R_RAX),(my_R_RSI),(0UL),(0UL),(0UL));
+ (my_as_opr)(((my_c)->my_s),(my_OP_PUSHR),(my_R_RAX));
+ (my_emit_ret)(((my_c)->my_s));
}
(my_d)=((my_find)((my_c),((unsigned char *)"_r32"),((unsigned char*)0UL),(1UL)));
if ((unsigned long)(((my_d)->my_func_defined)&&((unsigned long)(!(((my_d)->my_func_label)->my_fixed))))) {
- (my_fixup_label)(((my_c)->my_as),((my_d)->my_func_label));
- (my_add_symbol)(((my_c)->my_as),((my_d)->my_name),((my_d)->my_func_label));
- (my_emit_preamble)(((my_c)->my_as),(0UL),(0UL));
- (my_as_modrm)(((my_c)->my_as),(my_OP_LOAD),(my_R_RSI),(my_R_RBP),(0UL),(0UL),(16UL));
- (((my_c)->my_as)->my_bits32)=(1UL);
- (my_as_modrm)(((my_c)->my_as),(my_OP_LOAD),(my_R_RAX),(my_R_RSI),(0UL),(0UL),(0UL));
- (((my_c)->my_as)->my_bits32)=(0UL);
- (my_as_opr)(((my_c)->my_as),(my_OP_PUSHR),(my_R_RAX));
- (my_emit_ret)(((my_c)->my_as));
+ (my_fixup_label)(((my_c)->my_s),((my_d)->my_func_label));
+ (my_add_symbol)(((my_c)->my_s),((my_d)->my_name),((my_d)->my_func_label));
+ (my_emit_preamble)(((my_c)->my_s),(0UL),(0UL));
+ (my_as_modrm)(((my_c)->my_s),(my_OP_LOAD),(my_R_RSI),(my_R_RBP),(0UL),(0UL),(16UL));
+ (((my_c)->my_s)->my_bits32)=(1UL);
+ (my_as_modrm)(((my_c)->my_s),(my_OP_LOAD),(my_R_RAX),(my_R_RSI),(0UL),(0UL),(0UL));
+ (((my_c)->my_s)->my_bits32)=(0UL);
+ (my_as_opr)(((my_c)->my_s),(my_OP_PUSHR),(my_R_RAX));
+ (my_emit_ret)(((my_c)->my_s));
}
(my_d)=((my_find)((my_c),((unsigned char *)"_w32"),((unsigned char*)0UL),(1UL)));
if ((unsigned long)(((my_d)->my_func_defined)&&((unsigned long)(!(((my_d)->my_func_label)->my_fixed))))) {
- (my_fixup_label)(((my_c)->my_as),((my_d)->my_func_label));
- (my_add_symbol)(((my_c)->my_as),((my_d)->my_name),((my_d)->my_func_label));
- (my_emit_preamble)(((my_c)->my_as),(0UL),(0UL));
- (my_as_modrm)(((my_c)->my_as),(my_OP_LOAD),(my_R_RDI),(my_R_RBP),(0UL),(0UL),(16UL));
- (my_as_modrm)(((my_c)->my_as),(my_OP_LOAD),(my_R_RAX),(my_R_RBP),(0UL),(0UL),(24UL));
- (((my_c)->my_as)->my_bits32)=(1UL);
- (my_as_modrm)(((my_c)->my_as),(my_OP_STORE),(my_R_RAX),(my_R_RDI),(0UL),(0UL),(0UL));
- (((my_c)->my_as)->my_bits32)=(0UL);
- (my_as_opr)(((my_c)->my_as),(my_OP_PUSHR),(my_R_RAX));
- (my_emit_ret)(((my_c)->my_as));
+ (my_fixup_label)(((my_c)->my_s),((my_d)->my_func_label));
+ (my_add_symbol)(((my_c)->my_s),((my_d)->my_name),((my_d)->my_func_label));
+ (my_emit_preamble)(((my_c)->my_s),(0UL),(0UL));
+ (my_as_modrm)(((my_c)->my_s),(my_OP_LOAD),(my_R_RDI),(my_R_RBP),(0UL),(0UL),(16UL));
+ (my_as_modrm)(((my_c)->my_s),(my_OP_LOAD),(my_R_RAX),(my_R_RBP),(0UL),(0UL),(24UL));
+ (((my_c)->my_s)->my_bits32)=(1UL);
+ (my_as_modrm)(((my_c)->my_s),(my_OP_STORE),(my_R_RAX),(my_R_RDI),(0UL),(0UL),(0UL));
+ (((my_c)->my_s)->my_bits32)=(0UL);
+ (my_as_opr)(((my_c)->my_s),(my_OP_PUSHR),(my_R_RAX));
+ (my_emit_ret)(((my_c)->my_s));
}
(my_d)=((my_find)((my_c),((unsigned char *)"_r16"),((unsigned char*)0UL),(1UL)));
if ((unsigned long)(((my_d)->my_func_defined)&&((unsigned long)(!(((my_d)->my_func_label)->my_fixed))))) {
- (my_fixup_label)(((my_c)->my_as),((my_d)->my_func_label));
- (my_add_symbol)(((my_c)->my_as),((my_d)->my_name),((my_d)->my_func_label));
- (my_emit_preamble)(((my_c)->my_as),(0UL),(0UL));
- (my_as_modrm)(((my_c)->my_as),(my_OP_LOAD),(my_R_RSI),(my_R_RBP),(0UL),(0UL),(16UL));
- (my_as_modrr)(((my_c)->my_as),(my_OP_XORRM),(my_R_RAX),(my_R_RAX));
- (((my_c)->my_as)->my_bits32)=(1UL);
- (my_as_modrm)(((my_c)->my_as),(my_OP_LOAD16),(my_R_RAX),(my_R_RDI),(0UL),(0UL),(0UL));
- (((my_c)->my_as)->my_bits32)=(0UL);
- (my_as_opr)(((my_c)->my_as),(my_OP_PUSHR),(my_R_RAX));
- (my_emit_ret)(((my_c)->my_as));
+ (my_fixup_label)(((my_c)->my_s),((my_d)->my_func_label));
+ (my_add_symbol)(((my_c)->my_s),((my_d)->my_name),((my_d)->my_func_label));
+ (my_emit_preamble)(((my_c)->my_s),(0UL),(0UL));
+ (my_as_modrm)(((my_c)->my_s),(my_OP_LOAD),(my_R_RSI),(my_R_RBP),(0UL),(0UL),(16UL));
+ (my_as_modrr)(((my_c)->my_s),(my_OP_XORRM),(my_R_RAX),(my_R_RAX));
+ (((my_c)->my_s)->my_bits32)=(1UL);
+ (my_as_modrm)(((my_c)->my_s),(my_OP_LOAD16),(my_R_RAX),(my_R_RDI),(0UL),(0UL),(0UL));
+ (((my_c)->my_s)->my_bits32)=(0UL);
+ (my_as_opr)(((my_c)->my_s),(my_OP_PUSHR),(my_R_RAX));
+ (my_emit_ret)(((my_c)->my_s));
}
(my_d)=((my_find)((my_c),((unsigned char *)"_w16"),((unsigned char*)0UL),(1UL)));
if ((unsigned long)(((my_d)->my_func_defined)&&((unsigned long)(!(((my_d)->my_func_label)->my_fixed))))) {
- (my_fixup_label)(((my_c)->my_as),((my_d)->my_func_label));
- (my_add_symbol)(((my_c)->my_as),((my_d)->my_name),((my_d)->my_func_label));
- (my_emit_preamble)(((my_c)->my_as),(0UL),(0UL));
- (my_as_modrm)(((my_c)->my_as),(my_OP_LOAD),(my_R_RDI),(my_R_RBP),(0UL),(0UL),(16UL));
- (my_as_modrm)(((my_c)->my_as),(my_OP_LOAD),(my_R_RAX),(my_R_RBP),(0UL),(0UL),(24UL));
- (((my_c)->my_as)->my_bits32)=(1UL);
- (my_as_modrm)(((my_c)->my_as),(my_OP_STORE16),(my_R_RAX),(my_R_RDI),(0UL),(0UL),(0UL));
- (((my_c)->my_as)->my_bits32)=(0UL);
- (my_as_opr)(((my_c)->my_as),(my_OP_PUSHR),(my_R_RAX));
- (my_emit_ret)(((my_c)->my_as));
+ (my_fixup_label)(((my_c)->my_s),((my_d)->my_func_label));
+ (my_add_symbol)(((my_c)->my_s),((my_d)->my_name),((my_d)->my_func_label));
+ (my_emit_preamble)(((my_c)->my_s),(0UL),(0UL));
+ (my_as_modrm)(((my_c)->my_s),(my_OP_LOAD),(my_R_RDI),(my_R_RBP),(0UL),(0UL),(16UL));
+ (my_as_modrm)(((my_c)->my_s),(my_OP_LOAD),(my_R_RAX),(my_R_RBP),(0UL),(0UL),(24UL));
+ (((my_c)->my_s)->my_bits32)=(1UL);
+ (my_as_modrm)(((my_c)->my_s),(my_OP_STORE16),(my_R_RAX),(my_R_RDI),(0UL),(0UL),(0UL));
+ (((my_c)->my_s)->my_bits32)=(0UL);
+ (my_as_opr)(((my_c)->my_s),(my_OP_PUSHR),(my_R_RAX));
+ (my_emit_ret)(((my_c)->my_s));
}
(my_d)=((my_find)((my_c),((unsigned char *)"_rdrand"),((unsigned char*)0UL),(1UL)));
if ((unsigned long)(((my_d)->my_func_defined)&&((unsigned long)(!(((my_d)->my_func_label)->my_fixed))))) {
- (my_fixup_label)(((my_c)->my_as),((my_d)->my_func_label));
- (my_add_symbol)(((my_c)->my_as),((my_d)->my_name),((my_d)->my_func_label));
- (my_emit_preamble)(((my_c)->my_as),(0UL),(0UL));
- (my_as_modr)(((my_c)->my_as),(my_OP_RDRAND),(my_R_RAX));
- (my_as_opr)(((my_c)->my_as),(my_OP_PUSHR),(my_R_RAX));
- (my_emit_ret)(((my_c)->my_as));
+ (my_fixup_label)(((my_c)->my_s),((my_d)->my_func_label));
+ (my_add_symbol)(((my_c)->my_s),((my_d)->my_name),((my_d)->my_func_label));
+ (my_emit_preamble)(((my_c)->my_s),(0UL),(0UL));
+ (my_as_modr)(((my_c)->my_s),(my_OP_RDRAND),(my_R_RAX));
+ (my_as_opr)(((my_c)->my_s),(my_OP_PUSHR),(my_R_RAX));
+ (my_emit_ret)(((my_c)->my_s));
}
(my_d)=((my_find)((my_c),((unsigned char *)"taskswitch"),((unsigned char*)0UL),(1UL)));
if ((unsigned long)(((my_d)->my_func_defined)&&((unsigned long)(!(((my_d)->my_func_label)->my_fixed))))) {
- (my_fixup_label)(((my_c)->my_as),((my_d)->my_func_label));
- (my_add_symbol)(((my_c)->my_as),((my_d)->my_name),((my_d)->my_func_label));
- (my_as_opr)(((my_c)->my_as),(my_OP_PUSHR),(my_R_RBP));
- (my_as_op)(((my_c)->my_as),(my_OP_PUSHF));
- (my_as_modrm)(((my_c)->my_as),(my_OP_LOAD),(my_R_RBP),(my_R_RSP),(0UL),(0UL),(24UL));
- (my_as_modrm)(((my_c)->my_as),(my_OP_STORE),(my_R_RAX),(my_R_RBP),(0UL),(0UL),(0UL));
- (my_as_modrm)(((my_c)->my_as),(my_OP_STORE),(my_R_RCX),(my_R_RBP),(0UL),(0UL),(8UL));
- (my_as_modrm)(((my_c)->my_as),(my_OP_STORE),(my_R_RDX),(my_R_RBP),(0UL),(0UL),(16UL));
- (my_as_modrm)(((my_c)->my_as),(my_OP_STORE),(my_R_RBX),(my_R_RBP),(0UL),(0UL),(24UL));
- (my_as_modrm)(((my_c)->my_as),(my_OP_LEA),(my_R_RAX),(my_R_RSP),(0UL),(0UL),(24UL));
- (my_as_modrm)(((my_c)->my_as),(my_OP_STORE),(my_R_RAX),(my_R_RBP),(0UL),(0UL),(32UL));
- (my_as_modrm)(((my_c)->my_as),(my_OP_LOAD),(my_R_RAX),(my_R_RSP),(0UL),(0UL),(8UL));
- (my_as_modrm)(((my_c)->my_as),(my_OP_STORE),(my_R_RAX),(my_R_RBP),(0UL),(0UL),(40UL));
- (my_as_modrm)(((my_c)->my_as),(my_OP_STORE),(my_R_RSI),(my_R_RBP),(0UL),(0UL),(48UL));
- (my_as_modrm)(((my_c)->my_as),(my_OP_STORE),(my_R_RDI),(my_R_RBP),(0UL),(0UL),(56UL));
- (my_as_modrm)(((my_c)->my_as),(my_OP_STORE),(my_R_R8),(my_R_RBP),(0UL),(0UL),(64UL));
- (my_as_modrm)(((my_c)->my_as),(my_OP_STORE),(my_R_R9),(my_R_RBP),(0UL),(0UL),(72UL));
- (my_as_modrm)(((my_c)->my_as),(my_OP_STORE),(my_R_R10),(my_R_RBP),(0UL),(0UL),(80UL));
- (my_as_modrm)(((my_c)->my_as),(my_OP_STORE),(my_R_R11),(my_R_RBP),(0UL),(0UL),(88UL));
- (my_as_modrm)(((my_c)->my_as),(my_OP_STORE),(my_R_R12),(my_R_RBP),(0UL),(0UL),(96UL));
- (my_as_modrm)(((my_c)->my_as),(my_OP_STORE),(my_R_R13),(my_R_RBP),(0UL),(0UL),(104UL));
- (my_as_modrm)(((my_c)->my_as),(my_OP_STORE),(my_R_R14),(my_R_RBP),(0UL),(0UL),(112UL));
- (my_as_modrm)(((my_c)->my_as),(my_OP_STORE),(my_R_R15),(my_R_RBP),(0UL),(0UL),(120UL));
- (my_as_modrm)(((my_c)->my_as),(my_OP_LOAD),(my_R_RAX),(my_R_RSP),(0UL),(0UL),(16UL));
- (my_as_modrm)(((my_c)->my_as),(my_OP_STORE),(my_R_RAX),(my_R_RBP),(0UL),(0UL),(128UL));
- (my_as_modrm)(((my_c)->my_as),(my_OP_LOAD),(my_R_RAX),(my_R_RSP),(0UL),(0UL),(0UL));
- (my_as_modrm)(((my_c)->my_as),(my_OP_STORE),(my_R_RAX),(my_R_RBP),(0UL),(0UL),(136UL));
- (my_as_modrr)(((my_c)->my_as),(my_OP_RDSR),(my_R_CS),(my_R_RAX));
- (my_as_modrm)(((my_c)->my_as),(my_OP_STORE),(my_R_RAX),(my_R_RBP),(0UL),(0UL),(144UL));
- (my_as_modrr)(((my_c)->my_as),(my_OP_RDSR),(my_R_SS),(my_R_RAX));
- (my_as_modrm)(((my_c)->my_as),(my_OP_STORE),(my_R_RAX),(my_R_RBP),(0UL),(0UL),(152UL));
- (my_as_modrm)(((my_c)->my_as),(my_OP_LOAD),(my_R_RBP),(my_R_RSP),(0UL),(0UL),(32UL));
- (my_as_modrm)(((my_c)->my_as),(my_OP_LOAD),(my_R_RCX),(my_R_RBP),(0UL),(0UL),(8UL));
- (my_as_modrm)(((my_c)->my_as),(my_OP_LOAD),(my_R_RDX),(my_R_RBP),(0UL),(0UL),(16UL));
- (my_as_modrm)(((my_c)->my_as),(my_OP_LOAD),(my_R_RBX),(my_R_RBP),(0UL),(0UL),(24UL));
- (my_as_modrm)(((my_c)->my_as),(my_OP_LOAD),(my_R_RSI),(my_R_RBP),(0UL),(0UL),(48UL));
- (my_as_modrm)(((my_c)->my_as),(my_OP_LOAD),(my_R_RDI),(my_R_RBP),(0UL),(0UL),(56UL));
- (my_as_modrm)(((my_c)->my_as),(my_OP_LOAD),(my_R_R8),(my_R_RBP),(0UL),(0UL),(64UL));
- (my_as_modrm)(((my_c)->my_as),(my_OP_LOAD),(my_R_R9),(my_R_RBP),(0UL),(0UL),(72UL));
- (my_as_modrm)(((my_c)->my_as),(my_OP_LOAD),(my_R_R10),(my_R_RBP),(0UL),(0UL),(80UL));
- (my_as_modrm)(((my_c)->my_as),(my_OP_LOAD),(my_R_R11),(my_R_RBP),(0UL),(0UL),(88UL));
- (my_as_modrm)(((my_c)->my_as),(my_OP_LOAD),(my_R_R12),(my_R_RBP),(0UL),(0UL),(96UL));
- (my_as_modrm)(((my_c)->my_as),(my_OP_LOAD),(my_R_R13),(my_R_RBP),(0UL),(0UL),(104UL));
- (my_as_modrm)(((my_c)->my_as),(my_OP_LOAD),(my_R_R14),(my_R_RBP),(0UL),(0UL),(112UL));
- (my_as_modrm)(((my_c)->my_as),(my_OP_LOAD),(my_R_R15),(my_R_RBP),(0UL),(0UL),(120UL));
- (my_as_modrm)(((my_c)->my_as),(my_OP_LOAD),(my_R_RAX),(my_R_RBP),(0UL),(0UL),(152UL));
- (my_as_opr)(((my_c)->my_as),(my_OP_PUSHR),(my_R_RAX));
- (my_as_modrm)(((my_c)->my_as),(my_OP_LOAD),(my_R_RAX),(my_R_RBP),(0UL),(0UL),(32UL));
- (my_as_opr)(((my_c)->my_as),(my_OP_PUSHR),(my_R_RAX));
- (my_as_modrm)(((my_c)->my_as),(my_OP_LOAD),(my_R_RAX),(my_R_RBP),(0UL),(0UL),(136UL));
- (my_as_opr)(((my_c)->my_as),(my_OP_PUSHR),(my_R_RAX));
- (my_as_modrm)(((my_c)->my_as),(my_OP_LOAD),(my_R_RAX),(my_R_RBP),(0UL),(0UL),(144UL));
- (my_as_opr)(((my_c)->my_as),(my_OP_PUSHR),(my_R_RAX));
- (my_as_modrm)(((my_c)->my_as),(my_OP_LOAD),(my_R_RAX),(my_R_RBP),(0UL),(0UL),(128UL));
- (my_as_opr)(((my_c)->my_as),(my_OP_PUSHR),(my_R_RAX));
- (my_as_modrm)(((my_c)->my_as),(my_OP_LOAD),(my_R_RAX),(my_R_RBP),(0UL),(0UL),(0UL));
- (my_as_modrm)(((my_c)->my_as),(my_OP_LOAD),(my_R_RBP),(my_R_RBP),(0UL),(0UL),(40UL));
- (my_as_op)(((my_c)->my_as),(my_OP_IRETQ));
+ (my_fixup_label)(((my_c)->my_s),((my_d)->my_func_label));
+ (my_add_symbol)(((my_c)->my_s),((my_d)->my_name),((my_d)->my_func_label));
+ (my_as_opr)(((my_c)->my_s),(my_OP_PUSHR),(my_R_RBP));
+ (my_as_op)(((my_c)->my_s),(my_OP_PUSHF));
+ (my_as_modrm)(((my_c)->my_s),(my_OP_LOAD),(my_R_RBP),(my_R_RSP),(0UL),(0UL),(24UL));
+ (my_as_modrm)(((my_c)->my_s),(my_OP_STORE),(my_R_RAX),(my_R_RBP),(0UL),(0UL),(0UL));
+ (my_as_modrm)(((my_c)->my_s),(my_OP_STORE),(my_R_RCX),(my_R_RBP),(0UL),(0UL),(8UL));
+ (my_as_modrm)(((my_c)->my_s),(my_OP_STORE),(my_R_RDX),(my_R_RBP),(0UL),(0UL),(16UL));
+ (my_as_modrm)(((my_c)->my_s),(my_OP_STORE),(my_R_RBX),(my_R_RBP),(0UL),(0UL),(24UL));
+ (my_as_modrm)(((my_c)->my_s),(my_OP_LEA),(my_R_RAX),(my_R_RSP),(0UL),(0UL),(24UL));
+ (my_as_modrm)(((my_c)->my_s),(my_OP_STORE),(my_R_RAX),(my_R_RBP),(0UL),(0UL),(32UL));
+ (my_as_modrm)(((my_c)->my_s),(my_OP_LOAD),(my_R_RAX),(my_R_RSP),(0UL),(0UL),(8UL));
+ (my_as_modrm)(((my_c)->my_s),(my_OP_STORE),(my_R_RAX),(my_R_RBP),(0UL),(0UL),(40UL));
+ (my_as_modrm)(((my_c)->my_s),(my_OP_STORE),(my_R_RSI),(my_R_RBP),(0UL),(0UL),(48UL));
+ (my_as_modrm)(((my_c)->my_s),(my_OP_STORE),(my_R_RDI),(my_R_RBP),(0UL),(0UL),(56UL));
+ (my_as_modrm)(((my_c)->my_s),(my_OP_STORE),(my_R_R8),(my_R_RBP),(0UL),(0UL),(64UL));
+ (my_as_modrm)(((my_c)->my_s),(my_OP_STORE),(my_R_R9),(my_R_RBP),(0UL),(0UL),(72UL));
+ (my_as_modrm)(((my_c)->my_s),(my_OP_STORE),(my_R_R10),(my_R_RBP),(0UL),(0UL),(80UL));
+ (my_as_modrm)(((my_c)->my_s),(my_OP_STORE),(my_R_R11),(my_R_RBP),(0UL),(0UL),(88UL));
+ (my_as_modrm)(((my_c)->my_s),(my_OP_STORE),(my_R_R12),(my_R_RBP),(0UL),(0UL),(96UL));
+ (my_as_modrm)(((my_c)->my_s),(my_OP_STORE),(my_R_R13),(my_R_RBP),(0UL),(0UL),(104UL));
+ (my_as_modrm)(((my_c)->my_s),(my_OP_STORE),(my_R_R14),(my_R_RBP),(0UL),(0UL),(112UL));
+ (my_as_modrm)(((my_c)->my_s),(my_OP_STORE),(my_R_R15),(my_R_RBP),(0UL),(0UL),(120UL));
+ (my_as_modrm)(((my_c)->my_s),(my_OP_LOAD),(my_R_RAX),(my_R_RSP),(0UL),(0UL),(16UL));
+ (my_as_modrm)(((my_c)->my_s),(my_OP_STORE),(my_R_RAX),(my_R_RBP),(0UL),(0UL),(128UL));
+ (my_as_modrm)(((my_c)->my_s),(my_OP_LOAD),(my_R_RAX),(my_R_RSP),(0UL),(0UL),(0UL));
+ (my_as_modrm)(((my_c)->my_s),(my_OP_STORE),(my_R_RAX),(my_R_RBP),(0UL),(0UL),(136UL));
+ (my_as_modrr)(((my_c)->my_s),(my_OP_RDSR),(my_R_CS),(my_R_RAX));
+ (my_as_modrm)(((my_c)->my_s),(my_OP_STORE),(my_R_RAX),(my_R_RBP),(0UL),(0UL),(144UL));
+ (my_as_modrr)(((my_c)->my_s),(my_OP_RDSR),(my_R_SS),(my_R_RAX));
+ (my_as_modrm)(((my_c)->my_s),(my_OP_STORE),(my_R_RAX),(my_R_RBP),(0UL),(0UL),(152UL));
+ (my_as_modrm)(((my_c)->my_s),(my_OP_LOAD),(my_R_RBP),(my_R_RSP),(0UL),(0UL),(32UL));
+ (my_as_modrm)(((my_c)->my_s),(my_OP_LOAD),(my_R_RCX),(my_R_RBP),(0UL),(0UL),(8UL));
+ (my_as_modrm)(((my_c)->my_s),(my_OP_LOAD),(my_R_RDX),(my_R_RBP),(0UL),(0UL),(16UL));
+ (my_as_modrm)(((my_c)->my_s),(my_OP_LOAD),(my_R_RBX),(my_R_RBP),(0UL),(0UL),(24UL));
+ (my_as_modrm)(((my_c)->my_s),(my_OP_LOAD),(my_R_RSI),(my_R_RBP),(0UL),(0UL),(48UL));
+ (my_as_modrm)(((my_c)->my_s),(my_OP_LOAD),(my_R_RDI),(my_R_RBP),(0UL),(0UL),(56UL));
+ (my_as_modrm)(((my_c)->my_s),(my_OP_LOAD),(my_R_R8),(my_R_RBP),(0UL),(0UL),(64UL));
+ (my_as_modrm)(((my_c)->my_s),(my_OP_LOAD),(my_R_R9),(my_R_RBP),(0UL),(0UL),(72UL));
+ (my_as_modrm)(((my_c)->my_s),(my_OP_LOAD),(my_R_R10),(my_R_RBP),(0UL),(0UL),(80UL));
+ (my_as_modrm)(((my_c)->my_s),(my_OP_LOAD),(my_R_R11),(my_R_RBP),(0UL),(0UL),(88UL));
+ (my_as_modrm)(((my_c)->my_s),(my_OP_LOAD),(my_R_R12),(my_R_RBP),(0UL),(0UL),(96UL));
+ (my_as_modrm)(((my_c)->my_s),(my_OP_LOAD),(my_R_R13),(my_R_RBP),(0UL),(0UL),(104UL));
+ (my_as_modrm)(((my_c)->my_s),(my_OP_LOAD),(my_R_R14),(my_R_RBP),(0UL),(0UL),(112UL));
+ (my_as_modrm)(((my_c)->my_s),(my_OP_LOAD),(my_R_R15),(my_R_RBP),(0UL),(0UL),(120UL));
+ (my_as_modrm)(((my_c)->my_s),(my_OP_LOAD),(my_R_RAX),(my_R_RBP),(0UL),(0UL),(152UL));
+ (my_as_opr)(((my_c)->my_s),(my_OP_PUSHR),(my_R_RAX));
+ (my_as_modrm)(((my_c)->my_s),(my_OP_LOAD),(my_R_RAX),(my_R_RBP),(0UL),(0UL),(32UL));
+ (my_as_opr)(((my_c)->my_s),(my_OP_PUSHR),(my_R_RAX));
+ (my_as_modrm)(((my_c)->my_s),(my_OP_LOAD),(my_R_RAX),(my_R_RBP),(0UL),(0UL),(136UL));
+ (my_as_opr)(((my_c)->my_s),(my_OP_PUSHR),(my_R_RAX));
+ (my_as_modrm)(((my_c)->my_s),(my_OP_LOAD),(my_R_RAX),(my_R_RBP),(0UL),(0UL),(144UL));
+ (my_as_opr)(((my_c)->my_s),(my_OP_PUSHR),(my_R_RAX));
+ (my_as_modrm)(((my_c)->my_s),(my_OP_LOAD),(my_R_RAX),(my_R_RBP),(0UL),(0UL),(128UL));
+ (my_as_opr)(((my_c)->my_s),(my_OP_PUSHR),(my_R_RAX));
+ (my_as_modrm)(((my_c)->my_s),(my_OP_LOAD),(my_R_RAX),(my_R_RBP),(0UL),(0UL),(0UL));
+ (my_as_modrm)(((my_c)->my_s),(my_OP_LOAD),(my_R_RBP),(my_R_RBP),(0UL),(0UL),(40UL));
+ (my_as_op)(((my_c)->my_s),(my_OP_IRETQ));
}
}
void( my_emit_call)(struct my_assembler* my_c,unsigned long my_n){
@@ -3535,101 +3544,101 @@ void( my_emit_isr)(struct my_compiler* my_c){
struct my_decl* my_d = 0;
struct my_label* my_out = 0;
unsigned long my_i = 0;
- (my_out)=((my_mklabel)(((my_c)->my_as)));
+ (my_out)=((my_mklabel)(((my_c)->my_s)));
(my_i)=(0UL);
while (1) {
if ((unsigned long)(((long)(my_i))==((long)(256UL)))) {
break;
}
- (my_reserve)(((my_c)->my_as),(16UL));
+ (my_reserve)(((my_c)->my_s),(16UL));
if ((unsigned long)(((unsigned long)(((long)(my_i))==((long)(8UL))))||((unsigned long)(((unsigned long)(((long)(my_i))==((long)(10UL))))||((unsigned long)(((unsigned long)(((long)(my_i))==((long)(11UL))))||((unsigned long)(((unsigned long)(((long)(my_i))==((long)(12UL))))||((unsigned long)(((unsigned long)(((long)(my_i))==((long)(13UL))))||((unsigned long)(((unsigned long)(((long)(my_i))==((long)(14UL))))||((unsigned long)(((unsigned long)(((long)(my_i))==((long)(17UL))))||((unsigned long)(((unsigned long)(((long)(my_i))==((long)(21UL))))||((unsigned long)(((unsigned long)(((long)(my_i))==((long)(29UL))))||((unsigned long)(((long)(my_i))==((long)(30UL)))))))))))))))))))))) {
- (my_as_emit)(((my_c)->my_as),(144UL));
- (my_as_emit)(((my_c)->my_as),(144UL));
- } else {
- (my_as_emit)(((my_c)->my_as),(106UL));
- (my_as_emit)(((my_c)->my_as),(0UL));
- }
- (my_as_emit)(((my_c)->my_as),(104UL));
- (my_as_emit)(((my_c)->my_as),(my_i));
- (my_as_emit)(((my_c)->my_as),(0UL));
- (my_as_emit)(((my_c)->my_as),(0UL));
- (my_as_emit)(((my_c)->my_as),(0UL));
- (my_as_emit)(((my_c)->my_as),(233UL));
- (my_as_emit)(((my_c)->my_as),(0UL));
- (my_as_emit)(((my_c)->my_as),(0UL));
- (my_as_emit)(((my_c)->my_as),(0UL));
- (my_as_emit)(((my_c)->my_as),(0UL));
- (my_addfixup)(((my_c)->my_as),(my_out));
- (my_as_emit)(((my_c)->my_as),(144UL));
- (my_as_emit)(((my_c)->my_as),(144UL));
- (my_as_emit)(((my_c)->my_as),(144UL));
- (my_as_emit)(((my_c)->my_as),(144UL));
+ (my_as_emit)(((my_c)->my_s),(144UL));
+ (my_as_emit)(((my_c)->my_s),(144UL));
+ } else {
+ (my_as_emit)(((my_c)->my_s),(106UL));
+ (my_as_emit)(((my_c)->my_s),(0UL));
+ }
+ (my_as_emit)(((my_c)->my_s),(104UL));
+ (my_as_emit)(((my_c)->my_s),(my_i));
+ (my_as_emit)(((my_c)->my_s),(0UL));
+ (my_as_emit)(((my_c)->my_s),(0UL));
+ (my_as_emit)(((my_c)->my_s),(0UL));
+ (my_as_emit)(((my_c)->my_s),(233UL));
+ (my_as_emit)(((my_c)->my_s),(0UL));
+ (my_as_emit)(((my_c)->my_s),(0UL));
+ (my_as_emit)(((my_c)->my_s),(0UL));
+ (my_as_emit)(((my_c)->my_s),(0UL));
+ (my_addfixup)(((my_c)->my_s),(my_out));
+ (my_as_emit)(((my_c)->my_s),(144UL));
+ (my_as_emit)(((my_c)->my_s),(144UL));
+ (my_as_emit)(((my_c)->my_s),(144UL));
+ (my_as_emit)(((my_c)->my_s),(144UL));
(my_i)=((unsigned long)(((unsigned long)(my_i))+((unsigned long)(1UL))));
}
- (my_fixup_label)(((my_c)->my_as),(my_out));
- (my_as_modri)(((my_c)->my_as),(my_OP_SUBI),(my_R_RSP),(176UL));
- (my_as_modrm)(((my_c)->my_as),(my_OP_STORE),(my_R_RBP),(my_R_RSP),(0UL),(0UL),(40UL));
- (my_as_modrr)(((my_c)->my_as),(my_OP_MOVE),(my_R_RBP),(my_R_RSP));
- (my_as_opr)(((my_c)->my_as),(my_OP_PUSHR),(my_R_RBP));
- (my_as_modrm)(((my_c)->my_as),(my_OP_STORE),(my_R_RAX),(my_R_RBP),(0UL),(0UL),(0UL));
- (my_as_modrm)(((my_c)->my_as),(my_OP_STORE),(my_R_RCX),(my_R_RBP),(0UL),(0UL),(8UL));
- (my_as_modrm)(((my_c)->my_as),(my_OP_STORE),(my_R_RDX),(my_R_RBP),(0UL),(0UL),(16UL));
- (my_as_modrm)(((my_c)->my_as),(my_OP_STORE),(my_R_RBX),(my_R_RBP),(0UL),(0UL),(24UL));
- (my_as_modrm)(((my_c)->my_as),(my_OP_STORE),(my_R_RSI),(my_R_RBP),(0UL),(0UL),(48UL));
- (my_as_modrm)(((my_c)->my_as),(my_OP_STORE),(my_R_RDI),(my_R_RBP),(0UL),(0UL),(56UL));
- (my_as_modrm)(((my_c)->my_as),(my_OP_STORE),(my_R_R8),(my_R_RBP),(0UL),(0UL),(64UL));
- (my_as_modrm)(((my_c)->my_as),(my_OP_STORE),(my_R_R9),(my_R_RBP),(0UL),(0UL),(72UL));
- (my_as_modrm)(((my_c)->my_as),(my_OP_STORE),(my_R_R10),(my_R_RBP),(0UL),(0UL),(80UL));
- (my_as_modrm)(((my_c)->my_as),(my_OP_STORE),(my_R_R11),(my_R_RBP),(0UL),(0UL),(88UL));
- (my_as_modrm)(((my_c)->my_as),(my_OP_STORE),(my_R_R12),(my_R_RBP),(0UL),(0UL),(96UL));
- (my_as_modrm)(((my_c)->my_as),(my_OP_STORE),(my_R_R13),(my_R_RBP),(0UL),(0UL),(104UL));
- (my_as_modrm)(((my_c)->my_as),(my_OP_STORE),(my_R_R14),(my_R_RBP),(0UL),(0UL),(112UL));
- (my_as_modrm)(((my_c)->my_as),(my_OP_STORE),(my_R_R15),(my_R_RBP),(0UL),(0UL),(120UL));
- (my_as_modrm)(((my_c)->my_as),(my_OP_LOAD),(my_R_RAX),(my_R_RBP),(0UL),(0UL),((unsigned long)(((unsigned long)(176UL))+((unsigned long)(0UL)))));
- (my_as_modrm)(((my_c)->my_as),(my_OP_STORE),(my_R_RAX),(my_R_RBP),(0UL),(0UL),(160UL));
- (my_as_modrm)(((my_c)->my_as),(my_OP_LOAD),(my_R_RAX),(my_R_RBP),(0UL),(0UL),((unsigned long)(((unsigned long)(176UL))+((unsigned long)(8UL)))));
- (my_as_modrm)(((my_c)->my_as),(my_OP_STORE),(my_R_RAX),(my_R_RBP),(0UL),(0UL),(168UL));
- (my_as_modrm)(((my_c)->my_as),(my_OP_LOAD),(my_R_RAX),(my_R_RBP),(0UL),(0UL),((unsigned long)(((unsigned long)(176UL))+((unsigned long)(16UL)))));
- (my_as_modrm)(((my_c)->my_as),(my_OP_STORE),(my_R_RAX),(my_R_RBP),(0UL),(0UL),(128UL));
- (my_as_modrm)(((my_c)->my_as),(my_OP_LOAD),(my_R_RAX),(my_R_RBP),(0UL),(0UL),((unsigned long)(((unsigned long)(176UL))+((unsigned long)(24UL)))));
- (my_as_modrm)(((my_c)->my_as),(my_OP_STORE),(my_R_RAX),(my_R_RBP),(0UL),(0UL),(144UL));
- (my_as_modrm)(((my_c)->my_as),(my_OP_LOAD),(my_R_RAX),(my_R_RBP),(0UL),(0UL),((unsigned long)(((unsigned long)(176UL))+((unsigned long)(32UL)))));
- (my_as_modrm)(((my_c)->my_as),(my_OP_STORE),(my_R_RAX),(my_R_RBP),(0UL),(0UL),(136UL));
- (my_as_modrm)(((my_c)->my_as),(my_OP_LOAD),(my_R_RAX),(my_R_RBP),(0UL),(0UL),((unsigned long)(((unsigned long)(176UL))+((unsigned long)(40UL)))));
- (my_as_modrm)(((my_c)->my_as),(my_OP_STORE),(my_R_RAX),(my_R_RBP),(0UL),(0UL),(32UL));
- (my_as_modrm)(((my_c)->my_as),(my_OP_LOAD),(my_R_RAX),(my_R_RBP),(0UL),(0UL),((unsigned long)(((unsigned long)(176UL))+((unsigned long)(48UL)))));
- (my_as_modrm)(((my_c)->my_as),(my_OP_STORE),(my_R_RAX),(my_R_RBP),(0UL),(0UL),(152UL));
+ (my_fixup_label)(((my_c)->my_s),(my_out));
+ (my_as_modri)(((my_c)->my_s),(my_OP_SUBI),(my_R_RSP),(176UL));
+ (my_as_modrm)(((my_c)->my_s),(my_OP_STORE),(my_R_RBP),(my_R_RSP),(0UL),(0UL),(40UL));
+ (my_as_modrr)(((my_c)->my_s),(my_OP_MOVE),(my_R_RBP),(my_R_RSP));
+ (my_as_opr)(((my_c)->my_s),(my_OP_PUSHR),(my_R_RBP));
+ (my_as_modrm)(((my_c)->my_s),(my_OP_STORE),(my_R_RAX),(my_R_RBP),(0UL),(0UL),(0UL));
+ (my_as_modrm)(((my_c)->my_s),(my_OP_STORE),(my_R_RCX),(my_R_RBP),(0UL),(0UL),(8UL));
+ (my_as_modrm)(((my_c)->my_s),(my_OP_STORE),(my_R_RDX),(my_R_RBP),(0UL),(0UL),(16UL));
+ (my_as_modrm)(((my_c)->my_s),(my_OP_STORE),(my_R_RBX),(my_R_RBP),(0UL),(0UL),(24UL));
+ (my_as_modrm)(((my_c)->my_s),(my_OP_STORE),(my_R_RSI),(my_R_RBP),(0UL),(0UL),(48UL));
+ (my_as_modrm)(((my_c)->my_s),(my_OP_STORE),(my_R_RDI),(my_R_RBP),(0UL),(0UL),(56UL));
+ (my_as_modrm)(((my_c)->my_s),(my_OP_STORE),(my_R_R8),(my_R_RBP),(0UL),(0UL),(64UL));
+ (my_as_modrm)(((my_c)->my_s),(my_OP_STORE),(my_R_R9),(my_R_RBP),(0UL),(0UL),(72UL));
+ (my_as_modrm)(((my_c)->my_s),(my_OP_STORE),(my_R_R10),(my_R_RBP),(0UL),(0UL),(80UL));
+ (my_as_modrm)(((my_c)->my_s),(my_OP_STORE),(my_R_R11),(my_R_RBP),(0UL),(0UL),(88UL));
+ (my_as_modrm)(((my_c)->my_s),(my_OP_STORE),(my_R_R12),(my_R_RBP),(0UL),(0UL),(96UL));
+ (my_as_modrm)(((my_c)->my_s),(my_OP_STORE),(my_R_R13),(my_R_RBP),(0UL),(0UL),(104UL));
+ (my_as_modrm)(((my_c)->my_s),(my_OP_STORE),(my_R_R14),(my_R_RBP),(0UL),(0UL),(112UL));
+ (my_as_modrm)(((my_c)->my_s),(my_OP_STORE),(my_R_R15),(my_R_RBP),(0UL),(0UL),(120UL));
+ (my_as_modrm)(((my_c)->my_s),(my_OP_LOAD),(my_R_RAX),(my_R_RBP),(0UL),(0UL),((unsigned long)(((unsigned long)(176UL))+((unsigned long)(0UL)))));
+ (my_as_modrm)(((my_c)->my_s),(my_OP_STORE),(my_R_RAX),(my_R_RBP),(0UL),(0UL),(160UL));
+ (my_as_modrm)(((my_c)->my_s),(my_OP_LOAD),(my_R_RAX),(my_R_RBP),(0UL),(0UL),((unsigned long)(((unsigned long)(176UL))+((unsigned long)(8UL)))));
+ (my_as_modrm)(((my_c)->my_s),(my_OP_STORE),(my_R_RAX),(my_R_RBP),(0UL),(0UL),(168UL));
+ (my_as_modrm)(((my_c)->my_s),(my_OP_LOAD),(my_R_RAX),(my_R_RBP),(0UL),(0UL),((unsigned long)(((unsigned long)(176UL))+((unsigned long)(16UL)))));
+ (my_as_modrm)(((my_c)->my_s),(my_OP_STORE),(my_R_RAX),(my_R_RBP),(0UL),(0UL),(128UL));
+ (my_as_modrm)(((my_c)->my_s),(my_OP_LOAD),(my_R_RAX),(my_R_RBP),(0UL),(0UL),((unsigned long)(((unsigned long)(176UL))+((unsigned long)(24UL)))));
+ (my_as_modrm)(((my_c)->my_s),(my_OP_STORE),(my_R_RAX),(my_R_RBP),(0UL),(0UL),(144UL));
+ (my_as_modrm)(((my_c)->my_s),(my_OP_LOAD),(my_R_RAX),(my_R_RBP),(0UL),(0UL),((unsigned long)(((unsigned long)(176UL))+((unsigned long)(32UL)))));
+ (my_as_modrm)(((my_c)->my_s),(my_OP_STORE),(my_R_RAX),(my_R_RBP),(0UL),(0UL),(136UL));
+ (my_as_modrm)(((my_c)->my_s),(my_OP_LOAD),(my_R_RAX),(my_R_RBP),(0UL),(0UL),((unsigned long)(((unsigned long)(176UL))+((unsigned long)(40UL)))));
+ (my_as_modrm)(((my_c)->my_s),(my_OP_STORE),(my_R_RAX),(my_R_RBP),(0UL),(0UL),(32UL));
+ (my_as_modrm)(((my_c)->my_s),(my_OP_LOAD),(my_R_RAX),(my_R_RBP),(0UL),(0UL),((unsigned long)(((unsigned long)(176UL))+((unsigned long)(48UL)))));
+ (my_as_modrm)(((my_c)->my_s),(my_OP_STORE),(my_R_RAX),(my_R_RBP),(0UL),(0UL),(152UL));
(my_d)=((my_find)((my_c),((unsigned char *)"_isr"),((unsigned char*)0UL),(1UL)));
if ((unsigned long)(((my_d)->my_func_defined)&&(((my_d)->my_func_label)->my_fixed))) {
- (my_as_jmp)(((my_c)->my_as),(my_OP_CALL),((my_d)->my_func_label));
- }
- (my_as_modrm)(((my_c)->my_as),(my_OP_LOAD),(my_R_RAX),(my_R_RBP),(0UL),(0UL),(128UL));
- (my_as_modrm)(((my_c)->my_as),(my_OP_STORE),(my_R_RAX),(my_R_RBP),(0UL),(0UL),((unsigned long)(((unsigned long)(176UL))+((unsigned long)(16UL)))));
- (my_as_modrm)(((my_c)->my_as),(my_OP_LOAD),(my_R_RAX),(my_R_RBP),(0UL),(0UL),(144UL));
- (my_as_modrm)(((my_c)->my_as),(my_OP_STORE),(my_R_RAX),(my_R_RBP),(0UL),(0UL),((unsigned long)(((unsigned long)(176UL))+((unsigned long)(24UL)))));
- (my_as_modrm)(((my_c)->my_as),(my_OP_LOAD),(my_R_RAX),(my_R_RBP),(0UL),(0UL),(136UL));
- (my_as_modrm)(((my_c)->my_as),(my_OP_STORE),(my_R_RAX),(my_R_RBP),(0UL),(0UL),((unsigned long)(((unsigned long)(176UL))+((unsigned long)(32UL)))));
- (my_as_modrm)(((my_c)->my_as),(my_OP_LOAD),(my_R_RAX),(my_R_RBP),(0UL),(0UL),(32UL));
- (my_as_modrm)(((my_c)->my_as),(my_OP_STORE),(my_R_RAX),(my_R_RBP),(0UL),(0UL),((unsigned long)(((unsigned long)(176UL))+((unsigned long)(40UL)))));
- (my_as_modrm)(((my_c)->my_as),(my_OP_LOAD),(my_R_RAX),(my_R_RBP),(0UL),(0UL),(152UL));
- (my_as_modrm)(((my_c)->my_as),(my_OP_STORE),(my_R_RAX),(my_R_RBP),(0UL),(0UL),((unsigned long)(((unsigned long)(176UL))+((unsigned long)(48UL)))));
- (my_as_modrm)(((my_c)->my_as),(my_OP_LOAD),(my_R_RAX),(my_R_RBP),(0UL),(0UL),(0UL));
- (my_as_modrm)(((my_c)->my_as),(my_OP_LOAD),(my_R_RCX),(my_R_RBP),(0UL),(0UL),(8UL));
- (my_as_modrm)(((my_c)->my_as),(my_OP_LOAD),(my_R_RDX),(my_R_RBP),(0UL),(0UL),(16UL));
- (my_as_modrm)(((my_c)->my_as),(my_OP_LOAD),(my_R_RBX),(my_R_RBP),(0UL),(0UL),(24UL));
- (my_as_modrm)(((my_c)->my_as),(my_OP_LOAD),(my_R_RSI),(my_R_RBP),(0UL),(0UL),(48UL));
- (my_as_modrm)(((my_c)->my_as),(my_OP_LOAD),(my_R_RDI),(my_R_RBP),(0UL),(0UL),(56UL));
- (my_as_modrm)(((my_c)->my_as),(my_OP_LOAD),(my_R_R8),(my_R_RBP),(0UL),(0UL),(64UL));
- (my_as_modrm)(((my_c)->my_as),(my_OP_LOAD),(my_R_R9),(my_R_RBP),(0UL),(0UL),(72UL));
- (my_as_modrm)(((my_c)->my_as),(my_OP_LOAD),(my_R_R10),(my_R_RBP),(0UL),(0UL),(80UL));
- (my_as_modrm)(((my_c)->my_as),(my_OP_LOAD),(my_R_R11),(my_R_RBP),(0UL),(0UL),(88UL));
- (my_as_modrm)(((my_c)->my_as),(my_OP_LOAD),(my_R_R12),(my_R_RBP),(0UL),(0UL),(96UL));
- (my_as_modrm)(((my_c)->my_as),(my_OP_LOAD),(my_R_R13),(my_R_RBP),(0UL),(0UL),(104UL));
- (my_as_modrm)(((my_c)->my_as),(my_OP_LOAD),(my_R_R14),(my_R_RBP),(0UL),(0UL),(112UL));
- (my_as_modrm)(((my_c)->my_as),(my_OP_LOAD),(my_R_R15),(my_R_RBP),(0UL),(0UL),(120UL));
- (my_as_modrm)(((my_c)->my_as),(my_OP_LOAD),(my_R_RBP),(my_R_RBP),(0UL),(0UL),(40UL));
- (my_as_modri)(((my_c)->my_as),(my_OP_ADDI),(my_R_RSP),((unsigned long)(((unsigned long)(176UL))+((unsigned long)((unsigned long)(((long)(3UL))*((long)(8UL))))))));
- (my_as_op)(((my_c)->my_as),(my_OP_IRETQ));
+ (my_as_jmp)(((my_c)->my_s),(my_OP_CALL),((my_d)->my_func_label));
+ }
+ (my_as_modrm)(((my_c)->my_s),(my_OP_LOAD),(my_R_RAX),(my_R_RBP),(0UL),(0UL),(128UL));
+ (my_as_modrm)(((my_c)->my_s),(my_OP_STORE),(my_R_RAX),(my_R_RBP),(0UL),(0UL),((unsigned long)(((unsigned long)(176UL))+((unsigned long)(16UL)))));
+ (my_as_modrm)(((my_c)->my_s),(my_OP_LOAD),(my_R_RAX),(my_R_RBP),(0UL),(0UL),(144UL));
+ (my_as_modrm)(((my_c)->my_s),(my_OP_STORE),(my_R_RAX),(my_R_RBP),(0UL),(0UL),((unsigned long)(((unsigned long)(176UL))+((unsigned long)(24UL)))));
+ (my_as_modrm)(((my_c)->my_s),(my_OP_LOAD),(my_R_RAX),(my_R_RBP),(0UL),(0UL),(136UL));
+ (my_as_modrm)(((my_c)->my_s),(my_OP_STORE),(my_R_RAX),(my_R_RBP),(0UL),(0UL),((unsigned long)(((unsigned long)(176UL))+((unsigned long)(32UL)))));
+ (my_as_modrm)(((my_c)->my_s),(my_OP_LOAD),(my_R_RAX),(my_R_RBP),(0UL),(0UL),(32UL));
+ (my_as_modrm)(((my_c)->my_s),(my_OP_STORE),(my_R_RAX),(my_R_RBP),(0UL),(0UL),((unsigned long)(((unsigned long)(176UL))+((unsigned long)(40UL)))));
+ (my_as_modrm)(((my_c)->my_s),(my_OP_LOAD),(my_R_RAX),(my_R_RBP),(0UL),(0UL),(152UL));
+ (my_as_modrm)(((my_c)->my_s),(my_OP_STORE),(my_R_RAX),(my_R_RBP),(0UL),(0UL),((unsigned long)(((unsigned long)(176UL))+((unsigned long)(48UL)))));
+ (my_as_modrm)(((my_c)->my_s),(my_OP_LOAD),(my_R_RAX),(my_R_RBP),(0UL),(0UL),(0UL));
+ (my_as_modrm)(((my_c)->my_s),(my_OP_LOAD),(my_R_RCX),(my_R_RBP),(0UL),(0UL),(8UL));
+ (my_as_modrm)(((my_c)->my_s),(my_OP_LOAD),(my_R_RDX),(my_R_RBP),(0UL),(0UL),(16UL));
+ (my_as_modrm)(((my_c)->my_s),(my_OP_LOAD),(my_R_RBX),(my_R_RBP),(0UL),(0UL),(24UL));
+ (my_as_modrm)(((my_c)->my_s),(my_OP_LOAD),(my_R_RSI),(my_R_RBP),(0UL),(0UL),(48UL));
+ (my_as_modrm)(((my_c)->my_s),(my_OP_LOAD),(my_R_RDI),(my_R_RBP),(0UL),(0UL),(56UL));
+ (my_as_modrm)(((my_c)->my_s),(my_OP_LOAD),(my_R_R8),(my_R_RBP),(0UL),(0UL),(64UL));
+ (my_as_modrm)(((my_c)->my_s),(my_OP_LOAD),(my_R_R9),(my_R_RBP),(0UL),(0UL),(72UL));
+ (my_as_modrm)(((my_c)->my_s),(my_OP_LOAD),(my_R_R10),(my_R_RBP),(0UL),(0UL),(80UL));
+ (my_as_modrm)(((my_c)->my_s),(my_OP_LOAD),(my_R_R11),(my_R_RBP),(0UL),(0UL),(88UL));
+ (my_as_modrm)(((my_c)->my_s),(my_OP_LOAD),(my_R_R12),(my_R_RBP),(0UL),(0UL),(96UL));
+ (my_as_modrm)(((my_c)->my_s),(my_OP_LOAD),(my_R_R13),(my_R_RBP),(0UL),(0UL),(104UL));
+ (my_as_modrm)(((my_c)->my_s),(my_OP_LOAD),(my_R_R14),(my_R_RBP),(0UL),(0UL),(112UL));
+ (my_as_modrm)(((my_c)->my_s),(my_OP_LOAD),(my_R_R15),(my_R_RBP),(0UL),(0UL),(120UL));
+ (my_as_modrm)(((my_c)->my_s),(my_OP_LOAD),(my_R_RBP),(my_R_RBP),(0UL),(0UL),(40UL));
+ (my_as_modri)(((my_c)->my_s),(my_OP_ADDI),(my_R_RSP),((unsigned long)(((unsigned long)(176UL))+((unsigned long)((unsigned long)(((long)(3UL))*((long)(8UL))))))));
+ (my_as_op)(((my_c)->my_s),(my_OP_IRETQ));
}
void( my_emit_jmp)(struct my_assembler* my_c,struct my_label* my_l){
(my_as_jmp)((my_c),(my_OP_JMP),(my_l));
@@ -4065,81 +4074,81 @@ void( my_emit_ssr)(struct my_compiler* my_c){
if ((unsigned long)(((unsigned long)(!(my_v)))||((unsigned long)(!((my_v)->my_member_defined))))) {
(my_cdie)((my_c),((unsigned char *)"no _save"));
}
- (my_as_emit)(((my_c)->my_as),(my_OP_GS));
- (my_as_modra)(((my_c)->my_as),(my_OP_STORE),(my_R_RSP),((my_v)->my_member_offset));
+ (my_as_emit)(((my_c)->my_s),(my_OP_GS));
+ (my_as_modra)(((my_c)->my_s),(my_OP_STORE),(my_R_RSP),((my_v)->my_member_offset));
(my_v)=((my_find)((my_c),((unsigned char *)"global"),((unsigned char *)"curtask"),(0UL)));
if ((unsigned long)(((unsigned long)(!(my_v)))||((unsigned long)(!((my_v)->my_member_defined))))) {
(my_cdie)((my_c),((unsigned char *)"no global.curtask"));
}
- (my_as_emit)(((my_c)->my_as),(my_OP_GS));
- (my_as_modra)(((my_c)->my_as),(my_OP_LOAD),(my_R_RSP),((my_v)->my_member_offset));
+ (my_as_emit)(((my_c)->my_s),(my_OP_GS));
+ (my_as_modra)(((my_c)->my_s),(my_OP_LOAD),(my_R_RSP),((my_v)->my_member_offset));
(my_v)=((my_find)((my_c),((unsigned char *)"task"),((unsigned char *)"stack"),(0UL)));
if ((unsigned long)(((unsigned long)(!(my_v)))||((unsigned long)(!((my_v)->my_member_defined))))) {
(my_cdie)((my_c),((unsigned char *)"no task.stack"));
}
- (my_as_modrm)(((my_c)->my_as),(my_OP_LOAD),(my_R_RSP),(my_R_RSP),(0UL),(0UL),((my_v)->my_member_offset));
- (my_as_modri)(((my_c)->my_as),(my_OP_ADDI),(my_R_RSP),((unsigned long)(((unsigned long)(4096UL))-((unsigned long)(176UL)))));
- (my_as_modrm)(((my_c)->my_as),(my_OP_STORE),(my_R_RAX),(my_R_RSP),(0UL),(0UL),(0UL));
- (my_as_modrm)(((my_c)->my_as),(my_OP_STORE),(my_R_RDX),(my_R_RSP),(0UL),(0UL),(16UL));
- (my_as_modrm)(((my_c)->my_as),(my_OP_STORE),(my_R_RBX),(my_R_RSP),(0UL),(0UL),(24UL));
- (my_as_modrm)(((my_c)->my_as),(my_OP_STORE),(my_R_RBP),(my_R_RSP),(0UL),(0UL),(40UL));
- (my_as_modrm)(((my_c)->my_as),(my_OP_STORE),(my_R_RSI),(my_R_RSP),(0UL),(0UL),(48UL));
- (my_as_modrm)(((my_c)->my_as),(my_OP_STORE),(my_R_RDI),(my_R_RSP),(0UL),(0UL),(56UL));
- (my_as_modrm)(((my_c)->my_as),(my_OP_STORE),(my_R_R8),(my_R_RSP),(0UL),(0UL),(64UL));
- (my_as_modrm)(((my_c)->my_as),(my_OP_STORE),(my_R_R9),(my_R_RSP),(0UL),(0UL),(72UL));
- (my_as_modrm)(((my_c)->my_as),(my_OP_STORE),(my_R_R10),(my_R_RSP),(0UL),(0UL),(80UL));
- (my_as_modrm)(((my_c)->my_as),(my_OP_STORE),(my_R_R12),(my_R_RSP),(0UL),(0UL),(96UL));
- (my_as_modrm)(((my_c)->my_as),(my_OP_STORE),(my_R_R13),(my_R_RSP),(0UL),(0UL),(104UL));
- (my_as_modrm)(((my_c)->my_as),(my_OP_STORE),(my_R_R14),(my_R_RSP),(0UL),(0UL),(112UL));
- (my_as_modrm)(((my_c)->my_as),(my_OP_STORE),(my_R_R15),(my_R_RSP),(0UL),(0UL),(120UL));
- (my_as_modrm)(((my_c)->my_as),(my_OP_STORE),(my_R_RCX),(my_R_RSP),(0UL),(0UL),(128UL));
- (my_as_modrm)(((my_c)->my_as),(my_OP_STORE),(my_R_R11),(my_R_RSP),(0UL),(0UL),(136UL));
- (my_as_modrr)(((my_c)->my_as),(my_OP_XORRM),(my_R_RAX),(my_R_RAX));
- (my_as_modrm)(((my_c)->my_as),(my_OP_STORE),(my_R_RAX),(my_R_RSP),(0UL),(0UL),(8UL));
- (my_as_modrm)(((my_c)->my_as),(my_OP_STORE),(my_R_RAX),(my_R_RSP),(0UL),(0UL),(88UL));
- (my_as_modrm)(((my_c)->my_as),(my_OP_STORE),(my_R_RAX),(my_R_RSP),(0UL),(0UL),(160UL));
- (my_as_modrm)(((my_c)->my_as),(my_OP_STORE),(my_R_RAX),(my_R_RSP),(0UL),(0UL),(168UL));
- (my_as_modri)(((my_c)->my_as),(my_OP_MOVI),(my_R_RAX),(43UL));
- (my_as_modrm)(((my_c)->my_as),(my_OP_STORE),(my_R_RAX),(my_R_RSP),(0UL),(0UL),(144UL));
- (my_as_modri)(((my_c)->my_as),(my_OP_MOVI),(my_R_RAX),(35UL));
- (my_as_modrm)(((my_c)->my_as),(my_OP_STORE),(my_R_RAX),(my_R_RSP),(0UL),(0UL),(152UL));
+ (my_as_modrm)(((my_c)->my_s),(my_OP_LOAD),(my_R_RSP),(my_R_RSP),(0UL),(0UL),((my_v)->my_member_offset));
+ (my_as_modri)(((my_c)->my_s),(my_OP_ADDI),(my_R_RSP),((unsigned long)(((unsigned long)(4096UL))-((unsigned long)(176UL)))));
+ (my_as_modrm)(((my_c)->my_s),(my_OP_STORE),(my_R_RAX),(my_R_RSP),(0UL),(0UL),(0UL));
+ (my_as_modrm)(((my_c)->my_s),(my_OP_STORE),(my_R_RDX),(my_R_RSP),(0UL),(0UL),(16UL));
+ (my_as_modrm)(((my_c)->my_s),(my_OP_STORE),(my_R_RBX),(my_R_RSP),(0UL),(0UL),(24UL));
+ (my_as_modrm)(((my_c)->my_s),(my_OP_STORE),(my_R_RBP),(my_R_RSP),(0UL),(0UL),(40UL));
+ (my_as_modrm)(((my_c)->my_s),(my_OP_STORE),(my_R_RSI),(my_R_RSP),(0UL),(0UL),(48UL));
+ (my_as_modrm)(((my_c)->my_s),(my_OP_STORE),(my_R_RDI),(my_R_RSP),(0UL),(0UL),(56UL));
+ (my_as_modrm)(((my_c)->my_s),(my_OP_STORE),(my_R_R8),(my_R_RSP),(0UL),(0UL),(64UL));
+ (my_as_modrm)(((my_c)->my_s),(my_OP_STORE),(my_R_R9),(my_R_RSP),(0UL),(0UL),(72UL));
+ (my_as_modrm)(((my_c)->my_s),(my_OP_STORE),(my_R_R10),(my_R_RSP),(0UL),(0UL),(80UL));
+ (my_as_modrm)(((my_c)->my_s),(my_OP_STORE),(my_R_R12),(my_R_RSP),(0UL),(0UL),(96UL));
+ (my_as_modrm)(((my_c)->my_s),(my_OP_STORE),(my_R_R13),(my_R_RSP),(0UL),(0UL),(104UL));
+ (my_as_modrm)(((my_c)->my_s),(my_OP_STORE),(my_R_R14),(my_R_RSP),(0UL),(0UL),(112UL));
+ (my_as_modrm)(((my_c)->my_s),(my_OP_STORE),(my_R_R15),(my_R_RSP),(0UL),(0UL),(120UL));
+ (my_as_modrm)(((my_c)->my_s),(my_OP_STORE),(my_R_RCX),(my_R_RSP),(0UL),(0UL),(128UL));
+ (my_as_modrm)(((my_c)->my_s),(my_OP_STORE),(my_R_R11),(my_R_RSP),(0UL),(0UL),(136UL));
+ (my_as_modrr)(((my_c)->my_s),(my_OP_XORRM),(my_R_RAX),(my_R_RAX));
+ (my_as_modrm)(((my_c)->my_s),(my_OP_STORE),(my_R_RAX),(my_R_RSP),(0UL),(0UL),(8UL));
+ (my_as_modrm)(((my_c)->my_s),(my_OP_STORE),(my_R_RAX),(my_R_RSP),(0UL),(0UL),(88UL));
+ (my_as_modrm)(((my_c)->my_s),(my_OP_STORE),(my_R_RAX),(my_R_RSP),(0UL),(0UL),(160UL));
+ (my_as_modrm)(((my_c)->my_s),(my_OP_STORE),(my_R_RAX),(my_R_RSP),(0UL),(0UL),(168UL));
+ (my_as_modri)(((my_c)->my_s),(my_OP_MOVI),(my_R_RAX),(43UL));
+ (my_as_modrm)(((my_c)->my_s),(my_OP_STORE),(my_R_RAX),(my_R_RSP),(0UL),(0UL),(144UL));
+ (my_as_modri)(((my_c)->my_s),(my_OP_MOVI),(my_R_RAX),(35UL));
+ (my_as_modrm)(((my_c)->my_s),(my_OP_STORE),(my_R_RAX),(my_R_RSP),(0UL),(0UL),(152UL));
(my_v)=((my_find)((my_c),((unsigned char *)"global"),((unsigned char *)"_save"),(0UL)));
if ((unsigned long)(((unsigned long)(!(my_v)))||((unsigned long)(!((my_v)->my_member_defined))))) {
(my_cdie)((my_c),((unsigned char *)"no _save"));
}
- (my_as_emit)(((my_c)->my_as),(my_OP_GS));
- (my_as_modra)(((my_c)->my_as),(my_OP_LOAD),(my_R_RAX),((my_v)->my_member_offset));
- (my_as_modrm)(((my_c)->my_as),(my_OP_STORE),(my_R_RAX),(my_R_RSP),(0UL),(0UL),(32UL));
- (my_as_modrr)(((my_c)->my_as),(my_OP_MOVE),(my_R_RAX),(my_R_RSP));
- (my_as_modrr)(((my_c)->my_as),(my_OP_XORRM),(my_R_RBP),(my_R_RBP));
- (my_as_opr)(((my_c)->my_as),(my_OP_PUSHR),(my_R_RBP));
- (my_as_opr)(((my_c)->my_as),(my_OP_PUSHR),(my_R_RBP));
- (my_as_modrr)(((my_c)->my_as),(my_OP_MOVE),(my_R_RBP),(my_R_RSP));
- (my_as_opr)(((my_c)->my_as),(my_OP_PUSHR),(my_R_RAX));
+ (my_as_emit)(((my_c)->my_s),(my_OP_GS));
+ (my_as_modra)(((my_c)->my_s),(my_OP_LOAD),(my_R_RAX),((my_v)->my_member_offset));
+ (my_as_modrm)(((my_c)->my_s),(my_OP_STORE),(my_R_RAX),(my_R_RSP),(0UL),(0UL),(32UL));
+ (my_as_modrr)(((my_c)->my_s),(my_OP_MOVE),(my_R_RAX),(my_R_RSP));
+ (my_as_modrr)(((my_c)->my_s),(my_OP_XORRM),(my_R_RBP),(my_R_RBP));
+ (my_as_opr)(((my_c)->my_s),(my_OP_PUSHR),(my_R_RBP));
+ (my_as_opr)(((my_c)->my_s),(my_OP_PUSHR),(my_R_RBP));
+ (my_as_modrr)(((my_c)->my_s),(my_OP_MOVE),(my_R_RBP),(my_R_RSP));
+ (my_as_opr)(((my_c)->my_s),(my_OP_PUSHR),(my_R_RAX));
(my_d)=((my_find)((my_c),((unsigned char *)"_ssr"),((unsigned char*)0UL),(1UL)));
if ((unsigned long)(((my_d)->my_func_defined)&&(((my_d)->my_func_label)->my_fixed))) {
- (my_as_jmp)(((my_c)->my_as),(my_OP_CALL),((my_d)->my_func_label));
- }
- (my_as_op)(((my_c)->my_as),(my_OP_CLI));
- (my_as_modri)(((my_c)->my_as),(my_OP_ADDI),(my_R_RSP),((unsigned long)(((long)(3UL))*((long)(8UL)))));
- (my_as_modrm)(((my_c)->my_as),(my_OP_LOAD),(my_R_RAX),(my_R_RSP),(0UL),(0UL),(0UL));
- (my_as_modrm)(((my_c)->my_as),(my_OP_LOAD),(my_R_RDX),(my_R_RSP),(0UL),(0UL),(16UL));
- (my_as_modrm)(((my_c)->my_as),(my_OP_LOAD),(my_R_RBX),(my_R_RSP),(0UL),(0UL),(24UL));
- (my_as_modrm)(((my_c)->my_as),(my_OP_LOAD),(my_R_RBP),(my_R_RSP),(0UL),(0UL),(40UL));
- (my_as_modrm)(((my_c)->my_as),(my_OP_LOAD),(my_R_RSI),(my_R_RSP),(0UL),(0UL),(48UL));
- (my_as_modrm)(((my_c)->my_as),(my_OP_LOAD),(my_R_RDI),(my_R_RSP),(0UL),(0UL),(56UL));
- (my_as_modrm)(((my_c)->my_as),(my_OP_LOAD),(my_R_R8),(my_R_RSP),(0UL),(0UL),(64UL));
- (my_as_modrm)(((my_c)->my_as),(my_OP_LOAD),(my_R_R9),(my_R_RSP),(0UL),(0UL),(72UL));
- (my_as_modrm)(((my_c)->my_as),(my_OP_LOAD),(my_R_R10),(my_R_RSP),(0UL),(0UL),(80UL));
- (my_as_modrm)(((my_c)->my_as),(my_OP_LOAD),(my_R_R12),(my_R_RSP),(0UL),(0UL),(96UL));
- (my_as_modrm)(((my_c)->my_as),(my_OP_LOAD),(my_R_R13),(my_R_RSP),(0UL),(0UL),(104UL));
- (my_as_modrm)(((my_c)->my_as),(my_OP_LOAD),(my_R_R14),(my_R_RSP),(0UL),(0UL),(112UL));
- (my_as_modrm)(((my_c)->my_as),(my_OP_LOAD),(my_R_R15),(my_R_RSP),(0UL),(0UL),(120UL));
- (my_as_modrm)(((my_c)->my_as),(my_OP_LOAD),(my_R_RCX),(my_R_RSP),(0UL),(0UL),(128UL));
- (my_as_modrm)(((my_c)->my_as),(my_OP_LOAD),(my_R_R11),(my_R_RSP),(0UL),(0UL),(136UL));
- (my_as_modrm)(((my_c)->my_as),(my_OP_LOAD),(my_R_RSP),(my_R_RSP),(0UL),(0UL),(32UL));
- (my_as_rex)(((my_c)->my_as),(my_OP_SYSRET),(0UL),(0UL),(0UL));
- (my_as_op)(((my_c)->my_as),(my_OP_SYSRET));
+ (my_as_jmp)(((my_c)->my_s),(my_OP_CALL),((my_d)->my_func_label));
+ }
+ (my_as_op)(((my_c)->my_s),(my_OP_CLI));
+ (my_as_modri)(((my_c)->my_s),(my_OP_ADDI),(my_R_RSP),((unsigned long)(((long)(3UL))*((long)(8UL)))));
+ (my_as_modrm)(((my_c)->my_s),(my_OP_LOAD),(my_R_RAX),(my_R_RSP),(0UL),(0UL),(0UL));
+ (my_as_modrm)(((my_c)->my_s),(my_OP_LOAD),(my_R_RDX),(my_R_RSP),(0UL),(0UL),(16UL));
+ (my_as_modrm)(((my_c)->my_s),(my_OP_LOAD),(my_R_RBX),(my_R_RSP),(0UL),(0UL),(24UL));
+ (my_as_modrm)(((my_c)->my_s),(my_OP_LOAD),(my_R_RBP),(my_R_RSP),(0UL),(0UL),(40UL));
+ (my_as_modrm)(((my_c)->my_s),(my_OP_LOAD),(my_R_RSI),(my_R_RSP),(0UL),(0UL),(48UL));
+ (my_as_modrm)(((my_c)->my_s),(my_OP_LOAD),(my_R_RDI),(my_R_RSP),(0UL),(0UL),(56UL));
+ (my_as_modrm)(((my_c)->my_s),(my_OP_LOAD),(my_R_R8),(my_R_RSP),(0UL),(0UL),(64UL));
+ (my_as_modrm)(((my_c)->my_s),(my_OP_LOAD),(my_R_R9),(my_R_RSP),(0UL),(0UL),(72UL));
+ (my_as_modrm)(((my_c)->my_s),(my_OP_LOAD),(my_R_R10),(my_R_RSP),(0UL),(0UL),(80UL));
+ (my_as_modrm)(((my_c)->my_s),(my_OP_LOAD),(my_R_R12),(my_R_RSP),(0UL),(0UL),(96UL));
+ (my_as_modrm)(((my_c)->my_s),(my_OP_LOAD),(my_R_R13),(my_R_RSP),(0UL),(0UL),(104UL));
+ (my_as_modrm)(((my_c)->my_s),(my_OP_LOAD),(my_R_R14),(my_R_RSP),(0UL),(0UL),(112UL));
+ (my_as_modrm)(((my_c)->my_s),(my_OP_LOAD),(my_R_R15),(my_R_RSP),(0UL),(0UL),(120UL));
+ (my_as_modrm)(((my_c)->my_s),(my_OP_LOAD),(my_R_RCX),(my_R_RSP),(0UL),(0UL),(128UL));
+ (my_as_modrm)(((my_c)->my_s),(my_OP_LOAD),(my_R_R11),(my_R_RSP),(0UL),(0UL),(136UL));
+ (my_as_modrm)(((my_c)->my_s),(my_OP_LOAD),(my_R_RSP),(my_R_RSP),(0UL),(0UL),(32UL));
+ (my_as_rex)(((my_c)->my_s),(my_OP_SYSRET),(0UL),(0UL),(0UL));
+ (my_as_op)(((my_c)->my_s),(my_OP_SYSRET));
}
void( my_emit_store)(struct my_assembler* my_c,struct my_type* my_t){
(my_as_opr)((my_c),(my_OP_POPR),(my_R_RDI));
@@ -4390,7 +4399,7 @@ struct my_decl*( my_find)(struct my_compiler* my_c,unsigned char* my_name,unsign
((my_d)->my_used_next)=((struct my_decl*)0UL);
((my_d)->my_func_defined)=(0UL);
((my_d)->my_func_type)=((struct my_type*)0UL);
- ((my_d)->my_func_label)=((my_mklabel)(((my_c)->my_as)));
+ ((my_d)->my_func_label)=((my_mklabel)(((my_c)->my_s)));
((my_d)->my_func_def)=((struct my_node*)0UL);
((my_d)->my_func_used)=(0UL);
((my_d)->my_struct_defined)=(0UL);
@@ -4409,7 +4418,7 @@ struct my_decl*( my_find)(struct my_compiler* my_c,unsigned char* my_name,unsign
((my_d)->my_var_offset)=(0UL);
((my_d)->my_var_def)=((struct my_node*)0UL);
((my_d)->my_goto_defined)=(0UL);
- ((my_d)->my_goto_label)=((my_mklabel)(((my_c)->my_as)));
+ ((my_d)->my_goto_label)=((my_mklabel)(((my_c)->my_s)));
(*(my_link))=(my_d);
return my_d;
}
@@ -4907,8 +4916,8 @@ void( my_main)(unsigned long my_argc,unsigned char** my_argv,unsigned char** my_
return;
}
(my_emit_builtin)((my_c));
- (my_open_output)(((my_c)->my_as),(my_filename));
- (my_writeout)(((my_c)->my_as),((my_c)->my_start),((my_c)->my_kstart));
+ (my_open_output)(((my_c)->my_s),(my_filename));
+ (my_writeout)(((my_c)->my_s),((my_c)->my_start),((my_c)->my_kstart));
}
void( my_mark_expr_used)(struct my_compiler* my_c,struct my_decl* my_d,struct my_node* my_n){
struct my_decl* my_v = 0;
@@ -5929,6 +5938,28 @@ unsigned long( my_peg_P_arg_decl)(struct my_peg* my_c){
}
return my_ok;
}
+unsigned long( my_peg_P_as)(struct my_peg* my_c){
+ unsigned long my_ok = 0;
+ (my_enter)((my_c),(my_P_as));
+ (my_ok)=((my_literal)((my_c),((unsigned char *)"as")));
+ if (my_ok) {
+ (my_choice)((my_c));
+ (my_ok)=((my_charset)((my_c),((unsigned char *)"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz")));
+ if (my_ok) {
+ (my_fail)((my_c));
+ (my_fail)((my_c));
+ (my_ok)=(0UL);
+ } else {
+ (my_ok)=(1UL);
+ }
+ }
+ if (my_ok) {
+ (my_leave)((my_c),(my_P_as));
+ } else {
+ (my_fail)((my_c));
+ }
+ return my_ok;
+}
unsigned long( my_peg_P_assign_stmt)(struct my_peg* my_c){
unsigned long my_ok = 0;
(my_enter)((my_c),(my_P_assign_stmt));
@@ -6162,7 +6193,17 @@ unsigned long( my_peg_P_call_expr)(struct my_peg* my_c){
unsigned long( my_peg_P_cast_expr)(struct my_peg* my_c){
unsigned long my_ok = 0;
(my_enter)((my_c),(my_P_cast_expr));
+ (my_choice)((my_c));
(my_ok)=((my_literal)((my_c),((unsigned char *)":")));
+ if ((unsigned long)(!(my_ok))) {
+ (my_choice)((my_c));
+ (my_ok)=((my_literal)((my_c),((unsigned char *)"as")));
+ }
+ if (my_ok) {
+ (my_commit)((my_c));
+ } else {
+ (my_fail)((my_c));
+ }
if (my_ok) {
(my_ok)=((my_peg_P_sp)((my_c)));
}
@@ -7630,6 +7671,10 @@ unsigned long( my_peg_P_reserved)(struct my_peg* my_c){
(my_choice)((my_c));
(my_ok)=((my_peg_P_func)((my_c)));
}
+ if ((unsigned long)(!(my_ok))) {
+ (my_choice)((my_c));
+ (my_ok)=((my_peg_P_as)((my_c)));
+ }
if (my_ok) {
(my_commit)((my_c));
} else {
@@ -9773,12 +9818,12 @@ void( my_typecheck_expr)(struct my_compiler* my_c,struct my_decl* my_d,struct my
} else if ((unsigned long)(((long)(my_kind))==((long)(my_N_DOT)))) {
(my_typecheck_expr)((my_c),(my_d),((my_n)->my_a),(0UL));
if ((unsigned long)(((long)((((my_n)->my_a)->my_t)->my_kind))==((long)(my_TY_PTR)))) {
- if ((unsigned long)(((long)(((((my_n)->my_a)->my_t)->my_val)->my_kind))!=((long)(my_TY_STRUCT)))) {
+ if ((unsigned long)(((unsigned long)(((long)(((((my_n)->my_a)->my_t)->my_val)->my_kind))!=((long)(my_TY_STRUCT))))&&((unsigned long)(((long)(((((my_n)->my_a)->my_t)->my_val)->my_kind))!=((long)(my_TY_UNION)))))) {
(my_cdie)((my_c),((unsigned char *)"dot not a struct"));
}
(my_v)=((my_find)((my_c),((((((my_n)->my_a)->my_t)->my_val)->my_st)->my_name),(((my_n)->my_b)->my_s),(0UL)));
} else {
- if ((unsigned long)(((long)((((my_n)->my_a)->my_t)->my_kind))!=((long)(my_TY_STRUCT)))) {
+ if ((unsigned long)(((unsigned long)(((long)((((my_n)->my_a)->my_t)->my_kind))!=((long)(my_TY_STRUCT))))&&((unsigned long)(((long)((((my_n)->my_a)->my_t)->my_kind))!=((long)(my_TY_UNION)))))) {
(my_cdie)((my_c),((unsigned char *)"dot not a struct"));
}
(my_v)=((my_find)((my_c),(((((my_n)->my_a)->my_t)->my_st)->my_name),(((my_n)->my_b)->my_s),(0UL)));
diff --git a/cc1.om b/cc1.om
@@ -11,7 +11,7 @@ struct compiler {
colno: int;
// Assembler
- as: *assembler;
+ s: *assembler;
// Namespace
decls: *decl;
@@ -61,7 +61,7 @@ comp_setup(a: *alloc): *compiler {
c.lineno = 0;
c.colno = 0;
- c.as = setup_assembler(a);
+ c.s = setup_assembler(a);
c.decls = 0:*decl;
@@ -619,17 +619,17 @@ compile_func(c: *compiler, d: *decl) {
}
// Compile the function body
- fixup_label(c.as, d.func_label);
- add_symbol(c.as, d.name, d.func_label);
- emit_preamble(c.as, d.func_preamble, pragma);
+ fixup_label(c.s, d.func_label);
+ add_symbol(c.s, d.name, d.func_label);
+ emit_preamble(c.s, d.func_preamble, pragma);
compile_stmt(c, d, d.func_def.b, 0:*label, 0:*label);
- emit_num(c.as, 0);
+ emit_num(c.s, 0);
if (pragma) {
- emit_ud(c.as);
+ emit_ud(c.s);
}
- emit_ret(c.as);
+ emit_ret(c.s);
}
typecheck_expr(c: *compiler, d: *decl, n: *node, rhs: int) {
@@ -1311,11 +1311,11 @@ compile_include(c: *compiler, n: *node) {
close(fd);
- as_opr(c.as, OP_POPR, R_RAX);
- as_opr(c.as, OP_POPR, R_RDI);
- as_opri64(c.as, OP_MOVABS, R_RAX, len);
- as_modrm(c.as, OP_STORE, R_RAX, R_RDI, 0, 0, 0);
- emit_blob(c.as, blob, len);
+ as_opr(c.s, OP_POPR, R_RAX);
+ as_opr(c.s, OP_POPR, R_RDI);
+ as_opri64(c.s, OP_MOVABS, R_RAX, len);
+ as_modrm(c.s, OP_STORE, R_RAX, R_RDI, 0, 0, 0);
+ emit_blob(c.s, blob, len);
free(c.a, blob);
}
@@ -1333,11 +1333,11 @@ compile_expr(c: *compiler, d: *decl, n: *node, rhs: int) {
kind = n.kind;
if (kind == N_STR) {
- emit_str(c.as, n.s);
+ emit_str(c.s, n.s);
} else if (kind == N_NUM) {
- emit_num(c.as, n.n);
+ emit_num(c.s, n.n);
} else if (kind == N_CHAR) {
- emit_num(c.as, n.n);
+ emit_num(c.s, n.n);
} else if (kind == N_EXPRLIST) {
if (n.b) {
compile_expr(c, d, n.b, 1);
@@ -1357,19 +1357,19 @@ compile_expr(c: *compiler, d: *decl, n: *node, rhs: int) {
v = find(c, d.name, n.a.s, 0);
if (v && v.var_defined) {
- emit_lea(c.as, v.var_offset);
- emit_load(c.as, n.a.t);
- emit_call(c.as, count_args(c, n.a.t.arg));
+ emit_lea(c.s, v.var_offset);
+ emit_load(c.s, n.a.t);
+ emit_call(c.s, count_args(c, n.a.t.arg));
} else if !strcmp(n.a.s, "_include") {
v = find(c, n.a.s, 0:*byte, 0);
compile_include(c, n);
} else {
v = find(c, n.a.s, 0:*byte, 0);
- emit_lcall(c.as, v.func_label, count_args(c, n.a.t.arg));
+ emit_lcall(c.s, v.func_label, count_args(c, n.a.t.arg));
}
} else {
compile_expr(c, d, n.a, 1);
- emit_call(c.as, count_args(c, n.a.t.arg));
+ emit_call(c.s, count_args(c, n.a.t.arg));
}
if (n.b) {
@@ -1382,56 +1382,56 @@ compile_expr(c: *compiler, d: *decl, n: *node, rhs: int) {
if (n.a.t.kind == TY_PTR) {
v = find(c, n.a.t.val.st.name, n.b.s, 0);
- emit_load(c.as, n.a.t);
+ emit_load(c.s, n.a.t);
} else {
v = find(c, n.a.t.st.name, n.b.s, 0);
}
- emit_num(c.as, v.member_offset);
- emit_add(c.as);
+ emit_num(c.s, v.member_offset);
+ emit_add(c.s);
if (rhs) {
- emit_load(c.as, n.t);
+ emit_load(c.s, n.t);
}
} else if (kind == N_IDENT) {
v = find(c, n.s, 0:*byte, 0);
if (v && v.enum_defined) {
- emit_num(c.as, v.enum_value);
+ emit_num(c.s, v.enum_value);
return;
}
v = find(c, d.name, n.s, 0);
if (v && v.var_defined) {
- emit_lea(c.as, v.var_offset);
+ emit_lea(c.s, v.var_offset);
if (rhs) {
- emit_load(c.as, n.t);
+ emit_load(c.s, n.t);
}
return;
}
v = find(c, n.s, 0:*byte, 0);
if (v && v.func_defined) {
- emit_ptr(c.as, v.func_label);
+ emit_ptr(c.s, v.func_label);
return;
}
} else if (kind == N_ASSIGN) {
compile_expr(c, d, n.b, 1);
compile_expr(c, d, n.a, 0);
- emit_store(c.as, n.t);
+ emit_store(c.s, n.t);
} else if (kind == N_SIZEOF) {
- out = mklabel(c.as);
+ out = mklabel(c.s);
- emit_jmp(c.as, out);
+ emit_jmp(c.s, out);
compile_expr(c, d, n.a, 0);
- fixup_label(c.as, out);
+ fixup_label(c.s, out);
if (n.a.t.kind == TY_BYTE) {
- emit_num(c.as, 1);
+ emit_num(c.s, 1);
} else {
- emit_num(c.as, type_sizeof(c, n.a.t));
+ emit_num(c.s, type_sizeof(c, n.a.t));
}
} else if (kind == N_REF) {
compile_expr(c, d, n.a, 0);
@@ -1439,146 +1439,146 @@ compile_expr(c: *compiler, d: *decl, n: *node, rhs: int) {
compile_expr(c, d, n.a, 1);
if (rhs) {
- emit_load(c.as, n.t);
+ emit_load(c.s, n.t);
}
} else if (kind == N_INDEX) {
compile_expr(c, d, n.a, 1);
compile_expr(c, d, n.b, 1);
if (n.t.kind == TY_BYTE) {
- emit_num(c.as, 1);
+ emit_num(c.s, 1);
} else {
- emit_num(c.as, type_sizeof(c, n.t));
+ emit_num(c.s, type_sizeof(c, n.t));
}
- emit_mul(c.as);
- emit_add(c.as);
+ emit_mul(c.s);
+ emit_add(c.s);
if (rhs) {
- emit_load(c.as, n.t);
+ emit_load(c.s, n.t);
}
} else if (kind == N_LT) {
compile_expr(c, d, n.b, 1);
compile_expr(c, d, n.a, 1);
- emit_lt(c.as);
+ emit_lt(c.s);
} else if (kind == N_GT) {
compile_expr(c, d, n.b, 1);
compile_expr(c, d, n.a, 1);
- emit_gt(c.as);
+ emit_gt(c.s);
} else if (kind == N_LE) {
compile_expr(c, d, n.b, 1);
compile_expr(c, d, n.a, 1);
- emit_le(c.as);
+ emit_le(c.s);
} else if (kind == N_GE) {
compile_expr(c, d, n.b, 1);
compile_expr(c, d, n.a, 1);
- emit_ge(c.as);
+ emit_ge(c.s);
} else if (kind == N_EQ) {
compile_expr(c, d, n.b, 1);
compile_expr(c, d, n.a, 1);
- emit_eq(c.as);
+ emit_eq(c.s);
} else if (kind == N_NE) {
compile_expr(c, d, n.b, 1);
compile_expr(c, d, n.a, 1);
- emit_ne(c.as);
+ emit_ne(c.s);
} else if (kind == N_BNOT) {
- no = mklabel(c.as);
- out = mklabel(c.as);
+ no = mklabel(c.s);
+ out = mklabel(c.s);
compile_expr(c, d, n.a, 1);
- emit_jz(c.as, no);
- emit_num(c.as, 0);
- emit_jmp(c.as, out);
- fixup_label(c.as, no);
- emit_num(c.as, 1);
- fixup_label(c.as, out);
+ emit_jz(c.s, no);
+ emit_num(c.s, 0);
+ emit_jmp(c.s, out);
+ fixup_label(c.s, no);
+ emit_num(c.s, 1);
+ fixup_label(c.s, out);
} else if (kind == N_BOR) {
- no = mklabel(c.as);
- out = mklabel(c.as);
+ no = mklabel(c.s);
+ out = mklabel(c.s);
compile_expr(c, d, n.a, 1);
- emit_jz(c.as, no);
- emit_num(c.as, 1);
- emit_jmp(c.as, out);
+ emit_jz(c.s, no);
+ emit_num(c.s, 1);
+ emit_jmp(c.s, out);
- fixup_label(c.as, no);
- no = mklabel(c.as);
+ fixup_label(c.s, no);
+ no = mklabel(c.s);
compile_expr(c, d, n.b, 1);
- emit_jz(c.as, no);
- emit_num(c.as, 1);
- emit_jmp(c.as, out);
+ emit_jz(c.s, no);
+ emit_num(c.s, 1);
+ emit_jmp(c.s, out);
- fixup_label(c.as, no);
- emit_num(c.as, 0);
+ fixup_label(c.s, no);
+ emit_num(c.s, 0);
- fixup_label(c.as, out);
+ fixup_label(c.s, out);
} else if (kind == N_BAND) {
- no = mklabel(c.as);
- out = mklabel(c.as);
+ no = mklabel(c.s);
+ out = mklabel(c.s);
compile_expr(c, d, n.a, 1);
- emit_jz(c.as, no);
+ emit_jz(c.s, no);
compile_expr(c, d, n.b, 1);
- emit_jz(c.as, no);
+ emit_jz(c.s, no);
- emit_num(c.as, 1);
- emit_jmp(c.as, out);
+ emit_num(c.s, 1);
+ emit_jmp(c.s, out);
- fixup_label(c.as, no);
- emit_num(c.as, 0);
+ fixup_label(c.s, no);
+ emit_num(c.s, 0);
- fixup_label(c.as, out);
+ fixup_label(c.s, out);
} else if (kind == N_POS) {
compile_expr(c, d, n.a, 1);
} else if (kind == N_NEG) {
compile_expr(c, d, n.a, 1);
- emit_neg(c.as);
+ emit_neg(c.s);
} else if (kind == N_NOT) {
compile_expr(c, d, n.a, 1);
- emit_not(c.as);
+ emit_not(c.s);
} else if (kind == N_ADD) {
compile_expr(c, d, n.b, 1);
compile_expr(c, d, n.a, 1);
- emit_add(c.as);
+ emit_add(c.s);
} else if (kind == N_SUB) {
compile_expr(c, d, n.b, 1);
compile_expr(c, d, n.a, 1);
- emit_sub(c.as);
+ emit_sub(c.s);
} else if (kind == N_MUL) {
compile_expr(c, d, n.b, 1);
compile_expr(c, d, n.a, 1);
- emit_mul(c.as);
+ emit_mul(c.s);
} else if (kind == N_DIV) {
compile_expr(c, d, n.b, 1);
compile_expr(c, d, n.a, 1);
- emit_div(c.as);
+ emit_div(c.s);
} else if (kind == N_MOD) {
compile_expr(c, d, n.b, 1);
compile_expr(c, d, n.a, 1);
- emit_mod(c.as);
+ emit_mod(c.s);
} else if (kind == N_LSH) {
compile_expr(c, d, n.b, 1);
compile_expr(c, d, n.a, 1);
- emit_lsh(c.as);
+ emit_lsh(c.s);
} else if (kind == N_RSH) {
compile_expr(c, d, n.b, 1);
compile_expr(c, d, n.a, 1);
- emit_rsh(c.as);
+ emit_rsh(c.s);
} else if (kind == N_AND) {
compile_expr(c, d, n.b, 1);
compile_expr(c, d, n.a, 1);
- emit_and(c.as);
+ emit_and(c.s);
} else if (kind == N_OR) {
compile_expr(c, d, n.b, 1);
compile_expr(c, d, n.a, 1);
- emit_or(c.as);
+ emit_or(c.s);
} else if (kind == N_XOR) {
compile_expr(c, d, n.b, 1);
compile_expr(c, d, n.a, 1);
- emit_xor(c.as);
+ emit_xor(c.s);
} else if (kind == N_CAST) {
compile_expr(c, d, n.a, 1);
} else {
@@ -1662,30 +1662,30 @@ compile_stmt(c: *compiler, d: *decl, n: *node, top: *label, out: *label) {
kind = n.kind;
if (kind == N_CONDLIST) {
- ifout = mklabel(c.as);
+ ifout = mklabel(c.s);
no = 0: *label;
loop {
if (no) {
- fixup_label(c.as, no);
+ fixup_label(c.s, no);
}
if (!n) {
break;
}
- no = mklabel(c.as);
+ no = mklabel(c.s);
if (n.a.a) {
compile_expr(c, d, n.a.a, 1);
- emit_jz(c.as, no);
+ emit_jz(c.s, no);
}
compile_stmt(c, d, n.a.b, top, out);
- emit_jmp(c.as, ifout);
+ emit_jmp(c.s, ifout);
n = n.b;
}
- fixup_label(c.as, ifout);
+ fixup_label(c.s, ifout);
} else if (kind == N_STMTLIST) {
loop {
if (!n) {
@@ -1695,22 +1695,22 @@ compile_stmt(c: *compiler, d: *decl, n: *node, top: *label, out: *label) {
n = n.b;
}
} else if (kind == N_LOOP) {
- top = mklabel(c.as);
- out = mklabel(c.as);
- fixup_label(c.as, top);
+ top = mklabel(c.s);
+ out = mklabel(c.s);
+ fixup_label(c.s, top);
compile_stmt(c, d, n.a, top, out);
- emit_jmp(c.as, top);
- fixup_label(c.as, out);
+ emit_jmp(c.s, top);
+ fixup_label(c.s, out);
} else if (kind == N_BREAK) {
if (!out) {
cdie(c, "break outside loop");
}
- emit_jmp(c.as, out);
+ emit_jmp(c.s, out);
} else if (kind == N_CONTINUE) {
if (!top) {
cdie(c, "continue outside loop");
}
- emit_jmp(c.as, top);
+ emit_jmp(c.s, top);
} else if (kind == N_RETURN) {
if (n.a) {
if (d.func_type.val.kind == TY_VOID) {
@@ -1721,21 +1721,21 @@ compile_stmt(c: *compiler, d: *decl, n: *node, top: *label, out: *label) {
if (d.func_type.val.kind != TY_VOID) {
cdie(c, "returning void in a non void function");
}
- emit_num(c.as, 0);
+ emit_num(c.s, 0);
}
- emit_ret(c.as);
+ emit_ret(c.s);
} else if (kind == N_LABEL) {
v = find(c, d.name, n.a.s, 0);
- fixup_label(c.as, v.goto_label);
+ fixup_label(c.s, v.goto_label);
} else if (kind == N_GOTO) {
v = find(c, d.name, n.a.s, 0);
if (!v || !v.goto_defined) {
cdie(c, "label not defined");
}
- emit_jmp(c.as, v.goto_label);
+ emit_jmp(c.s, v.goto_label);
} else if (kind != N_VARDECL) {
compile_expr(c, d, n, 1);
- emit_pop(c.as, 1);
+ emit_pop(c.s, 1);
}
}
@@ -1748,99 +1748,99 @@ emit_ssr(c: *compiler) {
cdie(c, "no _save");
}
- as_emit(c.as, OP_GS);
- as_modra(c.as, OP_STORE, R_RSP, v.member_offset);
+ as_emit(c.s, OP_GS);
+ as_modra(c.s, OP_STORE, R_RSP, v.member_offset);
v = find(c, "global", "curtask", 0);
if (!v || !v.member_defined) {
cdie(c, "no global.curtask");
}
- as_emit(c.as, OP_GS);
- as_modra(c.as, OP_LOAD, R_RSP, v.member_offset);
+ as_emit(c.s, OP_GS);
+ as_modra(c.s, OP_LOAD, R_RSP, v.member_offset);
v = find(c, "task", "stack", 0);
if (!v || !v.member_defined) {
cdie(c, "no task.stack");
}
- as_modrm(c.as, OP_LOAD, R_RSP, R_RSP, 0, 0, v.member_offset);
- as_modri(c.as, OP_ADDI, R_RSP, 4096 - 176);
-
- as_modrm(c.as, OP_STORE, R_RAX, R_RSP, 0, 0, 0);
- as_modrm(c.as, OP_STORE, R_RDX, R_RSP, 0, 0, 16);
- as_modrm(c.as, OP_STORE, R_RBX, R_RSP, 0, 0, 24);
- as_modrm(c.as, OP_STORE, R_RBP, R_RSP, 0, 0, 40);
- as_modrm(c.as, OP_STORE, R_RSI, R_RSP, 0, 0, 48);
- as_modrm(c.as, OP_STORE, R_RDI, R_RSP, 0, 0, 56);
- as_modrm(c.as, OP_STORE, R_R8, R_RSP, 0, 0, 64);
- as_modrm(c.as, OP_STORE, R_R9, R_RSP, 0, 0, 72);
- as_modrm(c.as, OP_STORE, R_R10, R_RSP, 0, 0, 80);
- as_modrm(c.as, OP_STORE, R_R12, R_RSP, 0, 0, 96);
- as_modrm(c.as, OP_STORE, R_R13, R_RSP, 0, 0, 104);
- as_modrm(c.as, OP_STORE, R_R14, R_RSP, 0, 0, 112);
- as_modrm(c.as, OP_STORE, R_R15, R_RSP, 0, 0, 120);
- as_modrm(c.as, OP_STORE, R_RCX, R_RSP, 0, 0, 128);
- as_modrm(c.as, OP_STORE, R_R11, R_RSP, 0, 0, 136);
-
- as_modrr(c.as, OP_XORRM, R_RAX, R_RAX);
- as_modrm(c.as, OP_STORE, R_RAX, R_RSP, 0, 0, 8);
- as_modrm(c.as, OP_STORE, R_RAX, R_RSP, 0, 0, 88);
- as_modrm(c.as, OP_STORE, R_RAX, R_RSP, 0, 0, 160);
- as_modrm(c.as, OP_STORE, R_RAX, R_RSP, 0, 0, 168);
-
- as_modri(c.as, OP_MOVI, R_RAX, 43);
- as_modrm(c.as, OP_STORE, R_RAX, R_RSP, 0, 0, 144);
- as_modri(c.as, OP_MOVI, R_RAX, 35);
- as_modrm(c.as, OP_STORE, R_RAX, R_RSP, 0, 0, 152);
+ as_modrm(c.s, OP_LOAD, R_RSP, R_RSP, 0, 0, v.member_offset);
+ as_modri(c.s, OP_ADDI, R_RSP, 4096 - 176);
+
+ as_modrm(c.s, OP_STORE, R_RAX, R_RSP, 0, 0, 0);
+ as_modrm(c.s, OP_STORE, R_RDX, R_RSP, 0, 0, 16);
+ as_modrm(c.s, OP_STORE, R_RBX, R_RSP, 0, 0, 24);
+ as_modrm(c.s, OP_STORE, R_RBP, R_RSP, 0, 0, 40);
+ as_modrm(c.s, OP_STORE, R_RSI, R_RSP, 0, 0, 48);
+ as_modrm(c.s, OP_STORE, R_RDI, R_RSP, 0, 0, 56);
+ as_modrm(c.s, OP_STORE, R_R8, R_RSP, 0, 0, 64);
+ as_modrm(c.s, OP_STORE, R_R9, R_RSP, 0, 0, 72);
+ as_modrm(c.s, OP_STORE, R_R10, R_RSP, 0, 0, 80);
+ as_modrm(c.s, OP_STORE, R_R12, R_RSP, 0, 0, 96);
+ as_modrm(c.s, OP_STORE, R_R13, R_RSP, 0, 0, 104);
+ as_modrm(c.s, OP_STORE, R_R14, R_RSP, 0, 0, 112);
+ as_modrm(c.s, OP_STORE, R_R15, R_RSP, 0, 0, 120);
+ as_modrm(c.s, OP_STORE, R_RCX, R_RSP, 0, 0, 128);
+ as_modrm(c.s, OP_STORE, R_R11, R_RSP, 0, 0, 136);
+
+ as_modrr(c.s, OP_XORRM, R_RAX, R_RAX);
+ as_modrm(c.s, OP_STORE, R_RAX, R_RSP, 0, 0, 8);
+ as_modrm(c.s, OP_STORE, R_RAX, R_RSP, 0, 0, 88);
+ as_modrm(c.s, OP_STORE, R_RAX, R_RSP, 0, 0, 160);
+ as_modrm(c.s, OP_STORE, R_RAX, R_RSP, 0, 0, 168);
+
+ as_modri(c.s, OP_MOVI, R_RAX, 43);
+ as_modrm(c.s, OP_STORE, R_RAX, R_RSP, 0, 0, 144);
+ as_modri(c.s, OP_MOVI, R_RAX, 35);
+ as_modrm(c.s, OP_STORE, R_RAX, R_RSP, 0, 0, 152);
v = find(c, "global", "_save", 0);
if (!v || !v.member_defined) {
cdie(c, "no _save");
}
- as_emit(c.as, OP_GS);
- as_modra(c.as, OP_LOAD, R_RAX, v.member_offset);
- as_modrm(c.as, OP_STORE, R_RAX, R_RSP, 0, 0, 32);
- as_modrr(c.as, OP_MOVE, R_RAX, R_RSP);
+ as_emit(c.s, OP_GS);
+ as_modra(c.s, OP_LOAD, R_RAX, v.member_offset);
+ as_modrm(c.s, OP_STORE, R_RAX, R_RSP, 0, 0, 32);
+ as_modrr(c.s, OP_MOVE, R_RAX, R_RSP);
- as_modrr(c.as, OP_XORRM, R_RBP, R_RBP);
- as_opr(c.as, OP_PUSHR, R_RBP);
- as_opr(c.as, OP_PUSHR, R_RBP);
- as_modrr(c.as, OP_MOVE, R_RBP, R_RSP);
+ as_modrr(c.s, OP_XORRM, R_RBP, R_RBP);
+ as_opr(c.s, OP_PUSHR, R_RBP);
+ as_opr(c.s, OP_PUSHR, R_RBP);
+ as_modrr(c.s, OP_MOVE, R_RBP, R_RSP);
- as_opr(c.as, OP_PUSHR, R_RAX);
+ as_opr(c.s, OP_PUSHR, R_RAX);
d = find(c, "_ssr", 0:*byte, 1);
if (d.func_defined && d.func_label.fixed) {
- as_jmp(c.as, OP_CALL, d.func_label);
+ as_jmp(c.s, OP_CALL, d.func_label);
}
- as_op(c.as, OP_CLI);
+ as_op(c.s, OP_CLI);
- as_modri(c.as, OP_ADDI, R_RSP, 3 * 8);
+ as_modri(c.s, OP_ADDI, R_RSP, 3 * 8);
- as_modrm(c.as, OP_LOAD, R_RAX, R_RSP, 0, 0, 0);
- as_modrm(c.as, OP_LOAD, R_RDX, R_RSP, 0, 0, 16);
- as_modrm(c.as, OP_LOAD, R_RBX, R_RSP, 0, 0, 24);
- as_modrm(c.as, OP_LOAD, R_RBP, R_RSP, 0, 0, 40);
- as_modrm(c.as, OP_LOAD, R_RSI, R_RSP, 0, 0, 48);
- as_modrm(c.as, OP_LOAD, R_RDI, R_RSP, 0, 0, 56);
- as_modrm(c.as, OP_LOAD, R_R8, R_RSP, 0, 0, 64);
- as_modrm(c.as, OP_LOAD, R_R9, R_RSP, 0, 0, 72);
- as_modrm(c.as, OP_LOAD, R_R10, R_RSP, 0, 0, 80);
- as_modrm(c.as, OP_LOAD, R_R12, R_RSP, 0, 0, 96);
- as_modrm(c.as, OP_LOAD, R_R13, R_RSP, 0, 0, 104);
- as_modrm(c.as, OP_LOAD, R_R14, R_RSP, 0, 0, 112);
- as_modrm(c.as, OP_LOAD, R_R15, R_RSP, 0, 0, 120);
+ as_modrm(c.s, OP_LOAD, R_RAX, R_RSP, 0, 0, 0);
+ as_modrm(c.s, OP_LOAD, R_RDX, R_RSP, 0, 0, 16);
+ as_modrm(c.s, OP_LOAD, R_RBX, R_RSP, 0, 0, 24);
+ as_modrm(c.s, OP_LOAD, R_RBP, R_RSP, 0, 0, 40);
+ as_modrm(c.s, OP_LOAD, R_RSI, R_RSP, 0, 0, 48);
+ as_modrm(c.s, OP_LOAD, R_RDI, R_RSP, 0, 0, 56);
+ as_modrm(c.s, OP_LOAD, R_R8, R_RSP, 0, 0, 64);
+ as_modrm(c.s, OP_LOAD, R_R9, R_RSP, 0, 0, 72);
+ as_modrm(c.s, OP_LOAD, R_R10, R_RSP, 0, 0, 80);
+ as_modrm(c.s, OP_LOAD, R_R12, R_RSP, 0, 0, 96);
+ as_modrm(c.s, OP_LOAD, R_R13, R_RSP, 0, 0, 104);
+ as_modrm(c.s, OP_LOAD, R_R14, R_RSP, 0, 0, 112);
+ as_modrm(c.s, OP_LOAD, R_R15, R_RSP, 0, 0, 120);
- as_modrm(c.as, OP_LOAD, R_RCX, R_RSP, 0, 0, 128);
- as_modrm(c.as, OP_LOAD, R_R11, R_RSP, 0, 0, 136);
+ as_modrm(c.s, OP_LOAD, R_RCX, R_RSP, 0, 0, 128);
+ as_modrm(c.s, OP_LOAD, R_R11, R_RSP, 0, 0, 136);
- as_modrm(c.as, OP_LOAD, R_RSP, R_RSP, 0, 0, 32);
+ as_modrm(c.s, OP_LOAD, R_RSP, R_RSP, 0, 0, 32);
- as_rex(c.as, OP_SYSRET, 0, 0, 0);
- as_op(c.as, OP_SYSRET);
+ as_rex(c.s, OP_SYSRET, 0, 0, 0);
+ as_op(c.s, OP_SYSRET);
}
emit_isr(c: *compiler) {
@@ -1848,128 +1848,128 @@ emit_isr(c: *compiler) {
var out: *label;
var i: int;
- out = mklabel(c.as);
+ out = mklabel(c.s);
i = 0;
loop {
if i == 256 {
break;
}
- reserve(c.as, 16);
+ reserve(c.s, 16);
if i == 8 || i == 10 || i == 11 || i == 12
|| i == 13 || i == 14 || i == 17 || i == 21
|| i == 29 || i == 30 {
- as_emit(c.as, 0x90);
- as_emit(c.as, 0x90);
+ as_emit(c.s, 0x90);
+ as_emit(c.s, 0x90);
} else {
- as_emit(c.as, 0x6a);
- as_emit(c.as, 0x00);
- }
- as_emit(c.as, 0x68);
- as_emit(c.as, i);
- as_emit(c.as, 0x00);
- as_emit(c.as, 0x00);
- as_emit(c.as, 0x00);
- as_emit(c.as, 0xe9);
- as_emit(c.as, 0x00);
- as_emit(c.as, 0x00);
- as_emit(c.as, 0x00);
- as_emit(c.as, 0x00);
- addfixup(c.as, out);
- as_emit(c.as, 0x90);
- as_emit(c.as, 0x90);
- as_emit(c.as, 0x90);
- as_emit(c.as, 0x90);
+ as_emit(c.s, 0x6a);
+ as_emit(c.s, 0x00);
+ }
+ as_emit(c.s, 0x68);
+ as_emit(c.s, i);
+ as_emit(c.s, 0x00);
+ as_emit(c.s, 0x00);
+ as_emit(c.s, 0x00);
+ as_emit(c.s, 0xe9);
+ as_emit(c.s, 0x00);
+ as_emit(c.s, 0x00);
+ as_emit(c.s, 0x00);
+ as_emit(c.s, 0x00);
+ addfixup(c.s, out);
+ as_emit(c.s, 0x90);
+ as_emit(c.s, 0x90);
+ as_emit(c.s, 0x90);
+ as_emit(c.s, 0x90);
i = i + 1;
}
- fixup_label(c.as, out);
+ fixup_label(c.s, out);
// save regs
- as_modri(c.as, OP_SUBI, R_RSP, 176);
- as_modrm(c.as, OP_STORE, R_RBP, R_RSP, 0, 0, 40);
- as_modrr(c.as, OP_MOVE, R_RBP, R_RSP);
- as_opr(c.as, OP_PUSHR, R_RBP);
-
- as_modrm(c.as, OP_STORE, R_RAX, R_RBP, 0, 0, 0);
- as_modrm(c.as, OP_STORE, R_RCX, R_RBP, 0, 0, 8);
- as_modrm(c.as, OP_STORE, R_RDX, R_RBP, 0, 0, 16);
- as_modrm(c.as, OP_STORE, R_RBX, R_RBP, 0, 0, 24);
- as_modrm(c.as, OP_STORE, R_RSI, R_RBP, 0, 0, 48);
- as_modrm(c.as, OP_STORE, R_RDI, R_RBP, 0, 0, 56);
- as_modrm(c.as, OP_STORE, R_R8, R_RBP, 0, 0, 64);
- as_modrm(c.as, OP_STORE, R_R9, R_RBP, 0, 0, 72);
- as_modrm(c.as, OP_STORE, R_R10, R_RBP, 0, 0, 80);
- as_modrm(c.as, OP_STORE, R_R11, R_RBP, 0, 0, 88);
- as_modrm(c.as, OP_STORE, R_R12, R_RBP, 0, 0, 96);
- as_modrm(c.as, OP_STORE, R_R13, R_RBP, 0, 0, 104);
- as_modrm(c.as, OP_STORE, R_R14, R_RBP, 0, 0, 112);
- as_modrm(c.as, OP_STORE, R_R15, R_RBP, 0, 0, 120);
+ as_modri(c.s, OP_SUBI, R_RSP, 176);
+ as_modrm(c.s, OP_STORE, R_RBP, R_RSP, 0, 0, 40);
+ as_modrr(c.s, OP_MOVE, R_RBP, R_RSP);
+ as_opr(c.s, OP_PUSHR, R_RBP);
+
+ as_modrm(c.s, OP_STORE, R_RAX, R_RBP, 0, 0, 0);
+ as_modrm(c.s, OP_STORE, R_RCX, R_RBP, 0, 0, 8);
+ as_modrm(c.s, OP_STORE, R_RDX, R_RBP, 0, 0, 16);
+ as_modrm(c.s, OP_STORE, R_RBX, R_RBP, 0, 0, 24);
+ as_modrm(c.s, OP_STORE, R_RSI, R_RBP, 0, 0, 48);
+ as_modrm(c.s, OP_STORE, R_RDI, R_RBP, 0, 0, 56);
+ as_modrm(c.s, OP_STORE, R_R8, R_RBP, 0, 0, 64);
+ as_modrm(c.s, OP_STORE, R_R9, R_RBP, 0, 0, 72);
+ as_modrm(c.s, OP_STORE, R_R10, R_RBP, 0, 0, 80);
+ as_modrm(c.s, OP_STORE, R_R11, R_RBP, 0, 0, 88);
+ as_modrm(c.s, OP_STORE, R_R12, R_RBP, 0, 0, 96);
+ as_modrm(c.s, OP_STORE, R_R13, R_RBP, 0, 0, 104);
+ as_modrm(c.s, OP_STORE, R_R14, R_RBP, 0, 0, 112);
+ as_modrm(c.s, OP_STORE, R_R15, R_RBP, 0, 0, 120);
// trap
- as_modrm(c.as, OP_LOAD, R_RAX, R_RBP, 0, 0, 176 + 0);
- as_modrm(c.as, OP_STORE, R_RAX, R_RBP, 0, 0, 160);
+ as_modrm(c.s, OP_LOAD, R_RAX, R_RBP, 0, 0, 176 + 0);
+ as_modrm(c.s, OP_STORE, R_RAX, R_RBP, 0, 0, 160);
// err
- as_modrm(c.as, OP_LOAD, R_RAX, R_RBP, 0, 0, 176 + 8);
- as_modrm(c.as, OP_STORE, R_RAX, R_RBP, 0, 0, 168);
+ as_modrm(c.s, OP_LOAD, R_RAX, R_RBP, 0, 0, 176 + 8);
+ as_modrm(c.s, OP_STORE, R_RAX, R_RBP, 0, 0, 168);
// rip
- as_modrm(c.as, OP_LOAD, R_RAX, R_RBP, 0, 0, 176 + 16);
- as_modrm(c.as, OP_STORE, R_RAX, R_RBP, 0, 0, 128);
+ as_modrm(c.s, OP_LOAD, R_RAX, R_RBP, 0, 0, 176 + 16);
+ as_modrm(c.s, OP_STORE, R_RAX, R_RBP, 0, 0, 128);
// cs
- as_modrm(c.as, OP_LOAD, R_RAX, R_RBP, 0, 0, 176 + 24);
- as_modrm(c.as, OP_STORE, R_RAX, R_RBP, 0, 0, 144);
+ as_modrm(c.s, OP_LOAD, R_RAX, R_RBP, 0, 0, 176 + 24);
+ as_modrm(c.s, OP_STORE, R_RAX, R_RBP, 0, 0, 144);
// flags
- as_modrm(c.as, OP_LOAD, R_RAX, R_RBP, 0, 0, 176 + 32);
- as_modrm(c.as, OP_STORE, R_RAX, R_RBP, 0, 0, 136);
+ as_modrm(c.s, OP_LOAD, R_RAX, R_RBP, 0, 0, 176 + 32);
+ as_modrm(c.s, OP_STORE, R_RAX, R_RBP, 0, 0, 136);
// rsp
- as_modrm(c.as, OP_LOAD, R_RAX, R_RBP, 0, 0, 176 + 40);
- as_modrm(c.as, OP_STORE, R_RAX, R_RBP, 0, 0, 32);
+ as_modrm(c.s, OP_LOAD, R_RAX, R_RBP, 0, 0, 176 + 40);
+ as_modrm(c.s, OP_STORE, R_RAX, R_RBP, 0, 0, 32);
// ss
- as_modrm(c.as, OP_LOAD, R_RAX, R_RBP, 0, 0, 176 + 48);
- as_modrm(c.as, OP_STORE, R_RAX, R_RBP, 0, 0, 152);
+ as_modrm(c.s, OP_LOAD, R_RAX, R_RBP, 0, 0, 176 + 48);
+ as_modrm(c.s, OP_STORE, R_RAX, R_RBP, 0, 0, 152);
d = find(c, "_isr", 0:*byte, 1);
if (d.func_defined && d.func_label.fixed) {
- as_jmp(c.as, OP_CALL, d.func_label);
+ as_jmp(c.s, OP_CALL, d.func_label);
}
// rip
- as_modrm(c.as, OP_LOAD, R_RAX, R_RBP, 0, 0, 128);
- as_modrm(c.as, OP_STORE, R_RAX, R_RBP, 0, 0, 176 + 16);
+ as_modrm(c.s, OP_LOAD, R_RAX, R_RBP, 0, 0, 128);
+ as_modrm(c.s, OP_STORE, R_RAX, R_RBP, 0, 0, 176 + 16);
// cs
- as_modrm(c.as, OP_LOAD, R_RAX, R_RBP, 0, 0, 144);
- as_modrm(c.as, OP_STORE, R_RAX, R_RBP, 0, 0, 176 + 24);
+ as_modrm(c.s, OP_LOAD, R_RAX, R_RBP, 0, 0, 144);
+ as_modrm(c.s, OP_STORE, R_RAX, R_RBP, 0, 0, 176 + 24);
// flags
- as_modrm(c.as, OP_LOAD, R_RAX, R_RBP, 0, 0, 136);
- as_modrm(c.as, OP_STORE, R_RAX, R_RBP, 0, 0, 176 + 32);
+ as_modrm(c.s, OP_LOAD, R_RAX, R_RBP, 0, 0, 136);
+ as_modrm(c.s, OP_STORE, R_RAX, R_RBP, 0, 0, 176 + 32);
// rsp
- as_modrm(c.as, OP_LOAD, R_RAX, R_RBP, 0, 0, 32);
- as_modrm(c.as, OP_STORE, R_RAX, R_RBP, 0, 0, 176 + 40);
+ as_modrm(c.s, OP_LOAD, R_RAX, R_RBP, 0, 0, 32);
+ as_modrm(c.s, OP_STORE, R_RAX, R_RBP, 0, 0, 176 + 40);
// ss
- as_modrm(c.as, OP_LOAD, R_RAX, R_RBP, 0, 0, 152);
- as_modrm(c.as, OP_STORE, R_RAX, R_RBP, 0, 0, 176 + 48);
+ as_modrm(c.s, OP_LOAD, R_RAX, R_RBP, 0, 0, 152);
+ as_modrm(c.s, OP_STORE, R_RAX, R_RBP, 0, 0, 176 + 48);
// restore regs
- as_modrm(c.as, OP_LOAD, R_RAX, R_RBP, 0, 0, 0);
- as_modrm(c.as, OP_LOAD, R_RCX, R_RBP, 0, 0, 8);
- as_modrm(c.as, OP_LOAD, R_RDX, R_RBP, 0, 0, 16);
- as_modrm(c.as, OP_LOAD, R_RBX, R_RBP, 0, 0, 24);
- as_modrm(c.as, OP_LOAD, R_RSI, R_RBP, 0, 0, 48);
- as_modrm(c.as, OP_LOAD, R_RDI, R_RBP, 0, 0, 56);
- as_modrm(c.as, OP_LOAD, R_R8, R_RBP, 0, 0, 64);
- as_modrm(c.as, OP_LOAD, R_R9, R_RBP, 0, 0, 72);
- as_modrm(c.as, OP_LOAD, R_R10, R_RBP, 0, 0, 80);
- as_modrm(c.as, OP_LOAD, R_R11, R_RBP, 0, 0, 88);
- as_modrm(c.as, OP_LOAD, R_R12, R_RBP, 0, 0, 96);
- as_modrm(c.as, OP_LOAD, R_R13, R_RBP, 0, 0, 104);
- as_modrm(c.as, OP_LOAD, R_R14, R_RBP, 0, 0, 112);
- as_modrm(c.as, OP_LOAD, R_R15, R_RBP, 0, 0, 120);
-
- as_modrm(c.as, OP_LOAD, R_RBP, R_RBP, 0, 0, 40);
-
- as_modri(c.as, OP_ADDI, R_RSP, 176 + 3 * 8);
-
- as_op(c.as, OP_IRETQ);
+ as_modrm(c.s, OP_LOAD, R_RAX, R_RBP, 0, 0, 0);
+ as_modrm(c.s, OP_LOAD, R_RCX, R_RBP, 0, 0, 8);
+ as_modrm(c.s, OP_LOAD, R_RDX, R_RBP, 0, 0, 16);
+ as_modrm(c.s, OP_LOAD, R_RBX, R_RBP, 0, 0, 24);
+ as_modrm(c.s, OP_LOAD, R_RSI, R_RBP, 0, 0, 48);
+ as_modrm(c.s, OP_LOAD, R_RDI, R_RBP, 0, 0, 56);
+ as_modrm(c.s, OP_LOAD, R_R8, R_RBP, 0, 0, 64);
+ as_modrm(c.s, OP_LOAD, R_R9, R_RBP, 0, 0, 72);
+ as_modrm(c.s, OP_LOAD, R_R10, R_RBP, 0, 0, 80);
+ as_modrm(c.s, OP_LOAD, R_R11, R_RBP, 0, 0, 88);
+ as_modrm(c.s, OP_LOAD, R_R12, R_RBP, 0, 0, 96);
+ as_modrm(c.s, OP_LOAD, R_R13, R_RBP, 0, 0, 104);
+ as_modrm(c.s, OP_LOAD, R_R14, R_RBP, 0, 0, 112);
+ as_modrm(c.s, OP_LOAD, R_R15, R_RBP, 0, 0, 120);
+
+ as_modrm(c.s, OP_LOAD, R_RBP, R_RBP, 0, 0, 40);
+
+ as_modri(c.s, OP_ADDI, R_RSP, 176 + 3 * 8);
+
+ as_op(c.s, OP_IRETQ);
}
emit_builtin(c: *compiler) {
@@ -1977,596 +1977,596 @@ emit_builtin(c: *compiler) {
d = find(c, "syscall", 0:*byte, 1);
if (d.func_defined && !d.func_label.fixed) {
- fixup_label(c.as, d.func_label);
- add_symbol(c.as, d.name, d.func_label);
- emit_preamble(c.as, 0, 0);
- emit_syscall(c.as);
- emit_ret(c.as);
+ fixup_label(c.s, d.func_label);
+ add_symbol(c.s, d.name, d.func_label);
+ emit_preamble(c.s, 0, 0);
+ emit_syscall(c.s);
+ emit_ret(c.s);
}
d = find(c, "_restorer", 0:*byte, 1);
if (d.func_defined && !d.func_label.fixed) {
- fixup_label(c.as, d.func_label);
- add_symbol(c.as, d.name, d.func_label);
- emit_restorer(c.as);
+ fixup_label(c.s, d.func_label);
+ add_symbol(c.s, d.name, d.func_label);
+ emit_restorer(c.s);
}
d = find(c, "_include", 0:*byte, 1);
if (d.func_defined && !d.func_label.fixed) {
- fixup_label(c.as, d.func_label);
- add_symbol(c.as, d.name, d.func_label);
- emit_preamble(c.as, 0, 0);
- as_op(c.as, OP_UD2);
- as_opr(c.as, OP_PUSHR, R_RAX);
- emit_ret(c.as);
+ fixup_label(c.s, d.func_label);
+ add_symbol(c.s, d.name, d.func_label);
+ emit_preamble(c.s, 0, 0);
+ as_op(c.s, OP_UD2);
+ as_opr(c.s, OP_PUSHR, R_RAX);
+ emit_ret(c.s);
}
d = find(c, "ud2", 0:*byte, 1);
if (d.func_defined && !d.func_label.fixed) {
- fixup_label(c.as, d.func_label);
- add_symbol(c.as, d.name, d.func_label);
- emit_preamble(c.as, 0, 0);
- as_op(c.as, OP_UD2);
- as_opr(c.as, OP_PUSHR, R_RAX);
- emit_ret(c.as);
+ fixup_label(c.s, d.func_label);
+ add_symbol(c.s, d.name, d.func_label);
+ emit_preamble(c.s, 0, 0);
+ as_op(c.s, OP_UD2);
+ as_opr(c.s, OP_PUSHR, R_RAX);
+ emit_ret(c.s);
}
d = find(c, "cpuid", 0:*byte, 1);
if (d.func_defined && !d.func_label.fixed) {
- fixup_label(c.as, d.func_label);
- add_symbol(c.as, d.name, d.func_label);
- emit_preamble(c.as, 0, 0);
- as_modrm(c.as, OP_LOAD, R_RDI, R_RBP, 0, 0, 16);
- as_modrm(c.as, OP_LOAD, R_RAX, R_RDI, 0, 0, 0);
- as_modrm(c.as, OP_LOAD, R_RDI, R_RBP, 0, 0, 24);
- as_modrm(c.as, OP_LOAD, R_RCX, R_RDI, 0, 0, 0);
- as_modrm(c.as, OP_LOAD, R_RDI, R_RBP, 0, 0, 32);
- as_modrm(c.as, OP_LOAD, R_RDX, R_RDI, 0, 0, 0);
- as_modrm(c.as, OP_LOAD, R_RDI, R_RBP, 0, 0, 40);
- as_modrm(c.as, OP_LOAD, R_RBX, R_RDI, 0, 0, 0);
- as_op(c.as, OP_CPUID);
- as_modrm(c.as, OP_LOAD, R_RDI, R_RBP, 0, 0, 16);
- as_modrm(c.as, OP_STORE, R_RAX, R_RDI, 0, 0, 0);
- as_modrm(c.as, OP_LOAD, R_RDI, R_RBP, 0, 0, 24);
- as_modrm(c.as, OP_STORE, R_RCX, R_RDI, 0, 0, 0);
- as_modrm(c.as, OP_LOAD, R_RDI, R_RBP, 0, 0, 32);
- as_modrm(c.as, OP_STORE, R_RDX, R_RDI, 0, 0, 0);
- as_modrm(c.as, OP_LOAD, R_RDI, R_RBP, 0, 0, 40);
- as_modrm(c.as, OP_STORE, R_RBX, R_RDI, 0, 0, 0);
- as_opr(c.as, OP_PUSHR, R_RAX);
- emit_ret(c.as);
+ fixup_label(c.s, d.func_label);
+ add_symbol(c.s, d.name, d.func_label);
+ emit_preamble(c.s, 0, 0);
+ as_modrm(c.s, OP_LOAD, R_RDI, R_RBP, 0, 0, 16);
+ as_modrm(c.s, OP_LOAD, R_RAX, R_RDI, 0, 0, 0);
+ as_modrm(c.s, OP_LOAD, R_RDI, R_RBP, 0, 0, 24);
+ as_modrm(c.s, OP_LOAD, R_RCX, R_RDI, 0, 0, 0);
+ as_modrm(c.s, OP_LOAD, R_RDI, R_RBP, 0, 0, 32);
+ as_modrm(c.s, OP_LOAD, R_RDX, R_RDI, 0, 0, 0);
+ as_modrm(c.s, OP_LOAD, R_RDI, R_RBP, 0, 0, 40);
+ as_modrm(c.s, OP_LOAD, R_RBX, R_RDI, 0, 0, 0);
+ as_op(c.s, OP_CPUID);
+ as_modrm(c.s, OP_LOAD, R_RDI, R_RBP, 0, 0, 16);
+ as_modrm(c.s, OP_STORE, R_RAX, R_RDI, 0, 0, 0);
+ as_modrm(c.s, OP_LOAD, R_RDI, R_RBP, 0, 0, 24);
+ as_modrm(c.s, OP_STORE, R_RCX, R_RDI, 0, 0, 0);
+ as_modrm(c.s, OP_LOAD, R_RDI, R_RBP, 0, 0, 32);
+ as_modrm(c.s, OP_STORE, R_RDX, R_RDI, 0, 0, 0);
+ as_modrm(c.s, OP_LOAD, R_RDI, R_RBP, 0, 0, 40);
+ as_modrm(c.s, OP_STORE, R_RBX, R_RDI, 0, 0, 0);
+ as_opr(c.s, OP_PUSHR, R_RAX);
+ emit_ret(c.s);
}
d = find(c, "inb", 0:*byte, 1);
if (d.func_defined && !d.func_label.fixed) {
- fixup_label(c.as, d.func_label);
- add_symbol(c.as, d.name, d.func_label);
- emit_preamble(c.as, 0, 0);
- as_modrm(c.as, OP_LOAD, R_RDX, R_RBP, 0, 0, 16);
- as_op(c.as, OP_IN);
- as_opr(c.as, OP_PUSHR, R_RAX);
- emit_ret(c.as);
+ fixup_label(c.s, d.func_label);
+ add_symbol(c.s, d.name, d.func_label);
+ emit_preamble(c.s, 0, 0);
+ as_modrm(c.s, OP_LOAD, R_RDX, R_RBP, 0, 0, 16);
+ as_op(c.s, OP_IN);
+ as_opr(c.s, OP_PUSHR, R_RAX);
+ emit_ret(c.s);
}
d = find(c, "outb", 0:*byte, 1);
if (d.func_defined && !d.func_label.fixed) {
- fixup_label(c.as, d.func_label);
- add_symbol(c.as, d.name, d.func_label);
- emit_preamble(c.as, 0, 0);
- as_modrm(c.as, OP_LOAD, R_RDX, R_RBP, 0, 0, 16);
- as_modrm(c.as, OP_LOAD, R_RAX, R_RBP, 0, 0, 24);
- as_op(c.as, OP_OUT);
- as_opr(c.as, OP_PUSHR, R_RAX);
- emit_ret(c.as);
+ fixup_label(c.s, d.func_label);
+ add_symbol(c.s, d.name, d.func_label);
+ emit_preamble(c.s, 0, 0);
+ as_modrm(c.s, OP_LOAD, R_RDX, R_RBP, 0, 0, 16);
+ as_modrm(c.s, OP_LOAD, R_RAX, R_RBP, 0, 0, 24);
+ as_op(c.s, OP_OUT);
+ as_opr(c.s, OP_PUSHR, R_RAX);
+ emit_ret(c.s);
}
d = find(c, "inw", 0:*byte, 1);
if (d.func_defined && !d.func_label.fixed) {
- fixup_label(c.as, d.func_label);
- add_symbol(c.as, d.name, d.func_label);
- emit_preamble(c.as, 0, 0);
- as_modrm(c.as, OP_LOAD, R_RDX, R_RBP, 0, 0, 16);
- as_emit(c.as, OP_OS);
- as_op(c.as, OP_IND);
- as_opr(c.as, OP_PUSHR, R_RAX);
- emit_ret(c.as);
+ fixup_label(c.s, d.func_label);
+ add_symbol(c.s, d.name, d.func_label);
+ emit_preamble(c.s, 0, 0);
+ as_modrm(c.s, OP_LOAD, R_RDX, R_RBP, 0, 0, 16);
+ as_emit(c.s, OP_OS);
+ as_op(c.s, OP_IND);
+ as_opr(c.s, OP_PUSHR, R_RAX);
+ emit_ret(c.s);
}
d = find(c, "outw", 0:*byte, 1);
if (d.func_defined && !d.func_label.fixed) {
- fixup_label(c.as, d.func_label);
- add_symbol(c.as, d.name, d.func_label);
- emit_preamble(c.as, 0, 0);
- as_modrm(c.as, OP_LOAD, R_RDX, R_RBP, 0, 0, 16);
- as_modrm(c.as, OP_LOAD, R_RAX, R_RBP, 0, 0, 24);
- as_emit(c.as, OP_OS);
- as_op(c.as, OP_OUTD);
- as_opr(c.as, OP_PUSHR, R_RAX);
- emit_ret(c.as);
+ fixup_label(c.s, d.func_label);
+ add_symbol(c.s, d.name, d.func_label);
+ emit_preamble(c.s, 0, 0);
+ as_modrm(c.s, OP_LOAD, R_RDX, R_RBP, 0, 0, 16);
+ as_modrm(c.s, OP_LOAD, R_RAX, R_RBP, 0, 0, 24);
+ as_emit(c.s, OP_OS);
+ as_op(c.s, OP_OUTD);
+ as_opr(c.s, OP_PUSHR, R_RAX);
+ emit_ret(c.s);
}
d = find(c, "ind", 0:*byte, 1);
if (d.func_defined && !d.func_label.fixed) {
- fixup_label(c.as, d.func_label);
- add_symbol(c.as, d.name, d.func_label);
- emit_preamble(c.as, 0, 0);
- as_modrm(c.as, OP_LOAD, R_RDX, R_RBP, 0, 0, 16);
- as_op(c.as, OP_IND);
- as_opr(c.as, OP_PUSHR, R_RAX);
- emit_ret(c.as);
+ fixup_label(c.s, d.func_label);
+ add_symbol(c.s, d.name, d.func_label);
+ emit_preamble(c.s, 0, 0);
+ as_modrm(c.s, OP_LOAD, R_RDX, R_RBP, 0, 0, 16);
+ as_op(c.s, OP_IND);
+ as_opr(c.s, OP_PUSHR, R_RAX);
+ emit_ret(c.s);
}
d = find(c, "outd", 0:*byte, 1);
if (d.func_defined && !d.func_label.fixed) {
- fixup_label(c.as, d.func_label);
- add_symbol(c.as, d.name, d.func_label);
- emit_preamble(c.as, 0, 0);
- as_modrm(c.as, OP_LOAD, R_RDX, R_RBP, 0, 0, 16);
- as_modrm(c.as, OP_LOAD, R_RAX, R_RBP, 0, 0, 24);
- as_op(c.as, OP_OUTD);
- as_opr(c.as, OP_PUSHR, R_RAX);
- emit_ret(c.as);
+ fixup_label(c.s, d.func_label);
+ add_symbol(c.s, d.name, d.func_label);
+ emit_preamble(c.s, 0, 0);
+ as_modrm(c.s, OP_LOAD, R_RDX, R_RBP, 0, 0, 16);
+ as_modrm(c.s, OP_LOAD, R_RAX, R_RBP, 0, 0, 24);
+ as_op(c.s, OP_OUTD);
+ as_opr(c.s, OP_PUSHR, R_RAX);
+ emit_ret(c.s);
}
d = find(c, "rdmsr", 0:*byte, 1);
if (d.func_defined && !d.func_label.fixed) {
- fixup_label(c.as, d.func_label);
- add_symbol(c.as, d.name, d.func_label);
- emit_preamble(c.as, 0, 0);
- as_modrm(c.as, OP_LOAD, R_RCX, R_RBP, 0, 0, 16);
- as_op(c.as, OP_RDMSR);
- as_modri(c.as, OP_MOVI, R_RCX, 32);
- as_modr(c.as, OP_SHLM, R_RDX);
- as_modrr(c.as, OP_ORRM, R_RAX, R_RDX);
- as_opr(c.as, OP_PUSHR, R_RAX);
- emit_ret(c.as);
+ fixup_label(c.s, d.func_label);
+ add_symbol(c.s, d.name, d.func_label);
+ emit_preamble(c.s, 0, 0);
+ as_modrm(c.s, OP_LOAD, R_RCX, R_RBP, 0, 0, 16);
+ as_op(c.s, OP_RDMSR);
+ as_modri(c.s, OP_MOVI, R_RCX, 32);
+ as_modr(c.s, OP_SHLM, R_RDX);
+ as_modrr(c.s, OP_ORRM, R_RAX, R_RDX);
+ as_opr(c.s, OP_PUSHR, R_RAX);
+ emit_ret(c.s);
}
d = find(c, "wrmsr", 0:*byte, 1);
if (d.func_defined && !d.func_label.fixed) {
- fixup_label(c.as, d.func_label);
- add_symbol(c.as, d.name, d.func_label);
- emit_preamble(c.as, 0, 0);
- as_modrm(c.as, OP_LOAD, R_RAX, R_RBP, 0, 0, 24);
- as_modrr(c.as, OP_MOVE, R_RDX, R_RAX);
- as_modri(c.as, OP_MOVI, R_RCX, 32);
- as_modr(c.as, OP_SHRM, R_RDX);
- as_modrm(c.as, OP_LOAD, R_RCX, R_RBP, 0, 0, 16);
- as_op(c.as, OP_WRMSR);
- as_opr(c.as, OP_PUSHR, R_RAX);
- emit_ret(c.as);
+ fixup_label(c.s, d.func_label);
+ add_symbol(c.s, d.name, d.func_label);
+ emit_preamble(c.s, 0, 0);
+ as_modrm(c.s, OP_LOAD, R_RAX, R_RBP, 0, 0, 24);
+ as_modrr(c.s, OP_MOVE, R_RDX, R_RAX);
+ as_modri(c.s, OP_MOVI, R_RCX, 32);
+ as_modr(c.s, OP_SHRM, R_RDX);
+ as_modrm(c.s, OP_LOAD, R_RCX, R_RBP, 0, 0, 16);
+ as_op(c.s, OP_WRMSR);
+ as_opr(c.s, OP_PUSHR, R_RAX);
+ emit_ret(c.s);
}
d = find(c, "rdcr0", 0:*byte, 1);
if (d.func_defined && !d.func_label.fixed) {
- fixup_label(c.as, d.func_label);
- add_symbol(c.as, d.name, d.func_label);
- emit_preamble(c.as, 0, 0);
- as_modrr(c.as, OP_RDCRR, R_CR0, R_RAX);
- as_opr(c.as, OP_PUSHR, R_RAX);
- emit_ret(c.as);
+ fixup_label(c.s, d.func_label);
+ add_symbol(c.s, d.name, d.func_label);
+ emit_preamble(c.s, 0, 0);
+ as_modrr(c.s, OP_RDCRR, R_CR0, R_RAX);
+ as_opr(c.s, OP_PUSHR, R_RAX);
+ emit_ret(c.s);
}
d = find(c, "wrcr0", 0:*byte, 1);
if (d.func_defined && !d.func_label.fixed) {
- fixup_label(c.as, d.func_label);
- add_symbol(c.as, d.name, d.func_label);
- emit_preamble(c.as, 0, 0);
- as_modrm(c.as, OP_LOAD, R_RCX, R_RBP, 0, 0, 16);
- as_modrr(c.as, OP_WRCRR, R_CR0, R_RAX);
- as_opr(c.as, OP_PUSHR, R_RAX);
- emit_ret(c.as);
+ fixup_label(c.s, d.func_label);
+ add_symbol(c.s, d.name, d.func_label);
+ emit_preamble(c.s, 0, 0);
+ as_modrm(c.s, OP_LOAD, R_RCX, R_RBP, 0, 0, 16);
+ as_modrr(c.s, OP_WRCRR, R_CR0, R_RAX);
+ as_opr(c.s, OP_PUSHR, R_RAX);
+ emit_ret(c.s);
}
d = find(c, "rdcr2", 0:*byte, 1);
if (d.func_defined && !d.func_label.fixed) {
- fixup_label(c.as, d.func_label);
- add_symbol(c.as, d.name, d.func_label);
- emit_preamble(c.as, 0, 0);
- as_modrr(c.as, OP_RDCRR, R_CR2, R_RAX);
- as_opr(c.as, OP_PUSHR, R_RAX);
- emit_ret(c.as);
+ fixup_label(c.s, d.func_label);
+ add_symbol(c.s, d.name, d.func_label);
+ emit_preamble(c.s, 0, 0);
+ as_modrr(c.s, OP_RDCRR, R_CR2, R_RAX);
+ as_opr(c.s, OP_PUSHR, R_RAX);
+ emit_ret(c.s);
}
d = find(c, "wrcr2", 0:*byte, 1);
if (d.func_defined && !d.func_label.fixed) {
- fixup_label(c.as, d.func_label);
- add_symbol(c.as, d.name, d.func_label);
- emit_preamble(c.as, 0, 0);
- as_modrm(c.as, OP_LOAD, R_RCX, R_RBP, 0, 0, 16);
- as_modrr(c.as, OP_WRCRR, R_CR2, R_RAX);
- as_opr(c.as, OP_PUSHR, R_RAX);
- emit_ret(c.as);
+ fixup_label(c.s, d.func_label);
+ add_symbol(c.s, d.name, d.func_label);
+ emit_preamble(c.s, 0, 0);
+ as_modrm(c.s, OP_LOAD, R_RCX, R_RBP, 0, 0, 16);
+ as_modrr(c.s, OP_WRCRR, R_CR2, R_RAX);
+ as_opr(c.s, OP_PUSHR, R_RAX);
+ emit_ret(c.s);
}
d = find(c, "rdcr3", 0:*byte, 1);
if (d.func_defined && !d.func_label.fixed) {
- fixup_label(c.as, d.func_label);
- add_symbol(c.as, d.name, d.func_label);
- emit_preamble(c.as, 0, 0);
- as_modrr(c.as, OP_RDCRR, R_CR3, R_RAX);
- as_opr(c.as, OP_PUSHR, R_RAX);
- emit_ret(c.as);
+ fixup_label(c.s, d.func_label);
+ add_symbol(c.s, d.name, d.func_label);
+ emit_preamble(c.s, 0, 0);
+ as_modrr(c.s, OP_RDCRR, R_CR3, R_RAX);
+ as_opr(c.s, OP_PUSHR, R_RAX);
+ emit_ret(c.s);
}
d = find(c, "wrcr3", 0:*byte, 1);
if (d.func_defined && !d.func_label.fixed) {
- fixup_label(c.as, d.func_label);
- add_symbol(c.as, d.name, d.func_label);
- emit_preamble(c.as, 0, 0);
- as_modrm(c.as, OP_LOAD, R_RCX, R_RBP, 0, 0, 16);
- as_modrr(c.as, OP_WRCRR, R_CR3, R_RAX);
- as_opr(c.as, OP_PUSHR, R_RAX);
- emit_ret(c.as);
+ fixup_label(c.s, d.func_label);
+ add_symbol(c.s, d.name, d.func_label);
+ emit_preamble(c.s, 0, 0);
+ as_modrm(c.s, OP_LOAD, R_RCX, R_RBP, 0, 0, 16);
+ as_modrr(c.s, OP_WRCRR, R_CR3, R_RAX);
+ as_opr(c.s, OP_PUSHR, R_RAX);
+ emit_ret(c.s);
}
d = find(c, "rdcr4", 0:*byte, 1);
if (d.func_defined && !d.func_label.fixed) {
- fixup_label(c.as, d.func_label);
- add_symbol(c.as, d.name, d.func_label);
- emit_preamble(c.as, 0, 0);
- as_modrr(c.as, OP_RDCRR, R_CR4, R_RAX);
- as_opr(c.as, OP_PUSHR, R_RAX);
- emit_ret(c.as);
+ fixup_label(c.s, d.func_label);
+ add_symbol(c.s, d.name, d.func_label);
+ emit_preamble(c.s, 0, 0);
+ as_modrr(c.s, OP_RDCRR, R_CR4, R_RAX);
+ as_opr(c.s, OP_PUSHR, R_RAX);
+ emit_ret(c.s);
}
d = find(c, "wrcr4", 0:*byte, 1);
if (d.func_defined && !d.func_label.fixed) {
- fixup_label(c.as, d.func_label);
- add_symbol(c.as, d.name, d.func_label);
- emit_preamble(c.as, 0, 0);
- as_modrm(c.as, OP_LOAD, R_RCX, R_RBP, 0, 0, 16);
- as_modrr(c.as, OP_WRCRR, R_CR4, R_RAX);
- as_opr(c.as, OP_PUSHR, R_RAX);
- emit_ret(c.as);
+ fixup_label(c.s, d.func_label);
+ add_symbol(c.s, d.name, d.func_label);
+ emit_preamble(c.s, 0, 0);
+ as_modrm(c.s, OP_LOAD, R_RCX, R_RBP, 0, 0, 16);
+ as_modrr(c.s, OP_WRCRR, R_CR4, R_RAX);
+ as_opr(c.s, OP_PUSHR, R_RAX);
+ emit_ret(c.s);
}
d = find(c, "lgdt", 0:*byte, 1);
if (d.func_defined && !d.func_label.fixed) {
- fixup_label(c.as, d.func_label);
- add_symbol(c.as, d.name, d.func_label);
- emit_preamble(c.as, 0, 0);
- as_modri(c.as, OP_SUBI, R_RSP, 16);
- as_modrm(c.as, OP_LOAD, R_RAX, R_RBP, 0, 0, 24);
- as_modri(c.as, OP_SUBI, R_RAX, 1);
- as_modrm(c.as, OP_STORE, R_RAX, R_RSP, 0, 0, 0);
- as_modrm(c.as, OP_LOAD, R_RAX, R_RBP, 0, 0, 16);
- as_modrm(c.as, OP_STORE, R_RAX, R_RSP, 0, 0, 2);
- as_modm(c.as, OP_LGDTM, R_RSP, 0, 0, 0);
- as_modri(c.as, OP_ADDI, R_RSP, 16);
- as_opr(c.as, OP_PUSHR, R_RAX);
- emit_ret(c.as);
+ fixup_label(c.s, d.func_label);
+ add_symbol(c.s, d.name, d.func_label);
+ emit_preamble(c.s, 0, 0);
+ as_modri(c.s, OP_SUBI, R_RSP, 16);
+ as_modrm(c.s, OP_LOAD, R_RAX, R_RBP, 0, 0, 24);
+ as_modri(c.s, OP_SUBI, R_RAX, 1);
+ as_modrm(c.s, OP_STORE, R_RAX, R_RSP, 0, 0, 0);
+ as_modrm(c.s, OP_LOAD, R_RAX, R_RBP, 0, 0, 16);
+ as_modrm(c.s, OP_STORE, R_RAX, R_RSP, 0, 0, 2);
+ as_modm(c.s, OP_LGDTM, R_RSP, 0, 0, 0);
+ as_modri(c.s, OP_ADDI, R_RSP, 16);
+ as_opr(c.s, OP_PUSHR, R_RAX);
+ emit_ret(c.s);
}
d = find(c, "lidt", 0:*byte, 1);
if (d.func_defined && !d.func_label.fixed) {
- fixup_label(c.as, d.func_label);
- add_symbol(c.as, d.name, d.func_label);
- emit_preamble(c.as, 0, 0);
- as_modri(c.as, OP_SUBI, R_RSP, 16);
- as_modrm(c.as, OP_LOAD, R_RAX, R_RBP, 0, 0, 24);
- as_modri(c.as, OP_SUBI, R_RAX, 1);
- as_modrm(c.as, OP_STORE, R_RAX, R_RSP, 0, 0, 0);
- as_modrm(c.as, OP_LOAD, R_RAX, R_RBP, 0, 0, 16);
- as_modrm(c.as, OP_STORE, R_RAX, R_RSP, 0, 0, 2);
- as_modm(c.as, OP_LIDTM, R_RSP, 0, 0, 0);
- as_modri(c.as, OP_ADDI, R_RSP, 16);
- as_opr(c.as, OP_PUSHR, R_RAX);
- emit_ret(c.as);
+ fixup_label(c.s, d.func_label);
+ add_symbol(c.s, d.name, d.func_label);
+ emit_preamble(c.s, 0, 0);
+ as_modri(c.s, OP_SUBI, R_RSP, 16);
+ as_modrm(c.s, OP_LOAD, R_RAX, R_RBP, 0, 0, 24);
+ as_modri(c.s, OP_SUBI, R_RAX, 1);
+ as_modrm(c.s, OP_STORE, R_RAX, R_RSP, 0, 0, 0);
+ as_modrm(c.s, OP_LOAD, R_RAX, R_RBP, 0, 0, 16);
+ as_modrm(c.s, OP_STORE, R_RAX, R_RSP, 0, 0, 2);
+ as_modm(c.s, OP_LIDTM, R_RSP, 0, 0, 0);
+ as_modri(c.s, OP_ADDI, R_RSP, 16);
+ as_opr(c.s, OP_PUSHR, R_RAX);
+ emit_ret(c.s);
}
d = find(c, "lldt", 0:*byte, 1);
if (d.func_defined && !d.func_label.fixed) {
- fixup_label(c.as, d.func_label);
- add_symbol(c.as, d.name, d.func_label);
- emit_preamble(c.as, 0, 0);
- as_modrm(c.as, OP_LOAD, R_RAX, R_RBP, 0, 0, 16);
- as_modr(c.as, OP_LLDTM, R_RAX);
- as_opr(c.as, OP_PUSHR, R_RAX);
- emit_ret(c.as);
+ fixup_label(c.s, d.func_label);
+ add_symbol(c.s, d.name, d.func_label);
+ emit_preamble(c.s, 0, 0);
+ as_modrm(c.s, OP_LOAD, R_RAX, R_RBP, 0, 0, 16);
+ as_modr(c.s, OP_LLDTM, R_RAX);
+ as_opr(c.s, OP_PUSHR, R_RAX);
+ emit_ret(c.s);
}
d = find(c, "ltr", 0:*byte, 1);
if (d.func_defined && !d.func_label.fixed) {
- fixup_label(c.as, d.func_label);
- add_symbol(c.as, d.name, d.func_label);
- emit_preamble(c.as, 0, 0);
- as_modrm(c.as, OP_LOAD, R_RAX, R_RBP, 0, 0, 16);
- as_modr(c.as, OP_LTRM, R_RAX);
- as_opr(c.as, OP_PUSHR, R_RAX);
- emit_ret(c.as);
+ fixup_label(c.s, d.func_label);
+ add_symbol(c.s, d.name, d.func_label);
+ emit_preamble(c.s, 0, 0);
+ as_modrm(c.s, OP_LOAD, R_RAX, R_RBP, 0, 0, 16);
+ as_modr(c.s, OP_LTRM, R_RAX);
+ as_opr(c.s, OP_PUSHR, R_RAX);
+ emit_ret(c.s);
}
d = find(c, "lseg", 0:*byte, 1);
if (d.func_defined && !d.func_label.fixed) {
- fixup_label(c.as, d.func_label);
- add_symbol(c.as, d.name, d.func_label);
- emit_preamble(c.as, 0, 0);
+ fixup_label(c.s, d.func_label);
+ add_symbol(c.s, d.name, d.func_label);
+ emit_preamble(c.s, 0, 0);
// es ds fs gs
- as_modrm(c.as, OP_LOAD, R_RAX, R_RBP, 0, 0, 24);
- as_modrr(c.as, OP_WRSR, R_ES, R_RAX);
- as_modrr(c.as, OP_WRSR, R_DS, R_RAX);
- as_modrr(c.as, OP_WRSR, R_FS, R_RAX);
- as_modrr(c.as, OP_WRSR, R_GS, R_RAX);
+ as_modrm(c.s, OP_LOAD, R_RAX, R_RBP, 0, 0, 24);
+ as_modrr(c.s, OP_WRSR, R_ES, R_RAX);
+ as_modrr(c.s, OP_WRSR, R_DS, R_RAX);
+ as_modrr(c.s, OP_WRSR, R_FS, R_RAX);
+ as_modrr(c.s, OP_WRSR, R_GS, R_RAX);
// ss
- as_opr(c.as, OP_PUSHR, R_RAX);
+ as_opr(c.s, OP_PUSHR, R_RAX);
// rsp
- as_opr(c.as, OP_PUSHR, R_RBP);
+ as_opr(c.s, OP_PUSHR, R_RBP);
// flags
- as_op(c.as, OP_PUSHF);
+ as_op(c.s, OP_PUSHF);
// cs
- as_modrm(c.as, OP_LOAD, R_RAX, R_RBP, 0, 0, 16);
- as_opr(c.as, OP_PUSHR, R_RAX);
+ as_modrm(c.s, OP_LOAD, R_RAX, R_RBP, 0, 0, 16);
+ as_opr(c.s, OP_PUSHR, R_RAX);
// rip
- as_op(c.as, OP_CALL);
- as_emit(c.as, 5);
- as_emit(c.as, 0);
- as_emit(c.as, 0);
- as_emit(c.as, 0);
- as_op(c.as, OP_JMP);
- as_emit(c.as, 2);
- as_emit(c.as, 0);
- as_emit(c.as, 0);
- as_emit(c.as, 0);
- as_op(c.as, OP_IRETQ);
- as_opr(c.as, OP_PUSHR, R_RAX);
- emit_ret(c.as);
+ as_op(c.s, OP_CALL);
+ as_emit(c.s, 5);
+ as_emit(c.s, 0);
+ as_emit(c.s, 0);
+ as_emit(c.s, 0);
+ as_op(c.s, OP_JMP);
+ as_emit(c.s, 2);
+ as_emit(c.s, 0);
+ as_emit(c.s, 0);
+ as_emit(c.s, 0);
+ as_op(c.s, OP_IRETQ);
+ as_opr(c.s, OP_PUSHR, R_RAX);
+ emit_ret(c.s);
}
d = find(c, "hlt", 0:*byte, 1);
if (d.func_defined && !d.func_label.fixed) {
- fixup_label(c.as, d.func_label);
- add_symbol(c.as, d.name, d.func_label);
- emit_preamble(c.as, 0, 0);
- as_op(c.as, OP_HLT);
- as_opr(c.as, OP_PUSHR, R_RAX);
- emit_ret(c.as);
+ fixup_label(c.s, d.func_label);
+ add_symbol(c.s, d.name, d.func_label);
+ emit_preamble(c.s, 0, 0);
+ as_op(c.s, OP_HLT);
+ as_opr(c.s, OP_PUSHR, R_RAX);
+ emit_ret(c.s);
}
d = find(c, "cli", 0:*byte, 1);
if (d.func_defined && !d.func_label.fixed) {
- fixup_label(c.as, d.func_label);
- add_symbol(c.as, d.name, d.func_label);
- emit_preamble(c.as, 0, 0);
- as_op(c.as, OP_CLI);
- as_opr(c.as, OP_PUSHR, R_RAX);
- emit_ret(c.as);
+ fixup_label(c.s, d.func_label);
+ add_symbol(c.s, d.name, d.func_label);
+ emit_preamble(c.s, 0, 0);
+ as_op(c.s, OP_CLI);
+ as_opr(c.s, OP_PUSHR, R_RAX);
+ emit_ret(c.s);
}
d = find(c, "sti", 0:*byte, 1);
if (d.func_defined && !d.func_label.fixed) {
- fixup_label(c.as, d.func_label);
- add_symbol(c.as, d.name, d.func_label);
- emit_preamble(c.as, 0, 0);
- as_op(c.as, OP_STI);
- as_opr(c.as, OP_PUSHR, R_RAX);
- emit_ret(c.as);
+ fixup_label(c.s, d.func_label);
+ add_symbol(c.s, d.name, d.func_label);
+ emit_preamble(c.s, 0, 0);
+ as_op(c.s, OP_STI);
+ as_opr(c.s, OP_PUSHR, R_RAX);
+ emit_ret(c.s);
}
d = find(c, "rdflags", 0:*byte, 1);
if (d.func_defined && !d.func_label.fixed) {
- fixup_label(c.as, d.func_label);
- add_symbol(c.as, d.name, d.func_label);
- emit_preamble(c.as, 0, 0);
- as_op(c.as, OP_PUSHF);
- emit_ret(c.as);
+ fixup_label(c.s, d.func_label);
+ add_symbol(c.s, d.name, d.func_label);
+ emit_preamble(c.s, 0, 0);
+ as_op(c.s, OP_PUSHF);
+ emit_ret(c.s);
}
d = find(c, "wrflags", 0:*byte, 1);
if (d.func_defined && !d.func_label.fixed) {
- fixup_label(c.as, d.func_label);
- add_symbol(c.as, d.name, d.func_label);
- emit_preamble(c.as, 0, 0);
- as_op(c.as, OP_PUSHF);
- as_modrm(c.as, OP_LOAD, R_RAX, R_RBP, 0, 0, 16);
- as_opr(c.as, OP_PUSHR, R_RAX);
- as_op(c.as, OP_POPF);
- emit_ret(c.as);
+ fixup_label(c.s, d.func_label);
+ add_symbol(c.s, d.name, d.func_label);
+ emit_preamble(c.s, 0, 0);
+ as_op(c.s, OP_PUSHF);
+ as_modrm(c.s, OP_LOAD, R_RAX, R_RBP, 0, 0, 16);
+ as_opr(c.s, OP_PUSHR, R_RAX);
+ as_op(c.s, OP_POPF);
+ emit_ret(c.s);
}
d = find(c, "wbinvld", 0:*byte, 1);
if (d.func_defined && !d.func_label.fixed) {
- fixup_label(c.as, d.func_label);
- add_symbol(c.as, d.name, d.func_label);
- emit_preamble(c.as, 0, 0);
- as_modrm(c.as, OP_LOAD, R_RAX, R_RBP, 0, 0, 16);
- as_modm(c.as, OP_WBINVD, R_RAX, 0, 0, 0);
- as_opr(c.as, OP_PUSHR, R_RAX);
- emit_ret(c.as);
+ fixup_label(c.s, d.func_label);
+ add_symbol(c.s, d.name, d.func_label);
+ emit_preamble(c.s, 0, 0);
+ as_modrm(c.s, OP_LOAD, R_RAX, R_RBP, 0, 0, 16);
+ as_modm(c.s, OP_WBINVD, R_RAX, 0, 0, 0);
+ as_opr(c.s, OP_PUSHR, R_RAX);
+ emit_ret(c.s);
}
d = find(c, "invlpg", 0:*byte, 1);
if (d.func_defined && !d.func_label.fixed) {
- fixup_label(c.as, d.func_label);
- add_symbol(c.as, d.name, d.func_label);
- emit_preamble(c.as, 0, 0);
- as_modrm(c.as, OP_LOAD, R_RAX, R_RBP, 0, 0, 16);
- as_modm(c.as, OP_INVLPGM, R_RAX, 0, 0, 0);
- as_opr(c.as, OP_PUSHR, R_RAX);
- emit_ret(c.as);
+ fixup_label(c.s, d.func_label);
+ add_symbol(c.s, d.name, d.func_label);
+ emit_preamble(c.s, 0, 0);
+ as_modrm(c.s, OP_LOAD, R_RAX, R_RBP, 0, 0, 16);
+ as_modm(c.s, OP_INVLPGM, R_RAX, 0, 0, 0);
+ as_opr(c.s, OP_PUSHR, R_RAX);
+ emit_ret(c.s);
}
d = find(c, "_ssr0", 0:*byte, 1);
if (d.func_defined && !d.func_label.fixed) {
- fixup_label(c.as, d.func_label);
- add_symbol(c.as, d.name, d.func_label);
+ fixup_label(c.s, d.func_label);
+ add_symbol(c.s, d.name, d.func_label);
emit_ssr(c);
}
d = find(c, "_isr0", 0:*byte, 1);
if (d.func_defined && !d.func_label.fixed) {
- fixup_label(c.as, d.func_label);
- add_symbol(c.as, d.name, d.func_label);
+ fixup_label(c.s, d.func_label);
+ add_symbol(c.s, d.name, d.func_label);
emit_isr(c);
}
d = find(c, "_rgs", 0:*byte, 1);
if (d.func_defined && !d.func_label.fixed) {
- fixup_label(c.as, d.func_label);
- add_symbol(c.as, d.name, d.func_label);
- emit_preamble(c.as, 0, 0);
- as_modrm(c.as, OP_LOAD, R_RSI, R_RBP, 0, 0, 16);
- as_emit(c.as, OP_GS);
- as_modrm(c.as, OP_LOAD, R_RAX, R_RSI, 0, 0, 0);
- as_opr(c.as, OP_PUSHR, R_RAX);
- emit_ret(c.as);
+ fixup_label(c.s, d.func_label);
+ add_symbol(c.s, d.name, d.func_label);
+ emit_preamble(c.s, 0, 0);
+ as_modrm(c.s, OP_LOAD, R_RSI, R_RBP, 0, 0, 16);
+ as_emit(c.s, OP_GS);
+ as_modrm(c.s, OP_LOAD, R_RAX, R_RSI, 0, 0, 0);
+ as_opr(c.s, OP_PUSHR, R_RAX);
+ emit_ret(c.s);
}
d = find(c, "_r32", 0:*byte, 1);
if (d.func_defined && !d.func_label.fixed) {
- fixup_label(c.as, d.func_label);
- add_symbol(c.as, d.name, d.func_label);
- emit_preamble(c.as, 0, 0);
- as_modrm(c.as, OP_LOAD, R_RSI, R_RBP, 0, 0, 16);
- c.as.bits32 = 1;
- as_modrm(c.as, OP_LOAD, R_RAX, R_RSI, 0, 0, 0);
- c.as.bits32 = 0;
- as_opr(c.as, OP_PUSHR, R_RAX);
- emit_ret(c.as);
+ fixup_label(c.s, d.func_label);
+ add_symbol(c.s, d.name, d.func_label);
+ emit_preamble(c.s, 0, 0);
+ as_modrm(c.s, OP_LOAD, R_RSI, R_RBP, 0, 0, 16);
+ c.s.bits32 = 1;
+ as_modrm(c.s, OP_LOAD, R_RAX, R_RSI, 0, 0, 0);
+ c.s.bits32 = 0;
+ as_opr(c.s, OP_PUSHR, R_RAX);
+ emit_ret(c.s);
}
d = find(c, "_w32", 0:*byte, 1);
if (d.func_defined && !d.func_label.fixed) {
- fixup_label(c.as, d.func_label);
- add_symbol(c.as, d.name, d.func_label);
- emit_preamble(c.as, 0, 0);
- as_modrm(c.as, OP_LOAD, R_RDI, R_RBP, 0, 0, 16);
- as_modrm(c.as, OP_LOAD, R_RAX, R_RBP, 0, 0, 24);
- c.as.bits32 = 1;
- as_modrm(c.as, OP_STORE, R_RAX, R_RDI, 0, 0, 0);
- c.as.bits32 = 0;
- as_opr(c.as, OP_PUSHR, R_RAX);
- emit_ret(c.as);
+ fixup_label(c.s, d.func_label);
+ add_symbol(c.s, d.name, d.func_label);
+ emit_preamble(c.s, 0, 0);
+ as_modrm(c.s, OP_LOAD, R_RDI, R_RBP, 0, 0, 16);
+ as_modrm(c.s, OP_LOAD, R_RAX, R_RBP, 0, 0, 24);
+ c.s.bits32 = 1;
+ as_modrm(c.s, OP_STORE, R_RAX, R_RDI, 0, 0, 0);
+ c.s.bits32 = 0;
+ as_opr(c.s, OP_PUSHR, R_RAX);
+ emit_ret(c.s);
}
d = find(c, "_r16", 0:*byte, 1);
if (d.func_defined && !d.func_label.fixed) {
- fixup_label(c.as, d.func_label);
- add_symbol(c.as, d.name, d.func_label);
- emit_preamble(c.as, 0, 0);
- as_modrm(c.as, OP_LOAD, R_RSI, R_RBP, 0, 0, 16);
- as_modrr(c.as, OP_XORRM, R_RAX, R_RAX);
- c.as.bits32 = 1;
- as_modrm(c.as, OP_LOAD16, R_RAX, R_RDI, 0, 0, 0);
- c.as.bits32 = 0;
- as_opr(c.as, OP_PUSHR, R_RAX);
- emit_ret(c.as);
+ fixup_label(c.s, d.func_label);
+ add_symbol(c.s, d.name, d.func_label);
+ emit_preamble(c.s, 0, 0);
+ as_modrm(c.s, OP_LOAD, R_RSI, R_RBP, 0, 0, 16);
+ as_modrr(c.s, OP_XORRM, R_RAX, R_RAX);
+ c.s.bits32 = 1;
+ as_modrm(c.s, OP_LOAD16, R_RAX, R_RDI, 0, 0, 0);
+ c.s.bits32 = 0;
+ as_opr(c.s, OP_PUSHR, R_RAX);
+ emit_ret(c.s);
}
d = find(c, "_w16", 0:*byte, 1);
if (d.func_defined && !d.func_label.fixed) {
- fixup_label(c.as, d.func_label);
- add_symbol(c.as, d.name, d.func_label);
- emit_preamble(c.as, 0, 0);
- as_modrm(c.as, OP_LOAD, R_RDI, R_RBP, 0, 0, 16);
- as_modrm(c.as, OP_LOAD, R_RAX, R_RBP, 0, 0, 24);
- c.as.bits32 = 1;
- as_modrm(c.as, OP_STORE16, R_RAX, R_RDI, 0, 0, 0);
- c.as.bits32 = 0;
- as_opr(c.as, OP_PUSHR, R_RAX);
- emit_ret(c.as);
+ fixup_label(c.s, d.func_label);
+ add_symbol(c.s, d.name, d.func_label);
+ emit_preamble(c.s, 0, 0);
+ as_modrm(c.s, OP_LOAD, R_RDI, R_RBP, 0, 0, 16);
+ as_modrm(c.s, OP_LOAD, R_RAX, R_RBP, 0, 0, 24);
+ c.s.bits32 = 1;
+ as_modrm(c.s, OP_STORE16, R_RAX, R_RDI, 0, 0, 0);
+ c.s.bits32 = 0;
+ as_opr(c.s, OP_PUSHR, R_RAX);
+ emit_ret(c.s);
}
d = find(c, "_rdrand", 0:*byte, 1);
if (d.func_defined && !d.func_label.fixed) {
- fixup_label(c.as, d.func_label);
- add_symbol(c.as, d.name, d.func_label);
- emit_preamble(c.as, 0, 0);
- as_modr(c.as, OP_RDRAND, R_RAX);
- as_opr(c.as, OP_PUSHR, R_RAX);
- emit_ret(c.as);
+ fixup_label(c.s, d.func_label);
+ add_symbol(c.s, d.name, d.func_label);
+ emit_preamble(c.s, 0, 0);
+ as_modr(c.s, OP_RDRAND, R_RAX);
+ as_opr(c.s, OP_PUSHR, R_RAX);
+ emit_ret(c.s);
}
d = find(c, "taskswitch", 0:*byte, 1);
if (d.func_defined && !d.func_label.fixed) {
- fixup_label(c.as, d.func_label);
- add_symbol(c.as, d.name, d.func_label);
+ fixup_label(c.s, d.func_label);
+ add_symbol(c.s, d.name, d.func_label);
- as_opr(c.as, OP_PUSHR, R_RBP);
- as_op(c.as, OP_PUSHF);
+ as_opr(c.s, OP_PUSHR, R_RBP);
+ as_op(c.s, OP_PUSHF);
- as_modrm(c.as, OP_LOAD, R_RBP, R_RSP, 0, 0, 24);
+ as_modrm(c.s, OP_LOAD, R_RBP, R_RSP, 0, 0, 24);
// save
- as_modrm(c.as, OP_STORE, R_RAX, R_RBP, 0, 0, 0);
- as_modrm(c.as, OP_STORE, R_RCX, R_RBP, 0, 0, 8);
- as_modrm(c.as, OP_STORE, R_RDX, R_RBP, 0, 0, 16);
- as_modrm(c.as, OP_STORE, R_RBX, R_RBP, 0, 0, 24);
+ as_modrm(c.s, OP_STORE, R_RAX, R_RBP, 0, 0, 0);
+ as_modrm(c.s, OP_STORE, R_RCX, R_RBP, 0, 0, 8);
+ as_modrm(c.s, OP_STORE, R_RDX, R_RBP, 0, 0, 16);
+ as_modrm(c.s, OP_STORE, R_RBX, R_RBP, 0, 0, 24);
// rsp
- as_modrm(c.as, OP_LEA, R_RAX, R_RSP, 0, 0, 24);
- as_modrm(c.as, OP_STORE, R_RAX, R_RBP, 0, 0, 32);
+ as_modrm(c.s, OP_LEA, R_RAX, R_RSP, 0, 0, 24);
+ as_modrm(c.s, OP_STORE, R_RAX, R_RBP, 0, 0, 32);
// rbp
- as_modrm(c.as, OP_LOAD, R_RAX, R_RSP, 0, 0, 8);
- as_modrm(c.as, OP_STORE, R_RAX, R_RBP, 0, 0, 40);
-
- as_modrm(c.as, OP_STORE, R_RSI, R_RBP, 0, 0, 48);
- as_modrm(c.as, OP_STORE, R_RDI, R_RBP, 0, 0, 56);
- as_modrm(c.as, OP_STORE, R_R8, R_RBP, 0, 0, 64);
- as_modrm(c.as, OP_STORE, R_R9, R_RBP, 0, 0, 72);
- as_modrm(c.as, OP_STORE, R_R10, R_RBP, 0, 0, 80);
- as_modrm(c.as, OP_STORE, R_R11, R_RBP, 0, 0, 88);
- as_modrm(c.as, OP_STORE, R_R12, R_RBP, 0, 0, 96);
- as_modrm(c.as, OP_STORE, R_R13, R_RBP, 0, 0, 104);
- as_modrm(c.as, OP_STORE, R_R14, R_RBP, 0, 0, 112);
- as_modrm(c.as, OP_STORE, R_R15, R_RBP, 0, 0, 120);
+ as_modrm(c.s, OP_LOAD, R_RAX, R_RSP, 0, 0, 8);
+ as_modrm(c.s, OP_STORE, R_RAX, R_RBP, 0, 0, 40);
+
+ as_modrm(c.s, OP_STORE, R_RSI, R_RBP, 0, 0, 48);
+ as_modrm(c.s, OP_STORE, R_RDI, R_RBP, 0, 0, 56);
+ as_modrm(c.s, OP_STORE, R_R8, R_RBP, 0, 0, 64);
+ as_modrm(c.s, OP_STORE, R_R9, R_RBP, 0, 0, 72);
+ as_modrm(c.s, OP_STORE, R_R10, R_RBP, 0, 0, 80);
+ as_modrm(c.s, OP_STORE, R_R11, R_RBP, 0, 0, 88);
+ as_modrm(c.s, OP_STORE, R_R12, R_RBP, 0, 0, 96);
+ as_modrm(c.s, OP_STORE, R_R13, R_RBP, 0, 0, 104);
+ as_modrm(c.s, OP_STORE, R_R14, R_RBP, 0, 0, 112);
+ as_modrm(c.s, OP_STORE, R_R15, R_RBP, 0, 0, 120);
// rip
- as_modrm(c.as, OP_LOAD, R_RAX, R_RSP, 0, 0, 16);
- as_modrm(c.as, OP_STORE, R_RAX, R_RBP, 0, 0, 128);
+ as_modrm(c.s, OP_LOAD, R_RAX, R_RSP, 0, 0, 16);
+ as_modrm(c.s, OP_STORE, R_RAX, R_RBP, 0, 0, 128);
// flags
- as_modrm(c.as, OP_LOAD, R_RAX, R_RSP, 0, 0, 0);
- as_modrm(c.as, OP_STORE, R_RAX, R_RBP, 0, 0, 136);
+ as_modrm(c.s, OP_LOAD, R_RAX, R_RSP, 0, 0, 0);
+ as_modrm(c.s, OP_STORE, R_RAX, R_RBP, 0, 0, 136);
// cs
- as_modrr(c.as, OP_RDSR, R_CS, R_RAX);
- as_modrm(c.as, OP_STORE, R_RAX, R_RBP, 0, 0, 144);
+ as_modrr(c.s, OP_RDSR, R_CS, R_RAX);
+ as_modrm(c.s, OP_STORE, R_RAX, R_RBP, 0, 0, 144);
// ss
- as_modrr(c.as, OP_RDSR, R_SS, R_RAX);
- as_modrm(c.as, OP_STORE, R_RAX, R_RBP, 0, 0, 152);
+ as_modrr(c.s, OP_RDSR, R_SS, R_RAX);
+ as_modrm(c.s, OP_STORE, R_RAX, R_RBP, 0, 0, 152);
- as_modrm(c.as, OP_LOAD, R_RBP, R_RSP, 0, 0, 32);
+ as_modrm(c.s, OP_LOAD, R_RBP, R_RSP, 0, 0, 32);
// restore
- as_modrm(c.as, OP_LOAD, R_RCX, R_RBP, 0, 0, 8);
- as_modrm(c.as, OP_LOAD, R_RDX, R_RBP, 0, 0, 16);
- as_modrm(c.as, OP_LOAD, R_RBX, R_RBP, 0, 0, 24);
- as_modrm(c.as, OP_LOAD, R_RSI, R_RBP, 0, 0, 48);
- as_modrm(c.as, OP_LOAD, R_RDI, R_RBP, 0, 0, 56);
- as_modrm(c.as, OP_LOAD, R_R8, R_RBP, 0, 0, 64);
- as_modrm(c.as, OP_LOAD, R_R9, R_RBP, 0, 0, 72);
- as_modrm(c.as, OP_LOAD, R_R10, R_RBP, 0, 0, 80);
- as_modrm(c.as, OP_LOAD, R_R11, R_RBP, 0, 0, 88);
- as_modrm(c.as, OP_LOAD, R_R12, R_RBP, 0, 0, 96);
- as_modrm(c.as, OP_LOAD, R_R13, R_RBP, 0, 0, 104);
- as_modrm(c.as, OP_LOAD, R_R14, R_RBP, 0, 0, 112);
- as_modrm(c.as, OP_LOAD, R_R15, R_RBP, 0, 0, 120);
+ as_modrm(c.s, OP_LOAD, R_RCX, R_RBP, 0, 0, 8);
+ as_modrm(c.s, OP_LOAD, R_RDX, R_RBP, 0, 0, 16);
+ as_modrm(c.s, OP_LOAD, R_RBX, R_RBP, 0, 0, 24);
+ as_modrm(c.s, OP_LOAD, R_RSI, R_RBP, 0, 0, 48);
+ as_modrm(c.s, OP_LOAD, R_RDI, R_RBP, 0, 0, 56);
+ as_modrm(c.s, OP_LOAD, R_R8, R_RBP, 0, 0, 64);
+ as_modrm(c.s, OP_LOAD, R_R9, R_RBP, 0, 0, 72);
+ as_modrm(c.s, OP_LOAD, R_R10, R_RBP, 0, 0, 80);
+ as_modrm(c.s, OP_LOAD, R_R11, R_RBP, 0, 0, 88);
+ as_modrm(c.s, OP_LOAD, R_R12, R_RBP, 0, 0, 96);
+ as_modrm(c.s, OP_LOAD, R_R13, R_RBP, 0, 0, 104);
+ as_modrm(c.s, OP_LOAD, R_R14, R_RBP, 0, 0, 112);
+ as_modrm(c.s, OP_LOAD, R_R15, R_RBP, 0, 0, 120);
// ss
- as_modrm(c.as, OP_LOAD, R_RAX, R_RBP, 0, 0, 152);
- as_opr(c.as, OP_PUSHR, R_RAX);
+ as_modrm(c.s, OP_LOAD, R_RAX, R_RBP, 0, 0, 152);
+ as_opr(c.s, OP_PUSHR, R_RAX);
// rsp
- as_modrm(c.as, OP_LOAD, R_RAX, R_RBP, 0, 0, 32);
- as_opr(c.as, OP_PUSHR, R_RAX);
+ as_modrm(c.s, OP_LOAD, R_RAX, R_RBP, 0, 0, 32);
+ as_opr(c.s, OP_PUSHR, R_RAX);
// flags
- as_modrm(c.as, OP_LOAD, R_RAX, R_RBP, 0, 0, 136);
- as_opr(c.as, OP_PUSHR, R_RAX);
+ as_modrm(c.s, OP_LOAD, R_RAX, R_RBP, 0, 0, 136);
+ as_opr(c.s, OP_PUSHR, R_RAX);
// cs
- as_modrm(c.as, OP_LOAD, R_RAX, R_RBP, 0, 0, 144);
- as_opr(c.as, OP_PUSHR, R_RAX);
+ as_modrm(c.s, OP_LOAD, R_RAX, R_RBP, 0, 0, 144);
+ as_opr(c.s, OP_PUSHR, R_RAX);
// rip
- as_modrm(c.as, OP_LOAD, R_RAX, R_RBP, 0, 0, 128);
- as_opr(c.as, OP_PUSHR, R_RAX);
+ as_modrm(c.s, OP_LOAD, R_RAX, R_RBP, 0, 0, 128);
+ as_opr(c.s, OP_PUSHR, R_RAX);
// finish up restore
- as_modrm(c.as, OP_LOAD, R_RAX, R_RBP, 0, 0, 0);
- as_modrm(c.as, OP_LOAD, R_RBP, R_RBP, 0, 0, 40);
+ as_modrm(c.s, OP_LOAD, R_RAX, R_RBP, 0, 0, 0);
+ as_modrm(c.s, OP_LOAD, R_RBP, R_RBP, 0, 0, 40);
// iretq
- as_op(c.as, OP_IRETQ);
+ as_op(c.s, OP_IRETQ);
}
}
@@ -2693,7 +2693,7 @@ main(argc: int, argv: **byte, envp: **byte) {
emit_builtin(c);
- open_output(c.as, filename);
+ open_output(c.s, filename);
- writeout(c.as, c.start, c.kstart);
+ writeout(c.s, c.start, c.kstart);
}
diff --git a/cc3.peg b/cc3.peg
@@ -89,7 +89,7 @@ unary_expr <- ((ref_op / deref_op / pos_op / neg_op / not_op / bnot_op) sp)* pos
index_expr <- '[' sp expr ']' sp
call_expr <- '(' sp ( expr (',' sp expr)* )? (',' sp)? ')' sp
member_expr <- '.' sp ident sp
-cast_expr <- ':' sp type
+cast_expr <- (':' / 'as') sp type
post_expr <- primary (index_expr / call_expr / member_expr / cast_expr)*
primary <- ident sp / hex sp / dec sp / str sp / char sp
@@ -103,7 +103,7 @@ str <- ["] ([\\] . / !["] .)* ["]
char <- ['] ([\\] . / !['] .)+ [']
reserved <- return / break / sizeof / if / else / loop / continue / goto
- / var / enum / struct / union / byte / int / void / func
+ / var / enum / struct / union / byte / int / void / func / as
return <- 'return' ![a-zA-Z0-9_]
break <- 'break' ![a-zA-Z0-9_]
@@ -121,6 +121,8 @@ byte <- 'byte' ![a-zA-Z0-9_]
int <- 'int' ![a-zA-Z0-9_]
void <- 'void' ![a-zA-Z0-9_]
func <- 'func' ![a-zA-Z0-9_]
+as <- 'as' ![a-zA-Z0-9_]
+nil <- 'nil' ![a-zA-Z0-9_]
ident <- !reserved [a-zA-Z_][a-zA-Z0-9_]*
diff --git a/decl.om b/decl.om
@@ -95,7 +95,7 @@ find(c: *compiler, name: *byte, member_name: *byte, make: int): *decl {
d.func_defined = 0;
d.func_type = 0:*type;
- d.func_label = mklabel(c.as);
+ d.func_label = mklabel(c.s);
d.func_def = 0:*node;
d.func_used = 0;
@@ -119,7 +119,7 @@ find(c: *compiler, name: *byte, member_name: *byte, make: int): *decl {
d.var_def = 0:*node;
d.goto_defined = 0;
- d.goto_label = mklabel(c.as);
+ d.goto_label = mklabel(c.s);
*link = d;
diff --git a/vimfiles/syntax/omiltem.vim b/vimfiles/syntax/omiltem.vim
@@ -21,6 +21,8 @@ syn keyword oByte byte
syn keyword oInt int
syn keyword oVoid void
syn keyword oFunc func
+syn keyword oAs as
+syn keyword oNil nil
syn keyword oTodo contained TODO FIXME XXX BUG
syn cluster oCommentGroup contains=oTodo
@@ -58,6 +60,9 @@ hi def link oContinue Statement
hi def link oGoto Statement
hi def link oVar Keyword
+hi def link oAs Keyword
+hi def link oNil Keyword
+hi def link oFunc Keyword
hi def link oEnum Structure
hi def link oStruct Structure
@@ -66,6 +71,5 @@ hi def link oUnion Structure
hi def link oByte Type
hi def link oInt Type
hi def link oVoid Type
-hi def link oFunc Type
let b:current_syntax = "omiltem"