From c9f003ea0a34a36fb6fb2bd285a7379f4aa36ea6 Mon Sep 17 00:00:00 2001 From: Drahflow Date: Fri, 27 Sep 2013 22:55:06 +0200 Subject: Static writes directly using r14 as well --- elymas/lib/sys/opt.ey | 27 +++++++++++++++++++-------- 1 file 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 } -- cgit v1.2.3