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

📄 t-macros.i

📁 gdb-6.8 Linux下的调试程序 最新版本
💻 I
字号:
	.macro start	.text	.align 2	.globl _start_start:	ldi r0, 0	.endm	.macro exit47	ldi r4, 1	ldi r0, 47	trap 15	.endm	.macro exit0	ldi r4, 1	ldi r0, 0	trap 15	.endm	.macro exit1	ldi r4, 1	ldi r0, 1	trap 15	.endm	.macro exit2	ldi r4, 1	ldi r0, 2	trap 15	.endm	.macro load reg val	ldi \reg, #\val	.endm	.macro load2w reg hi lo	ld2w \reg, @(1f,r0)	.data	.align 21:	.short \hi	.short \lo	.text	.endm	.macro check exit reg val	cmpeqi	\reg, #\val	brf0t 1f0:	ldi r4, 1	ldi r0, \exit	trap 151:	.endm	.macro check2w2 exit reg hi lo	st2w	\reg, @(1f,r0)	ld	r2, @(1f, r0)	cmpeqi	r2, #\hi	brf0f	0f	ld	r2, @(1f + 2, r0)	cmpeqi	r2, #\lo	brf0f	0f	bra	2f0:	ldi r4, 1	ldi r0, \exit	trap 15	.data	.align 21:	.long 0	.text2:	.endm	.macro loadacc2 acc guard hi lo	ldi	r2, #\lo	mvtaclo	r2, \acc	ldi	r2, #\hi	mvtachi	r2, \acc	ldi	r2, #\guard	mvtacg	r2, \acc	.endm	.macro checkacc2 exit acc guard hi lo	ldi	r2, #\guard	mvfacg	r3, \acc	cmpeq	r2, r3	brf0f	0f	ldi	r2, #\hi	mvfachi	r3, \acc	cmpeq	r2, r3	brf0f	0f	ldi	r2, #\lo	mvfaclo	r3, \acc	cmpeq	r2, r3	brf0f	0f	bra	4f0:	ldi r4, 1	ldi r0, \exit	trap 154:	.endm	.macro loadpsw2 val	ldi r2, #\val	mvtc	r2, cr0	.endm	.macro checkpsw2 exit val	mvfc	r2, cr0	cmpeqi	r2, #\val	brf0t	1f	ldi r4, 1	ldi r0, \exit	trap 151:	.endm	.macro hello	;; 4:write (1, string, strlen (string))	ldi r4, 4	ldi r0, 1	ldi r1, 1f	ldi r2, 2f-1f-1	trap 15	.section	.rodata1:	.string "Hello World!\n"2:	.align 2	.text	.endm;;; Blat our DMAP registers so that they point at on-chip imem	.macro point_dmap_at_imem	.text	ldi r2, MAP_INSN | 0xf	st r2, @(DMAP_REG,r0)	ldi r2, MAP_INSN	st r2, @(IMAP1_REG,r0)	.endm;;; Patch VEC so that it jumps back to code that checks PSW;;; and then exits with success.	.macro check_interrupt vec psw src;;; Patch the interrupt vector's AE entry with a jmp to success	.text	ldi r4, #1f	ldi r5, \vec	;; 		ld2w r2, @(0,r4)	st2w r2, @(0,r5)	ld2w r2, @(4,r4)	st2w r2, @(4,r5)	;; 		bra 9f	nop;;; Code that gets patched into the interrupt vector	.data1:	ldi r1, 2f@word	jmp r1;;; Successfull trap jumps back to here	.text;;; Verify the PSW2:	mvfc	r2, cr0	cmpeqi	r2, #\psw	brf0t	3f	nop	exit1;;; Verify the original addr3:	mvfc	r2, bpc	cmpeqi	r2, #\src@word	brf0t	4f	exit24:	exit0;;; continue as normal9:		.endm	PSW_SM = 0x8000	PSW_01 = 0x4000	PSW_EA = 0x2000	PSW_DB = 0x1000	PSW_DM = 0x0800	PSW_IE = 0x0400	PSW_RP = 0x0200	PSW_MD = 0x0100	PSW_FX = 0x0080	PSW_ST = 0x0040	PSW_10 = 0x0020	PSW_11 = 0x0010	PSW_F0 = 0x0008	PSW_F1 = 0x0004	PSW_14 = 0x0002	PSW_C  = 0x0001;;;	DMAP_MASK = 0x3fff	DMAP_BASE = 0x8000	DMAP_REG = 0xff04	IMAP0_REG = 0xff00	IMAP1_REG = 0xff02	MAP_INSN = 0x1000;;;	VEC_RI   = 0x3ff00	VEC_BAE  = 0x3ff04	VEC_RIE  = 0x3ff08	VEC_AE   = 0x3ff0c	VEC_TRAP = 0x3ff10	VEC_DBT  = 0x3ff50	VEC_SDBT = 0x3fff4	VEC_DBI  = 0x3ff58	VEC_EI   = 0x3ff5c

⌨️ 快捷键说明

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