Proposal to change ProcedureReturn
Posted: Fri Apr 22, 2011 7:21 pm
Example of ProcedureReturn:
At this moment Procedurereturn produce such code:
I propose to work ProcedureReturn to produce such code:
Code: Select all
Procedure BSWAP32(value.L)
! MOV EAX,[p.v_value]
! BSWAP EAX
ProcedureReturn
EndProcedure
Global value.L = BSWAP32($12345678)
Code: Select all
0040103F: PUSH 12345678
00401044: CALL 00401069
00401049: MOV [DWORD DS:004030E4], EAX
...
00401069: MOV EAX, [DWORD SS:ESP+4]
0040106D: BSWAP EAX
0040106F: JMP 00401073 ;<=-\
00401071: XOR EAX, EAX ;<=- | ProcedureReturn (Jump over unused ProcedureReturn 0)
00401073: RETN 4 ;<=- /
Code: Select all
0040103F: PUSH 12345678
00401044: CALL 00401069
00401049: MOV [DWORD DS:004030E4], EAX
...
00401069: MOV EAX, [DWORD SS:ESP+4]
0040106D: BSWAP EAX
REMOVE -> 0040106F: JMP 00401073 ;<- REMOVE
REMOVE -> 00401071: XOR EAX, EAX ;<- REMOVE
00401073: RETN 4