aboutsummaryrefslogtreecommitdiff
path: root/compiler
diff options
context:
space:
mode:
authorDrahflow <drahflow@gmx.de>2014-03-31 00:24:05 +0200
committerDrahflow <drahflow@gmx.de>2014-03-31 00:24:05 +0200
commitc61d0d4fe1079dfe5e1b40e0f301d6d1c77a136d (patch)
tree0593f2091ec513b863728088db66a10859f73735 /compiler
parent2387a3eafbd13c0b27797ac1434e45bb36d632c2 (diff)
Some documentation (and resulting code-cleanup)
Diffstat (limited to 'compiler')
-rw-r--r--compiler/elymasAsmOps.ey8
-rw-r--r--compiler/elymasGlobal.ey21
-rw-r--r--compiler/standardClient.ey2
3 files changed, 29 insertions, 2 deletions
diff --git a/compiler/elymasAsmOps.ey b/compiler/elymasAsmOps.ey
index 116d5b0..d74cc33 100644
--- a/compiler/elymasAsmOps.ey
+++ b/compiler/elymasAsmOps.ey
@@ -826,6 +826,14 @@ memoryAddressingVariants keys { ==variant memoryAddressingVariants variant . =*p
} /fsubp deff
{ ==reg
+ reg bit64assert
+
+ 1 /none /none reg rex
+ %F7
+ /seven reg modrm11
+} /idivqReg deff
+
+{ ==reg
reg bit8assert
1 /none /none reg rex
diff --git a/compiler/elymasGlobal.ey b/compiler/elymasGlobal.ey
index f311764..83d4d63 100644
--- a/compiler/elymasGlobal.ey
+++ b/compiler/elymasGlobal.ey
@@ -3349,7 +3349,7 @@
/rax :pushqReg
/rdx /rax :movqRegReg
/rdx /rdx :xorqRegReg
- /rcx :divqReg
+ /rcx :idivqReg
/rax /rdx :movqRegReg
/rax :popqReg
] [
@@ -3380,6 +3380,25 @@
1 /rdx :movqImmReg
@done
]] [[ "or" floatUnsupported ]] 0 makeFullArith /eyor defv
+ [[
+ /rcx /rcx :testqRegReg
+ /first :jnzLbl8
+ # @firstNot
+ /rdx /rdx :testqRegReg
+ /yes :jnzLbl8
+ /rdx /rdx :xorqRegReg
+ /done :jmpLbl8
+
+ @first
+ /rdx /rdx :testqRegReg
+ /yes :jzLbl8
+ /rdx /rdx :xorqRegReg
+ /done :jmpLbl8
+
+ @yes
+ 1 /rdx :movqImmReg
+ @done
+ ]] [[ "xor" floatUnsupported ]] 0 makeFullArith /eyxor defv
> _ =globalT11t1Functions { defv }' ::allocateOffsetStruct
<
diff --git a/compiler/standardClient.ey b/compiler/standardClient.ey
index a626790..d55c23e 100644
--- a/compiler/standardClient.ey
+++ b/compiler/standardClient.ey
@@ -6,7 +6,6 @@
## regex support
# ideas taken from http://swtch.com/~rsc/regexp/regexp3.html
-# FIXME: correctly handly */+/? priority
<
0 ==:MATCH 1 ==:TERM 2 ==:JUMP 3 ==:SPLIT 4 ==:SAVE 5 ==:FIRST 6 ==:LAST
@@ -858,6 +857,7 @@
} /curry deffd
{ | curry } "||" deffd
+
{ ==o
{ "unknown type in **" die } ==:unknown
{ "invalid type in **" die } ==:invalid