⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 setjmp.s

📁 Newlib 嵌入式 C库 标准实现代码
💻 S
字号:
/* This is file is a merger of SETJMP.S and LONGJMP.S *//* *  This file was modified to use the __USER_LABEL_PREFIX__ and *  __REGISTER_PREFIX__ macros defined by later versions of GNU cpp by *  Joel Sherrill (joel@OARcorp.com) *  Slight change: now includes i386mach.h for this (Werner Almesberger) * * Copyright (C) 1991 DJ Delorie * All rights reserved. * * Redistribution and use in source and binary forms is permitted * provided that the above copyright notice and following paragraph are * duplicated in all such forms. * * This file is distributed WITHOUT ANY WARRANTY; without even the implied * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. */ /* **	jmp_buf: **	 eax ebx ecx edx esi edi ebp esp eip **	 0   4   8   12  16  20  24  28  32 */       #include "i386mach.h"        .global SYM (setjmp)        .global SYM (__libc_longjmp)        .weak SYM (longjmp)       SOTYPE_FUNCTION(setjmp)       SOTYPE_FUNCTION(longjmp)       SOTYPE_FUNCTION(__libc_longjmp) SYM (setjmp):	pushl	ebp	movl	esp,ebp	pushl	edi	movl	8 (ebp),edi	movl	eax,0 (edi)	movl	ebx,4 (edi)	movl	ecx,8 (edi)	movl	edx,12 (edi)	movl	esi,16 (edi)	movl	-4 (ebp),eax	movl	eax,20 (edi)	movl	0 (ebp),eax	movl	eax,24 (edi)	movl	esp,eax	addl	$12,eax	movl	eax,28 (edi)		movl	4 (ebp),eax	movl	eax,32 (edi)	popl	edi	movl	$0,eax	leave	retSYM (__libc_longjmp):SYM (longjmp):	.weak longjmp	pushl	ebp	movl	esp,ebp	movl	8(ebp),edi	/* get jmp_buf */	movl	12(ebp),eax	/* store retval in j->eax */	movl	eax,0(edi)	movl	24(edi),ebp       __CLI	movl	28(edi),esp		pushl	32(edi)		movl	0(edi),eax	movl	4(edi),ebx	movl	8(edi),ecx	movl	12(edi),edx	movl	16(edi),esi	movl	20(edi),edi       __STI	ret

⌨️ 快捷键说明

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