aboutsummaryrefslogtreecommitdiff
path: root/compiler/elymasAsm.ey
diff options
context:
space:
mode:
authorDrahflow <drahflow@gmx.de>2013-09-27 21:56:11 +0200
committerDrahflow <drahflow@gmx.de>2013-09-27 21:56:11 +0200
commitf6af44d6742d96ecf002eb24475ecc23bf3d2d72 (patch)
tree41580218c3f6dfaf8733e846146d2a682d8a85bd /compiler/elymasAsm.ey
parent7521804dd8818778311720e4b0e1d69a029debb3 (diff)
currentScope now in r14
Diffstat (limited to 'compiler/elymasAsm.ey')
-rw-r--r--compiler/elymasAsm.ey30
1 files changed, 12 insertions, 18 deletions
diff --git a/compiler/elymasAsm.ey b/compiler/elymasAsm.ey
index 1482095..77719ea 100644
--- a/compiler/elymasAsm.ey
+++ b/compiler/elymasAsm.ey
@@ -1131,24 +1131,6 @@
%0B
} /ud2 deff
- { ==regb ==rega
- rega bit64assert
- regb bit64assert
-
- 1 rega /none regb rex
- %87
- rega regb modrm11
- } /xchgqRegReg deff
-
- { ==mem ==reg
- reg bit64assert
- mem bit64assert
-
- 1 reg /none mem rex
- %87
- reg mem modrm00
- } /xchgqRegMem deff
-
{ ==dst ==src
dst bit64assert
src bit64assert
@@ -1158,6 +1140,16 @@
src dst modrm11
} /xchgqRegReg deff
+ memoryAddressingVariants keys { ==variant memoryAddressingVariants variant . =*parse
+ { parse ==mem ==reg
+ reg bit64assert
+
+ 1 reg mem .idx mem .base rex
+ %87
+ reg mem .encode
+ } /xchgqReg variant defOp
+ } each
+
/xor %31 defAsmAddq
# map "anonymous" allocations away from interpreter heap
@@ -1249,11 +1241,13 @@
/rsp /rbx xchgqRegMem
callStack /rbx movqImmReg
/r15 /rbx xchgqRegMem
+ /r14 8 /rbx xchgqRegMemDisp8
opcodes _ len dearray
callStack /rbx movqImmReg
/r15 /rbx xchgqRegMem
+ /r14 8 /rbx xchgqRegMemDisp8
valueStack /rbx movqImmReg
/rsp /rbx xchgqRegMem
/r15 popqReg