diff options
Diffstat (limited to 'vm/mterp/x86/OP_NEG_LONG.S')
-rw-r--r-- | vm/mterp/x86/OP_NEG_LONG.S | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/vm/mterp/x86/OP_NEG_LONG.S b/vm/mterp/x86/OP_NEG_LONG.S new file mode 100644 index 0000000..9543351 --- /dev/null +++ b/vm/mterp/x86/OP_NEG_LONG.S @@ -0,0 +1,15 @@ +%verify "executed" + /* unop vA, vB */ + movzbl rINSTbl,%ecx # ecx<- BA + sarl $$4,%ecx # ecx<- B + andb $$0xf,rINSTbl # rINST<- A + GET_VREG_WORD %eax %ecx 0 # eax<- v[B+0] + GET_VREG_WORD %ecx %ecx 1 # ecx<- v[B+1] + negl %eax + adcl $$0,%ecx + negl %ecx + SET_VREG_WORD %eax rINST 0 # v[A+0]<- eax + FETCH_INST_OPCODE 1 %eax + SET_VREG_WORD %ecx rINST 1 # v[A+1]<- ecx + ADVANCE_PC 1 + GOTO_NEXT_R %eax |