29 lines
498 B
ArmAsm
29 lines
498 B
ArmAsm
global setjmp
|
|
setjmp:
|
|
mov eax, [esp+4]
|
|
mov [eax], ebx
|
|
mov [eax+4], esi
|
|
mov [eax+8], edi
|
|
mov [eax+12], ebp
|
|
lea ecx, [esp+4]
|
|
mov [eax+16], ecx
|
|
mov ecx, [esp]
|
|
mov [eax+20], ecx
|
|
xor eax, eax
|
|
ret
|
|
|
|
global longjmp
|
|
longjmp:
|
|
mov edx, [esp+4]
|
|
mov eax, [esp+8]
|
|
mov ebx, [edx]
|
|
mov esi, [edx+4]
|
|
mov edi, [edx+8]
|
|
mov ebp, [edx+12]
|
|
mov esp, [edx+16]
|
|
mov ecx, [edx+20]
|
|
test eax, eax
|
|
jnz success
|
|
mov eax, 1
|
|
success:
|
|
jmp ecx |