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

📄 trampolines.s

📁 基于LWVCL开发的库
💻 S
字号:
/* * i386/trampolines.S * i386 trampolines codes for various occasions. * * Copyright (c) 1996, 1997 *	Transvirtual Technologies, Inc.  All rights reserved. * * See the file "license.terms" for information on usage and redistribution  * of this file.  */#include "kaffe/trampoline.h"	#if defined(TRAMPOLINE_FUNCTION)/* * If we have an explit function defined then use that. */TRAMPOLINE_FUNCTION()#else/* * Otherwise we'll try to construct one. */     .text     .align 4     .globl C_FUNC_NAME(i386_do_fixup_trampoline)/* Cygwin does not like the PIC declaration for some reason */#if defined(__CYGWIN__)     .def C_FUNC_NAME(i386_do_fixup_trampoline)     .scl 3     .type 32     .endef#else     .type C_FUNC_NAME(i386_do_fixup_trampoline), @function#endif     C_FUNC_NAME(i386_do_fixup_trampoline) :        popl	%eax	push	%ebp	mov	%esp,%ebp#if defined(PIC) && !defined(__CYGWIN__)	pushl	%ebx	call	.L2     .L2:	popl	%ebx	addl	$_GLOBAL_OFFSET_TABLE_+[.-.L2], %ebx	subl	$4, %esp	push	%eax	call	C_FUNC_NAME(soft_fixup_trampoline@PLT)	movl	-4(%ebp), %ebx#else	push	%eax	call	C_FUNC_NAME(soft_fixup_trampoline)#endif	leave	jmp	*%eax#if defined (HAVE_GCJ_SUPPORT)/* * Warning: These trampolines are so twisted they may not * be legal in some states.  Basically, what we're doing here is rely  * on the way cross-shared library calls are made. */     .text     .align 4     .globl C_FUNC_NAME((__kaffe_i386_gcj_fixup)     C_FUNC_NAME(__kaffe_i386_gcj_fixup) :	mov	(%esp), %eax	# get return address        add	-4(%eax), %eax	# add jump relative offset from previous instr.				# this points at at jmp *$off(%ebx) instr.	mov	2(%eax), %eax	# extract 'off'	add	%ebx, %eax	# compute $off(%ebx) 	pushl	%eax		# pass as first argument 	call	C_FUNC_NAME(gcj_fixup_trampoline) # returns target	addl	$4, %esp	# remove argument	jmp	*%eax		# jump to target#endif#endif#if defined(__linux__) && defined(__ELF__).section .note.GNU-stack,"",%progbits#endif

⌨️ 快捷键说明

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