diff options
| author | Drahflow <drahflow@gmx.de> | 2015-06-18 16:02:11 +0200 |
|---|---|---|
| committer | Drahflow <drahflow@gmx.de> | 2015-06-18 16:02:11 +0200 |
| commit | 9d4b5bb1115bc0f51954a2d236acb00ce95c88d5 (patch) | |
| tree | a3e2e43012da4ad96db2ea7885a0194ce65e814b /elymas/lib/sys | |
| parent | ac3551e710803af317550beca23083143681d899 (diff) | |
Also inline not
Diffstat (limited to 'elymas/lib/sys')
| -rw-r--r-- | elymas/lib/sys/opt.ey | 34 |
1 files changed, 33 insertions, 1 deletions
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 =[] } |
