aboutsummaryrefslogtreecommitdiff
path: root/compiler
diff options
context:
space:
mode:
authorDrahflow <drahflow@gmx.de>2013-01-10 19:34:47 +0100
committerDrahflow <drahflow@gmx.de>2013-01-10 19:34:47 +0100
commitcde514733d2c0c3c070d2452c653cf3a4eea0313 (patch)
tree54bc2dd0c0d4fe644729aaa5d41bb4f80e47556d /compiler
parent492a35eab4c1c09f5fb9b207e3e36bfa96109236 (diff)
Some code clean- and speedup
Diffstat (limited to 'compiler')
-rw-r--r--compiler/elymasAsm.ey14
-rw-r--r--compiler/elymasAsmLib.ey11
-rw-r--r--compiler/elymasGlobal.ey2
3 files changed, 18 insertions, 9 deletions
diff --git a/compiler/elymasAsm.ey b/compiler/elymasAsm.ey
index d3ad34b..3a7ca60 100644
--- a/compiler/elymasAsm.ey
+++ b/compiler/elymasAsm.ey
@@ -576,7 +576,9 @@
/rsp /rbx xchgqRegMem
callStack /rbx movqImmReg
/r15 /rbx xchgqRegMem
- ] opcodes [
+
+ opcodes _ len dearray
+
callStack /rbx movqImmReg
/r15 /rbx xchgqRegMem
valueStack /rbx movqImmReg
@@ -584,13 +586,17 @@
/r15 popqReg
/rbx popqReg
retn
- ] cat cat =opcodes
+ ]
+ } /compileOn deff
- opcodes arrayToCode _ .base sys .asm .execute
- .free
+ {
+ compileOn arrayToCode _ .base sys .asm .execute
+ .free
} /executeOn deff
{ mainStack .base mainCallStack .base executeOn } /execute deff
+
+ { mainStack .base mainCallStack .base compileOn } /compile deff
> /assembler defv
# vim: syn=elymas
diff --git a/compiler/elymasAsmLib.ey b/compiler/elymasAsmLib.ey
index 9cea01e..76cb7e7 100644
--- a/compiler/elymasAsmLib.ey
+++ b/compiler/elymasAsmLib.ey
@@ -497,15 +497,18 @@
sys .asm .peek
} /peekImm8 deff
+ [ /0 /1 /2 /3 /4 /5 /6 /7 /8 /9 /A /B /C /D /E /F ] ==base16singleDigits
+ [ base16singleDigits { ==first base16singleDigits { first -01 cat } each } each ] ==base16digits
+
{
- [ -01 16 { _ 16 mod -01 16 div } rep -- ]
- [ /0 /1 /2 /3 /4 /5 /6 /7 /8 /9 /A /B /C /D /E /F ] *
+ [ -01 8 { _ 256 mod -01 256 div } rep -- ]
+ base16digits *
reverse |cat fold
} /base16encode64 deff
{
- [ -01 8 { _ 16 mod -01 16 div } rep -- ]
- [ /0 /1 /2 /3 /4 /5 /6 /7 /8 /9 /A /B /C /D /E /F ] *
+ [ -01 4 { _ 256 mod -01 256 div } rep -- ]
+ base16digits *
reverse |cat fold
} /base16encode32 deff
diff --git a/compiler/elymasGlobal.ey b/compiler/elymasGlobal.ey
index 12589e8..a6dcfb8 100644
--- a/compiler/elymasGlobal.ey
+++ b/compiler/elymasGlobal.ey
@@ -94,7 +94,7 @@
{ _ "([^\\n]*)\\n(.*)" regex } { -102 -- tokenize {
_ .handle
assemblerLibrary .stackDump
- assemblerLibrary .globalScopeDump
+ # assemblerLibrary .globalScopeDump
} each } loop
} loop
} /executeFile deff