00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039 #ifndef __X86EMU_PRIM_OPS_H
00040 #define __X86EMU_PRIM_OPS_H
00041
00042 #include "x86emu/prim_asm.h"
00043
00044 #ifdef __cplusplus
00045 extern "C" {
00046 #endif
00047
00048 u16 aaa_word (u16 d);
00049 u16 aas_word (u16 d);
00050 u16 aad_word (u16 d);
00051 u16 aam_word (u8 d);
00052 u8 adc_byte (u8 d, u8 s);
00053 u16 adc_word (u16 d, u16 s);
00054 u32 adc_long (u32 d, u32 s);
00055 u8 add_byte (u8 d, u8 s);
00056 u16 add_word (u16 d, u16 s);
00057 u32 add_long (u32 d, u32 s);
00058 u8 and_byte (u8 d, u8 s);
00059 u16 and_word (u16 d, u16 s);
00060 u32 and_long (u32 d, u32 s);
00061 u8 cmp_byte (u8 d, u8 s);
00062 u16 cmp_word (u16 d, u16 s);
00063 u32 cmp_long (u32 d, u32 s);
00064 u8 daa_byte (u8 d);
00065 u8 das_byte (u8 d);
00066 u8 dec_byte (u8 d);
00067 u16 dec_word (u16 d);
00068 u32 dec_long (u32 d);
00069 u8 inc_byte (u8 d);
00070 u16 inc_word (u16 d);
00071 u32 inc_long (u32 d);
00072 u8 or_byte (u8 d, u8 s);
00073 u16 or_word (u16 d, u16 s);
00074 u32 or_long (u32 d, u32 s);
00075 u8 neg_byte (u8 s);
00076 u16 neg_word (u16 s);
00077 u32 neg_long (u32 s);
00078 u8 not_byte (u8 s);
00079 u16 not_word (u16 s);
00080 u32 not_long (u32 s);
00081 u8 rcl_byte (u8 d, u8 s);
00082 u16 rcl_word (u16 d, u8 s);
00083 u32 rcl_long (u32 d, u8 s);
00084 u8 rcr_byte (u8 d, u8 s);
00085 u16 rcr_word (u16 d, u8 s);
00086 u32 rcr_long (u32 d, u8 s);
00087 u8 rol_byte (u8 d, u8 s);
00088 u16 rol_word (u16 d, u8 s);
00089 u32 rol_long (u32 d, u8 s);
00090 u8 ror_byte (u8 d, u8 s);
00091 u16 ror_word (u16 d, u8 s);
00092 u32 ror_long (u32 d, u8 s);
00093 u8 shl_byte (u8 d, u8 s);
00094 u16 shl_word (u16 d, u8 s);
00095 u32 shl_long (u32 d, u8 s);
00096 u8 shr_byte (u8 d, u8 s);
00097 u16 shr_word (u16 d, u8 s);
00098 u32 shr_long (u32 d, u8 s);
00099 u8 sar_byte (u8 d, u8 s);
00100 u16 sar_word (u16 d, u8 s);
00101 u32 sar_long (u32 d, u8 s);
00102 u16 shld_word (u16 d, u16 fill, u8 s);
00103 u32 shld_long (u32 d, u32 fill, u8 s);
00104 u16 shrd_word (u16 d, u16 fill, u8 s);
00105 u32 shrd_long (u32 d, u32 fill, u8 s);
00106 u8 sbb_byte (u8 d, u8 s);
00107 u16 sbb_word (u16 d, u16 s);
00108 u32 sbb_long (u32 d, u32 s);
00109 u8 sub_byte (u8 d, u8 s);
00110 u16 sub_word (u16 d, u16 s);
00111 u32 sub_long (u32 d, u32 s);
00112 void test_byte (u8 d, u8 s);
00113 void test_word (u16 d, u16 s);
00114 void test_long (u32 d, u32 s);
00115 u8 xor_byte (u8 d, u8 s);
00116 u16 xor_word (u16 d, u16 s);
00117 u32 xor_long (u32 d, u32 s);
00118 void imul_byte (u8 s);
00119 void imul_word (u16 s);
00120 void imul_long (u32 s);
00121 void imul_long_direct(u32 *res_lo, u32* res_hi,u32 d, u32 s);
00122 void mul_byte (u8 s);
00123 void mul_word (u16 s);
00124 void mul_long (u32 s);
00125 void idiv_byte (u8 s);
00126 void idiv_word (u16 s);
00127 void idiv_long (u32 s);
00128 void div_byte (u8 s);
00129 void div_word (u16 s);
00130 void div_long (u32 s);
00131 void ins (int size);
00132 void outs (int size);
00133 u16 mem_access_word (int addr);
00134 void push_word (u16 w);
00135 void push_long (u32 w);
00136 u16 pop_word (void);
00137 u32 pop_long (void);
00138
00139 #ifdef __cplusplus
00140 }
00141 #endif
00142
00143 #endif