diff options
| author | Drahflow <drahflow@gmx.de> | 2013-09-27 22:55:06 +0200 |
|---|---|---|
| committer | Drahflow <drahflow@gmx.de> | 2013-09-27 22:55:06 +0200 |
| commit | c9f003ea0a34a36fb6fb2bd285a7379f4aa36ea6 (patch) | |
| tree | 5a1e08bf6deab257cf8576ceff6669248aa02e2b /elymas/lib | |
| parent | 7bac36eb5770408963b97f183dd8214c698f41a8 (diff) | |
Static writes directly using r14 as well
Diffstat (limited to 'elymas/lib')
| -rw-r--r-- | elymas/lib/sys/opt.ey | 27 |
1 files changed, 19 insertions, 8 deletions
diff --git a/elymas/lib/sys/opt.ey b/elymas/lib/sys/opt.ey index 28faa9b..b82156f 100644 --- a/elymas/lib/sys/opt.ey +++ b/elymas/lib/sys/opt.ey @@ -547,16 +547,27 @@ { action STATICWRITE streq }' { [ - /r14 /rax :movqRegReg - 2 entry { 16 /rax /rax :movqMemDisp8Reg } rep + 2 entry { + 16 /r14 /rax :movqMemDisp8Reg + 2 entry 1 sub { 16 /rax /rax :movqMemDisp8Reg } rep - 3 entry { - 24 /rax /rcx :movqMemDisp8Reg # load extension area pointer - /rax /edx :movlMemReg # load scope length - /rdx :negqReg # prepare for substraction - 1 entry 1 /rdx /rcx :popqMemIndexScaleDisp32 # load entry from stack + 3 entry { + 24 /rax /rcx :movqMemDisp8Reg # load extension area pointer + /rax /edx :movlMemReg # load scope length + /rdx :negqReg # prepare for substraction + 1 entry 1 /rdx /rcx :popqMemIndexScaleDisp32 # load entry from stack + } { + 1 entry /rax :popqMemDisp32 + } ? * } { - 1 entry /rax :popqMemDisp32 + 3 entry { + 24 /r14 /rcx :movqMemDisp8Reg # load extension area pointer + /r14 /edx :movlMemReg # load scope length + /rdx :negqReg # prepare for substraction + 1 entry 1 /rdx /rcx :popqMemIndexScaleDisp32 # load entry from stack + } { + 1 entry /r14 :popqMemDisp32 + } ? * } ? * ] emitOpcodes } |
