The available volatile registers are: eax, edx and ecx. All others must be always preserved
I am not using inline asm, but direct asm.
In PB394 I always referenced parameters by [ESP+...]
In PB400 The new way is [p.v_parm]
I need to preserve EBP,EBX,EDI since I need to use those registers in my Asm procedure.
Example :
Code: Select all
Procedure.l MyProc(a.l,b.l,c.l,d.l,e.l,f.l)
!MOV Eax, [p.v_a]
!MOV Ecx, [p.v_b]
!MOV Edx, [p.v_c]
;Now I want to move the other parms to registers which I have to reserve first
;How????
ProcedureReturn
EndProcedure
a.l=1:b.l=1:c.l=1:d.l=1:e.l=1:f.l=1
a=MyProc(a,b,c,d,e,f)
Debug a
Code: Select all
Procedure.l MyProc(a.l,b.l,c.l,d.l,e.l,f.l)
!PUSH Ebp
!PUSH Edi
!PUSH Ebx
!MOV Eax, [p.v_a+12]
!MOV Ecx, [p.v_b+12]
!MOV Edx, [p.v_c+12]
;...
!POP Ebx
!POP Edi
!POP Ebp
ProcedureReturn
EndProcedure
a.l=1:b.l=1:c.l=1:d.l=1:e.l=1:f.l=1
a=MyProc(a,b,c,d,e,f)
Debug a