|
|
@@ -56,64 +56,11 @@
|
|
|
#
|
|
|
# See the code in mini-x86.c for more details on how the specifiers are used.
|
|
|
#
|
|
|
-nop:
|
|
|
break: len:1
|
|
|
-ldarg.0:
|
|
|
-ldarg.1:
|
|
|
-ldarg.2:
|
|
|
-ldarg.3:
|
|
|
-ldloc.0:
|
|
|
-ldloc.1:
|
|
|
-ldloc.2:
|
|
|
-ldloc.3:
|
|
|
-stloc.0:
|
|
|
-stloc.1:
|
|
|
-stloc.2:
|
|
|
-stloc.3:
|
|
|
-ldarg.s:
|
|
|
-ldarga.s:
|
|
|
-starg.s:
|
|
|
-ldloc.s:
|
|
|
-ldloca.s:
|
|
|
-stloc.s:
|
|
|
-ldnull:
|
|
|
-ldc.i4.m1:
|
|
|
-ldc.i4.0:
|
|
|
-ldc.i4.1:
|
|
|
-ldc.i4.2:
|
|
|
-ldc.i4.3:
|
|
|
-ldc.i4.4:
|
|
|
-ldc.i4.5:
|
|
|
-ldc.i4.6:
|
|
|
-ldc.i4.7:
|
|
|
-ldc.i4.8:
|
|
|
-ldc.i4.s:
|
|
|
-ldc.i4:
|
|
|
-ldc.i8:
|
|
|
-ldc.r4:
|
|
|
-ldc.r8:
|
|
|
-dup:
|
|
|
-pop:
|
|
|
jmp: len:32
|
|
|
call: dest:a clob:c len:17
|
|
|
-calli:
|
|
|
ret: len:1
|
|
|
-br.s:
|
|
|
-brfalse.s:
|
|
|
-brtrue.s:
|
|
|
-beq.s:
|
|
|
-bge.s:
|
|
|
-bgt.s:
|
|
|
-ble.s:
|
|
|
-blt.s:
|
|
|
-bne.un.s:
|
|
|
-bge.un.s:
|
|
|
-bgt.un.s:
|
|
|
-ble.un.s:
|
|
|
-blt.un.s:
|
|
|
br: len:5
|
|
|
-brfalse:
|
|
|
-brtrue:
|
|
|
beq: len:6
|
|
|
bge: len:6
|
|
|
bgt: len:6
|
|
|
@@ -124,23 +71,19 @@ bge.un: len:6
|
|
|
bgt.un: len:6
|
|
|
ble.un: len:6
|
|
|
blt.un: len:6
|
|
|
-switch:
|
|
|
+label:
|
|
|
ldind.i1: dest:i len:6
|
|
|
ldind.u1: dest:i len:6
|
|
|
ldind.i2: dest:i len:6
|
|
|
ldind.u2: dest:i len:6
|
|
|
ldind.i4: dest:i len:6
|
|
|
ldind.u4: dest:i len:6
|
|
|
-ldind.i8:
|
|
|
ldind.i: dest:i len:6
|
|
|
-ldind.r4:
|
|
|
-ldind.r8:
|
|
|
ldind.ref: dest:i len:6
|
|
|
stind.ref: src1:b src2:i
|
|
|
stind.i1: src1:b src2:i
|
|
|
stind.i2: src1:b src2:i
|
|
|
stind.i4: src1:b src2:i
|
|
|
-stind.i8:
|
|
|
stind.r4: dest:f src1:b
|
|
|
stind.r8: dest:f src1:b
|
|
|
add: dest:i src1:i src2:i len:2 clob:1
|
|
|
@@ -161,146 +104,32 @@ not: dest:i src1:i len:2 clob:1
|
|
|
conv.i1: dest:i src1:y len:3
|
|
|
conv.i2: dest:i src1:i len:3
|
|
|
conv.i4: dest:i src1:i len:2
|
|
|
-conv.i8:
|
|
|
conv.r4: dest:f src1:i len:7
|
|
|
conv.r8: dest:f src1:i len:7
|
|
|
conv.u4: dest:i src1:i
|
|
|
-conv.u8:
|
|
|
conv.u2: dest:i src1:i len:3
|
|
|
conv.u1: dest:i src1:y len:3
|
|
|
conv.i: dest:i src1:i len:3
|
|
|
-conv.ovf.i:
|
|
|
-conv.ovf.u:
|
|
|
-callvirt:
|
|
|
-cpobj:
|
|
|
-ldobj:
|
|
|
-ldstr:
|
|
|
-newobj:
|
|
|
-castclass:
|
|
|
-isinst:
|
|
|
-conv.r.un:
|
|
|
-unbox:
|
|
|
throw: src1:i len:13
|
|
|
op_rethrow: src1:i len:13
|
|
|
-ldfld:
|
|
|
-ldflda:
|
|
|
-stfld:
|
|
|
-ldsfld:
|
|
|
-ldsflda:
|
|
|
-stsfld:
|
|
|
-stobj:
|
|
|
-conv.ovf.i1.un:
|
|
|
-conv.ovf.i2.un:
|
|
|
-conv.ovf.i4.un:
|
|
|
-conv.ovf.i8.un:
|
|
|
-conv.ovf.u1.un:
|
|
|
-conv.ovf.u2.un:
|
|
|
-conv.ovf.u4.un:
|
|
|
-conv.ovf.u8.un:
|
|
|
-conv.ovf.i.un:
|
|
|
-conv.ovf.u.un:
|
|
|
-box:
|
|
|
-newarr:
|
|
|
-ldlen:
|
|
|
-ldelema:
|
|
|
-ldelem.i1:
|
|
|
-ldelem.u1:
|
|
|
-ldelem.i2:
|
|
|
-ldelem.u2:
|
|
|
-ldelem.i4:
|
|
|
-ldelem.u4:
|
|
|
-ldelem.i8:
|
|
|
-ldelem.i:
|
|
|
-ldelem.r4:
|
|
|
-ldelem.r8:
|
|
|
-ldelem.ref:
|
|
|
-stelem.i:
|
|
|
-stelem.i1:
|
|
|
-stelem.i2:
|
|
|
-stelem.i4:
|
|
|
-stelem.i8:
|
|
|
-stelem.r4:
|
|
|
-stelem.r8:
|
|
|
-stelem.ref:
|
|
|
-conv.ovf.i1:
|
|
|
-conv.ovf.u1:
|
|
|
-conv.ovf.i2:
|
|
|
-conv.ovf.u2:
|
|
|
-conv.ovf.i4:
|
|
|
-conv.ovf.u4:
|
|
|
-conv.ovf.i8:
|
|
|
-conv.ovf.u8:
|
|
|
-refanyval:
|
|
|
ckfinite: dest:f src1:f len:22
|
|
|
-mkrefany:
|
|
|
-ldtoken:
|
|
|
-add.ovf:
|
|
|
-add.ovf.un:
|
|
|
mul.ovf: dest:i src1:i src2:i clob:1 len:9
|
|
|
# this opcode is handled specially in the code generator
|
|
|
mul.ovf.un: dest:i src1:i src2:i len:16
|
|
|
-sub.ovf:
|
|
|
-sub.ovf.un:
|
|
|
-endfinally:
|
|
|
-leave:
|
|
|
-leave.s:
|
|
|
-stind.i:
|
|
|
conv.u: dest:i src1:i len:3
|
|
|
-prefix7:
|
|
|
-prefix6:
|
|
|
-prefix5:
|
|
|
-prefix4:
|
|
|
-prefix3:
|
|
|
-prefix2:
|
|
|
-prefix1:
|
|
|
-prefixref:
|
|
|
-arglist:
|
|
|
ceq: dest:y len:6
|
|
|
cgt: dest:y len:6
|
|
|
cgt.un: dest:y len:6
|
|
|
clt: dest:y len:6
|
|
|
clt.un: dest:y len:6
|
|
|
cne: dest:y len:6
|
|
|
-ldftn:
|
|
|
-ldvirtftn:
|
|
|
-ldarg:
|
|
|
-ldarga:
|
|
|
-starg:
|
|
|
-ldloc:
|
|
|
-ldloca:
|
|
|
-stloc:
|
|
|
localloc: dest:i src1:i len:120
|
|
|
-endfilter:
|
|
|
-unaligned.:
|
|
|
-volatile.:
|
|
|
-tail.:
|
|
|
-initobj:
|
|
|
-cpblk:
|
|
|
-initblk:
|
|
|
-sizeof:
|
|
|
-refanytype:
|
|
|
-illegal:
|
|
|
-endmac:
|
|
|
-mono_objaddr:
|
|
|
-mono_ldptr:
|
|
|
-mono_vtaddr:
|
|
|
-mono_newobj:
|
|
|
-mono_retobj:
|
|
|
-load:
|
|
|
-ldaddr:
|
|
|
-store:
|
|
|
-phi:
|
|
|
-rename:
|
|
|
compare: src1:i src2:i len:2
|
|
|
compare_imm: src1:i len:6
|
|
|
fcompare: src1:f src2:f clob:a len:9
|
|
|
-lcompare:
|
|
|
-local:
|
|
|
-arg:
|
|
|
oparglist: src1:b len:10
|
|
|
outarg: src1:i len:1
|
|
|
outarg_imm: len:5
|
|
|
-retarg:
|
|
|
setret: dest:a src1:i len:2
|
|
|
setlret: dest:l src1:i src2:i len:4
|
|
|
checkthis: src1:b len:2
|
|
|
@@ -318,15 +147,9 @@ vcall_reg: src1:i len:11 clob:c
|
|
|
vcall_membase: src1:b len:16 clob:c
|
|
|
call_reg: dest:a src1:i len:11 clob:c
|
|
|
call_membase: dest:a src1:b len:16 clob:c
|
|
|
-trap:
|
|
|
iconst: dest:i len:5
|
|
|
-i8const:
|
|
|
r4const: dest:f len:15
|
|
|
r8const: dest:f len:16
|
|
|
-regvar:
|
|
|
-reg:
|
|
|
-regoffset:
|
|
|
-label:
|
|
|
store_membase_imm: dest:b len:10
|
|
|
store_membase_reg: dest:b src1:i len:7
|
|
|
storei1_membase_imm: dest:b len:10
|
|
|
@@ -384,80 +207,15 @@ cond_exc_ov: len:6
|
|
|
cond_exc_no: len:6
|
|
|
cond_exc_c: len:6
|
|
|
cond_exc_nc: len:6
|
|
|
-long_add:
|
|
|
-long_sub:
|
|
|
-long_mul:
|
|
|
-long_div:
|
|
|
-long_div_un:
|
|
|
-long_rem:
|
|
|
-long_rem_un:
|
|
|
-long_and:
|
|
|
-long_or:
|
|
|
-long_xor:
|
|
|
long_shl: dest:L src1:L src2:s clob:1 len:21
|
|
|
long_shr: dest:L src1:L src2:s clob:1 len:22
|
|
|
long_shr_un: dest:L src1:L src2:s clob:1 len:22
|
|
|
-long_neg:
|
|
|
-long_not:
|
|
|
-long_conv_to_i1:
|
|
|
-long_conv_to_i2:
|
|
|
-long_conv_to_i4:
|
|
|
-long_conv_to_i8:
|
|
|
-long_conv_to_r4:
|
|
|
-long_conv_to_r8:
|
|
|
-long_conv_to_u4:
|
|
|
-long_conv_to_u8:
|
|
|
-long_conv_to_u2:
|
|
|
-long_conv_to_u1:
|
|
|
-long_conv_to_i:
|
|
|
long_conv_to_ovf_i: dest:i src1:i src2:i len:30
|
|
|
-long_conv_to_ovf_u:
|
|
|
-long_add_ovf:
|
|
|
-long_add_ovf_un:
|
|
|
long_mul_ovf:
|
|
|
-long_mul_ovf_un:
|
|
|
-long_sub_ovf:
|
|
|
-long_sub_ovf_un:
|
|
|
-long_conv_to_ovf_i1_un:
|
|
|
-long_conv_to_ovf_i2_un:
|
|
|
-long_conv_to_ovf_i4_un:
|
|
|
-long_conv_to_ovf_i8_un:
|
|
|
-long_conv_to_ovf_u1_un:
|
|
|
-long_conv_to_ovf_u2_un:
|
|
|
-long_conv_to_ovf_u4_un:
|
|
|
-long_conv_to_ovf_u8_un:
|
|
|
-long_conv_to_ovf_i_un:
|
|
|
-long_conv_to_ovf_u_un:
|
|
|
-long_conv_to_ovf_i1:
|
|
|
-long_conv_to_ovf_u1:
|
|
|
-long_conv_to_ovf_i2:
|
|
|
-long_conv_to_ovf_u2:
|
|
|
-long_conv_to_ovf_i4:
|
|
|
-long_conv_to_ovf_u4:
|
|
|
-long_conv_to_ovf_i8:
|
|
|
-long_conv_to_ovf_u8:
|
|
|
-long_ceq:
|
|
|
-long_cgt:
|
|
|
-long_cgt_un:
|
|
|
-long_clt:
|
|
|
-long_clt_un:
|
|
|
long_conv_to_r_un: dest:f src1:i src2:i len:37
|
|
|
-long_conv_to_u:
|
|
|
long_shr_imm: dest:L src1:L clob:1 len:10
|
|
|
long_shr_un_imm: dest:L src1:L clob:1 len:10
|
|
|
long_shl_imm: dest:L src1:L clob:1 len:10
|
|
|
-long_add_imm:
|
|
|
-long_sub_imm:
|
|
|
-long_beq:
|
|
|
-long_bne_un:
|
|
|
-long_blt:
|
|
|
-long_blt_un:
|
|
|
-long_bgt:
|
|
|
-long_btg_un:
|
|
|
-long_bge:
|
|
|
-long_bge_un:
|
|
|
-long_ble:
|
|
|
-long_ble_un:
|
|
|
float_beq: len:12
|
|
|
float_bne_un: len:18
|
|
|
float_blt: len:12
|
|
|
@@ -481,8 +239,6 @@ float_conv_to_i1: dest:y src1:f len:39
|
|
|
float_conv_to_i2: dest:y src1:f len:39
|
|
|
float_conv_to_i4: dest:i src1:f len:39
|
|
|
float_conv_to_i8: dest:L src1:f len:39
|
|
|
-float_conv_to_r4:
|
|
|
-float_conv_to_r8:
|
|
|
float_conv_to_u4: dest:i src1:f len:39
|
|
|
float_conv_to_u8: dest:L src1:f len:39
|
|
|
float_conv_to_u2: dest:y src1:f len:39
|
|
|
@@ -490,30 +246,7 @@ float_conv_to_u1: dest:y src1:f len:39
|
|
|
float_conv_to_i: dest:i src1:f len:39
|
|
|
float_conv_to_ovf_i: dest:a src1:f len:30
|
|
|
float_conv_to_ovd_u: dest:a src1:f len:30
|
|
|
-float_add_ovf:
|
|
|
-float_add_ovf_un:
|
|
|
float_mul_ovf:
|
|
|
-float_mul_ovf_un:
|
|
|
-float_sub_ovf:
|
|
|
-float_sub_ovf_un:
|
|
|
-float_conv_to_ovf_i1_un:
|
|
|
-float_conv_to_ovf_i2_un:
|
|
|
-float_conv_to_ovf_i4_un:
|
|
|
-float_conv_to_ovf_i8_un:
|
|
|
-float_conv_to_ovf_u1_un:
|
|
|
-float_conv_to_ovf_u2_un:
|
|
|
-float_conv_to_ovf_u4_un:
|
|
|
-float_conv_to_ovf_u8_un:
|
|
|
-float_conv_to_ovf_i_un:
|
|
|
-float_conv_to_ovf_u_un:
|
|
|
-float_conv_to_ovf_i1:
|
|
|
-float_conv_to_ovf_u1:
|
|
|
-float_conv_to_ovf_i2:
|
|
|
-float_conv_to_ovf_u2:
|
|
|
-float_conv_to_ovf_i4:
|
|
|
-float_conv_to_ovf_u4:
|
|
|
-float_conv_to_ovf_i8:
|
|
|
-float_conv_to_ovf_u8:
|
|
|
float_ceq: dest:y src1:f src2:f len:25
|
|
|
float_cgt: dest:y src1:f src2:f len:25
|
|
|
float_cgt_un: dest:y src1:f src2:f len:37
|