_longjmp.s

来自「KPIT GNU Tools is a set of GNU developme」· S 代码 · 共 32 行

S
32
字号
// our buffer looks like:/  eax,ebx,ecx,edx,esi,edi,esp,ebp,pc// _longjmp is called with two parameters:  jmp_buf*,int/ jmp_buf* is at 4(%esp), int is at 8(%esp)/ retaddr is, of course, at (%esp)	.globl	_longjmp	.globl	longjmp_longjmp:longjmp:	movl	4(%esp), %ebx	/ address of buf	movl	8(%esp), %eax	/ store return value	movl	24(%ebx), %esp	/ restore stack	movl	32(%ebx), %edi/ Next line sets up return address.	movl	%edi, 0(%esp)		movl	8(%ebx), %ecx	movl	12(%ebx), %edx	movl	16(%ebx), %esi	movl	20(%ebx), %edi	movl	28(%ebx), %ebp	movl	4(%ebx), %ebx	testl	%eax,%eax	jne	bye	incl	%eax		/ eax hold 0 if we are herebye:	ret

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?