jwasm/Regress/PROC643.ASC
2014-06-18 19:16:56 +04:00

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