mirror of
https://github.com/NishiOwO/JWasm.git
synced 2025-04-22 01:04:39 +00:00
231 lines
3.3 KiB
Plaintext
231 lines
3.3 KiB
Plaintext
|
|
;--- check 64-bit settings
|
|
;--- + option frame
|
|
;--- + win64:2
|
|
;--- PROC FRAME
|
|
|
|
;--- p02nxu and p04nxu won't work yet, because
|
|
;--- the registers pushed by USES are pushed AFTER
|
|
;--- the stack for INVOKE is reserved.
|
|
|
|
ifdef __JWASM__
|
|
.x64
|
|
.model flat,fastcall
|
|
endif
|
|
|
|
option casemap:none
|
|
|
|
.CODE
|
|
|
|
;--- p01: frame;noauto win64:0
|
|
;--- p02: frame:noauto win64:2
|
|
;--- p03: frame:auto win64:0
|
|
;--- p04: frame:auto win64:2
|
|
|
|
;--- create 4*8 variants
|
|
;--- 1 = no FRAME, no locals, no uses - nnn
|
|
;--- 2 = FRAME, no locals, no uses - fnn
|
|
;--- 3 = no FRAME, locals, no uses - nln
|
|
;--- 4 = FRAME, locals, no uses - fln
|
|
;--- 5 = no FRAME, no locals, uses - nnu
|
|
;--- 6 = FRAME, no locals, uses - fnu
|
|
;--- 7 = no FRAME, locals, uses - nlu
|
|
;--- 8 = FRAME, locals, uses - flu
|
|
|
|
ifdef __JWASM__
|
|
option frame:noauto
|
|
option win64:0
|
|
endif
|
|
|
|
p01nnn proc
|
|
ret
|
|
p01nnn endp
|
|
|
|
p01fnn proc FRAME
|
|
.endprolog
|
|
ret
|
|
p01fnn endp
|
|
|
|
p01nln proc
|
|
local lcl1:DWORD
|
|
mov eax, lcl1
|
|
ret
|
|
p01nln endp
|
|
|
|
p01fln proc FRAME
|
|
local lcl1:DWORD
|
|
.endprolog
|
|
mov eax, lcl1
|
|
ret
|
|
p01fln endp
|
|
|
|
p01nnu proc uses rbx
|
|
ret
|
|
p01nnu endp
|
|
|
|
ifdef __JWASM__
|
|
p01fnu proc FRAME uses rbx
|
|
.endprolog
|
|
ret
|
|
p01fnu endp
|
|
endif
|
|
|
|
p01nlu proc uses rbx
|
|
local lcl1:DWORD
|
|
mov eax, lcl1
|
|
ret
|
|
p01nlu endp
|
|
|
|
p01flu proc FRAME
|
|
local lcl1:DWORD
|
|
.endprolog
|
|
mov eax, lcl1
|
|
ret
|
|
p01flu endp
|
|
|
|
ifdef __JWASM__
|
|
;-------------------------------
|
|
;--- repeat 8 procs with win64:2
|
|
;-------------------------------
|
|
option win64:2
|
|
|
|
p02nnn proc
|
|
ret
|
|
p02nnn endp
|
|
|
|
p02fnn proc FRAME
|
|
.endprolog
|
|
ret
|
|
p02fnn endp
|
|
|
|
p02nln proc
|
|
local lcl1:DWORD
|
|
mov eax, lcl1
|
|
ret
|
|
p02nln endp
|
|
|
|
p02fln proc FRAME
|
|
local lcl1:DWORD
|
|
.endprolog
|
|
mov eax, lcl1
|
|
ret
|
|
p02fln endp
|
|
|
|
p02nnu proc uses rbx
|
|
ret
|
|
p02nnu endp
|
|
|
|
p02fnu proc FRAME uses rbx
|
|
.endprolog
|
|
ret
|
|
p02fnu endp
|
|
|
|
p02nlu proc uses rbx
|
|
local lcl1:DWORD
|
|
mov eax, lcl1
|
|
ret
|
|
p02nlu endp
|
|
|
|
p02flu proc FRAME
|
|
local lcl1:DWORD
|
|
.endprolog
|
|
mov eax, lcl1
|
|
ret
|
|
p02flu endp
|
|
|
|
;-----------------------------------------------------
|
|
;--- now repeat everything, this time with frame:auto
|
|
;-----------------------------------------------------
|
|
|
|
option frame:auto
|
|
option win64:0
|
|
|
|
p03nnn proc
|
|
ret
|
|
p03nnn endp
|
|
|
|
p03fnn proc FRAME
|
|
ret
|
|
p03fnn endp
|
|
|
|
p03nln proc
|
|
local lcl1:DWORD
|
|
mov eax, lcl1
|
|
ret
|
|
p03nln endp
|
|
|
|
p03fln proc FRAME
|
|
local lcl1:DWORD
|
|
mov eax, lcl1
|
|
ret
|
|
p03fln endp
|
|
|
|
p03nnu proc uses rbx
|
|
ret
|
|
p03nnu endp
|
|
|
|
p03fnu proc FRAME uses rbx
|
|
ret
|
|
p03fnu endp
|
|
|
|
p03nlu proc uses rbx
|
|
local lcl1:DWORD
|
|
mov eax, lcl1
|
|
ret
|
|
p03nlu endp
|
|
|
|
p03flu proc FRAME
|
|
local lcl1:DWORD
|
|
mov eax, lcl1
|
|
ret
|
|
p03flu endp
|
|
|
|
;-------------------------------
|
|
;--- repeat 8 procs with win64:2
|
|
;-------------------------------
|
|
option win64:2
|
|
|
|
p04nnn proc
|
|
ret
|
|
p04nnn endp
|
|
|
|
p04fnn proc FRAME
|
|
ret
|
|
p04fnn endp
|
|
|
|
p04nln proc
|
|
local lcl1:DWORD
|
|
mov eax, lcl1
|
|
ret
|
|
p04nln endp
|
|
|
|
p04fln proc FRAME
|
|
local lcl1:DWORD
|
|
mov eax, lcl1
|
|
ret
|
|
p04fln endp
|
|
|
|
p04nnu proc uses rbx
|
|
ret
|
|
p04nnu endp
|
|
|
|
p04fnu proc FRAME uses rbx
|
|
ret
|
|
p04fnu endp
|
|
|
|
p04nlu proc uses rbx
|
|
local lcl1:DWORD
|
|
mov eax, lcl1
|
|
ret
|
|
p04nlu endp
|
|
|
|
p04flu proc FRAME
|
|
local lcl1:DWORD
|
|
mov eax, lcl1
|
|
ret
|
|
p04flu endp
|
|
|
|
endif
|
|
|
|
END
|