From 9d4b5bb1115bc0f51954a2d236acb00ce95c88d5 Mon Sep 17 00:00:00 2001 From: Drahflow Date: Thu, 18 Jun 2015 16:02:11 +0200 Subject: Also inline not --- compiler/elymasGlobalSysAsm.ey | 2 +- elymas/lib/sys/opt.ey | 34 +++++++++++++++++++++++++++++++++- 2 files changed, 34 insertions(+), 2 deletions(-) diff --git a/compiler/elymasGlobalSysAsm.ey b/compiler/elymasGlobalSysAsm.ey index e31ab74..14052f5 100644 --- a/compiler/elymasGlobalSysAsm.ey +++ b/compiler/elymasGlobalSysAsm.ey @@ -266,7 +266,7 @@ /rsi /ecx :movlMemReg 8 /rsi :addqImm8Reg 3 /rcx :shrqImm8Reg - :repnz :movsq + :reprcx :movsq /rbp /rdi :xchgqRegReg diff --git a/elymas/lib/sys/opt.ey b/elymas/lib/sys/opt.ey index 16ceb74..e1ae466 100644 --- a/elymas/lib/sys/opt.ey +++ b/elymas/lib/sys/opt.ey @@ -249,7 +249,7 @@ /rdx :pushqReg /rcx :pushqReg - |and ::rawAddress /rax :movqImmReg + |or ::rawAddress /rax :movqImmReg /rax :pushqReg "*" | ::rawCodeAddress /rax :movqImmReg /rax :callqReg @@ -257,6 +257,37 @@ @done ]] ] ==:INLINEBLOCKOR + [ NATIVENOSCOPE [[ + /rcx :popqReg + /rcx /rax :movqRegReg + + 63 /rax :btrqImm8Reg + /nonInlineCase :jncLbl8 + + /rcx /rcx :xorqRegReg + /rax /rax :testqRegReg + /cl :seteReg + 63 /rcx :btsqImm8Reg + /rcx :pushqReg + /done :jmpLbl8 + + @positive + 1 /rax :movqImmReg + 63 /rax :btsqImm8Reg + /rax :pushqReg + /done :jmpLbl8 + + @nonInlineCase + /rcx :pushqReg + + |not ::rawAddress /rax :movqImmReg + /rax :pushqReg + "*" | ::rawCodeAddress /rax :movqImmReg + /rax :callqReg + + @done + ]] ] ==:INLINEBLOCKNOT + { ==negatedOpcodeName ==functionName [ NATIVENOSCOPE [[ /rcx :popqReg @@ -754,6 +785,7 @@ [ { 1 last * |and ::rawAddress eq }' { INLINEBLOCKAND i logic =[] [ NOP ] i 1 sub logic =[] } { 1 last * |or ::rawAddress eq }' { INLINEBLOCKOR i logic =[] [ NOP ] i 1 sub logic =[] } + { 1 last * |not ::rawAddress eq }' { INLINEBLOCKNOT i logic =[] [ NOP ] i 1 sub logic =[] } { 1 last * |eq ::rawAddress eq }' { INLINEBLOCKEQ i logic =[] [ NOP ] i 1 sub logic =[] } { 1 last * |neq ::rawAddress eq }' { INLINEBLOCKNEQ i logic =[] [ NOP ] i 1 sub logic =[] } -- cgit v1.2.3