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

📄 far-hc11.s

📁 GNU binutils是GNU交叉工具链中的一个源码包
💻 S
字号:
;;; Test 68HC11 FAR trampoline generation;;; 2 trampolines are generated:;;; - one for '_far_bar';;; - one for '_far_foo';;; 'far_no_tramp' does not have any trampoline generated.;;;	.sect .text	.globl _start_start:start:		lds	#stack	ldx	#0xabcd	pshx	ldd	#0x1234	ldx	#0x5678	bsr	_far_bar	; Call to trampoline generated code	cpx	#0x1234	bne	fail		; X and D preserved (swapped by _far_bar)	cpd	#0x5678	bne	fail	pulx	cpx	#0xabcd		; Stack parameter preserved	bne	fail	ldd	#_far_foo	; Get address of trampoline handler	xgdx	jsr	0,x	ldd	#_far_bar	; Likewise (unique trampoline check)	xgdy	jsr	0,y	ldaa	#%page(_far_no_tramp)	ldy	#%addr(_far_no_tramp)	bsr	__call_a16	; No trampoline generated for _far_no_tramp	clra	clrb	waifail:	ldd	#1	wai	bra	start	.global	__return__return:	ins	rts	.sect .bank1,"ax"	.globl _far_bar	.far _far_bar		; Must mark symbol as far_far_bar:	jsr	local_bank1	xgdx	jmp	__returnlocal_bank1:	rts	.sect .bank2,"ax"	.globl _far_foo	.far _far_foo_far_foo:	jsr	local_bank2	jmp	__returnlocal_bank2:	rts	.sect .bank3,"ax"	.globl _far_no_tramp	.far _far_no_tramp_far_no_tramp:	jsr	local_bank3	jmp	__returnlocal_bank3:	rts	.sect .text	.globl __far_trampoline__far_trampoline:	psha				; (2) Save function parameter (high)	;; <Read current page in A>	psha				; (2)	;; <Set currenge page from B>	pshx				; (4)	tsx				; (3)	ldab	4,x			; (4) Restore function parameter (low)	ldaa	2,x			; (4) Get saved page number	staa	4,x			; (4) Save it below return PC	pulx				; (5)	pula				; (3)	pula				; (3) Restore function parameter (high)	jmp	0,y			; (4)	.globl __call_a16__call_a16:	;; xgdx				; (3)	;; <Read current page in A>	; (3) ldaa _current_page	psha				; (2)	;; <Set current page from B>	; (4) staa _current_page	;; xgdx				; (3)	jmp 0,y				; (4)	.sect .page0	.skip 100stack:

⌨️ 快捷键说明

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