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

📄 dhry_1.s

📁 ARM入门的好帮手.包含了从简单到相对较复杂的程序.
💻 S
字号:
	.file	"c:/at91/software/projects/bench/source/dhry_1.c"
	.option	svr4
	.option	arm_code
	.option	inter
	.ident	"hc4.5a -O7 \n"
	.option	noswst
	.seg	".data",data
.L00DATA:
	.align	4
	.global	Ptr_Glob
Ptr_Glob:
	.size	Ptr_Glob,0x4
	.type	Ptr_Glob, @object
	.block	 0x4
	.align	4
	.global	Next_Ptr_Glob
Next_Ptr_Glob:
	.size	Next_Ptr_Glob,0x4
	.type	Next_Ptr_Glob, @object
	.block	 0x4
	.align	4
	.global	Int_Glob
Int_Glob:
	.size	Int_Glob,0x4
	.type	Int_Glob, @object
	.block	 0x4
	.align	4
	.global	Bool_Glob
Bool_Glob:
	.size	Bool_Glob,0x4
	.type	Bool_Glob, @object
	.block	 0x4
	.align	4
	.global	Ch_1_Glob
Ch_1_Glob:
	.size	Ch_1_Glob,0x1
	.type	Ch_1_Glob, @object
	.block	 0x1
	.align	4
	.global	Ch_2_Glob
Ch_2_Glob:
	.size	Ch_2_Glob,0x1
	.type	Ch_2_Glob, @object
	.block	 0x1
	.seg	".bss",bss
.L00BSS:
	.global	Arr_1_Glob
	.align	4
Arr_1_Glob:	.block	200
	.size	Arr_1_Glob, 0xc8
	.type	Arr_1_Glob, @object
	.seg	".data"
	.seg	".bss"
	.global	Arr_2_Glob
	.align	4
Arr_2_Glob:	.block	0x2710
	.size	Arr_2_Glob, 0x2710
	.type	Arr_2_Glob, @object
	.seg	".data"
	.align	4
	.global	Reg
Reg:
	.size	Reg,0x4
	.type	Reg, @object
	.long	0x0
	.align	4
	.global	Begin_Time
Begin_Time:
	.size	Begin_Time,0x4
	.type	Begin_Time, @object
	.block	 0x4
	.align	4
	.global	End_Time
End_Time:
	.size	End_Time,0x4
	.type	End_Time, @object
	.block	 0x4
	.align	4
	.global	User_Time
User_Time:
	.size	User_Time,0x4
	.type	User_Time, @object
	.block	 0x4
	.align	4
	.global	Microseconds
Microseconds:
	.size	Microseconds,0x4
	.type	Microseconds, @object
	.block	 0x4
	.align	4
	.global	Dhrystones_Per_Second
Dhrystones_Per_Second:
	.size	Dhrystones_Per_Second,0x4
	.type	Dhrystones_Per_Second, @object
	.block	 0x4
	.seg	".text",text
	.option	code32,inter
.L00TEXT:
;-------------| Proc_1 |-------------------
	.align	4
	.global	Proc_1
Proc_1:
	.cfa_bf	Proc_1
	stmdb	%sp!,{%r4,%r8-%fp,%lr}
	.cfa_push	{%r4,%r8-%fp,%lr}
	mov	%r9,%r0
	ldr	%r8,[%r9, #0]
	ldr	%fp,[%pc, #.LC01-.-8]
	mov	%r0,%r8
	ldr	%r10,[%fp, #Ptr_Glob-.L00DATA]
	mov	%r1,%r10
	ldmia	%r1!,{%r2,%r3,%ip,%lr}
	stmia	%r0!,{%r2,%r3,%ip,%lr}
	ldmia	%r1!,{%r2,%r3,%ip,%lr}
	stmia	%r0!,{%r2,%r3,%ip,%lr}
	ldmia	%r1,{%r2,%r3,%ip,%lr}
	stmia	%r0,{%r2,%r3,%ip,%lr}
	mov	%ip,#5
	str	%ip,[%r9, #12]
	str	%ip,[%r8, #12]
	ldr	%ip,[%r9, #0]
	cmp	%r10,#0
	str	%ip,[%r8, #0]
	ldreq	%r1,[%fp, #Int_Glob-.L00DATA]
	beq	.L02826
	ldr	%ip,[%r10, #0]
	ldr	%r1,[%fp, #Int_Glob-.L00DATA]
	str	%ip,[%r8, #0]
	ldr	%r10,[%fp, #Ptr_Glob-.L00DATA]
.L02826:
	mov	%r0,#10
	add	%r2,%r10,#12
	bl	Proc_7
	ldrb	%ip,[%r8, #4]
	cmp	%ip,#0
	bne	.L02828
	mov	%ip,#6
	str	%ip,[%r8, #12]
	ldrb	%r0,[%r9, #8]
	add	%r1,%r8,#8
	bl	Proc_6
	ldr	%ip,[%fp, #Ptr_Glob-.L00DATA]
	ldr	%r0,[%r8, #12]
	ldr	%ip,[%ip, #0]
	mov	%r1,#10
	str	%ip,[%r8, #0]
	add	%r2,%r8,#12
	bl	Proc_7
	.cfa_remember_state
	ldmia	%sp!,{%r4,%r8-%ip}
	.cfa_pop	{%r4,%r8-%ip}
	bx	%ip
	.cfa_restore_state
.L02828:
	ldr	%r8,[%r9, #0]
	ldmia	%r8!,{%r0-%r3,%ip,%lr}
	stmia	%r9!,{%r0-%r3,%ip,%lr}
	ldmia	%r8,{%r0-%r3,%ip,%lr}
	stmia	%r9,{%r0-%r3,%ip,%lr}
	.cfa_remember_state
	ldmia	%sp!,{%r4,%r8-%ip}
	.cfa_pop	{%r4,%r8-%ip}
	bx	%ip
	.cfa_restore_state
	.cfa_ef
	.type Proc_1, @function
	.size Proc_1, . - Proc_1
;-------------| Proc_2 |-------------------
	.align	4
	.global	Proc_2
Proc_2:
	.cfa_bf	Proc_2
	ldr	%r3,[%r0, #0]
	ldr	%r2,[%pc, #.LC01-.-8]
	ldrb	%ip,[%r2, #Ch_1_Glob-.L00DATA]
	cmp	%ip,#65
	bne	.L02837
	ldr	%ip,[%r2, #Int_Glob-.L00DATA]
	add	%r3,%r3,#9
	sub	%ip,%r3,%ip
	str	%ip,[%r0, #0]
.L02837:
	bx	%lr
	.cfa_ef
	.type Proc_2, @function
	.size Proc_2, . - Proc_2
;-------------| Proc_3 |-------------------
	.align	4
	.global	Proc_3
Proc_3:
	.cfa_bf	Proc_3
	stmdb	%sp!,{%r4,%lr}
	.cfa_push	{%r4,%lr}
	ldr	%r3,[%pc, #.LC01-.-8]
	ldr	%ip,[%r3, #Ptr_Glob-.L00DATA]
	cmp	%ip,#0
	ldrne	%ip,[%ip, #0]
	strne	%ip,[%r0, #0]
	ldrne	%ip,[%r3, #Ptr_Glob-.L00DATA]
	mov	%r0,#10
	ldr	%r1,[%r3, #Int_Glob-.L00DATA]
	add	%r2,%ip,#12
	bl	Proc_7
	.cfa_remember_state
	ldmia	%sp!,{%r4,%ip}
	.cfa_pop	{%r4,%ip}
	bx	%ip
	.cfa_restore_state
	.cfa_ef
	.type Proc_3, @function
	.size Proc_3, . - Proc_3
;-------------| Proc_4 |-------------------
	.align	4
	.global	Proc_4
Proc_4:
	.cfa_bf	Proc_4
	ldr	%r3,[%pc, #.LC01-.-8]
	ldrb	%ip,[%r3, #Ch_1_Glob-.L00DATA]
	cmp	%ip,#65
	ldr	%ip,[%r3, #Bool_Glob-.L00DATA]
	movne	%r2,#0
	moveq	%r2,#1
	orr	%ip,%ip,%r2
	str	%ip,[%r3, #Bool_Glob-.L00DATA]
	mov	%ip,#66
	strb	%ip,[%r3, #Ch_2_Glob-.L00DATA]
	bx	%lr
	.cfa_ef
	.type Proc_4, @function
	.size Proc_4, . - Proc_4
;-------------| Proc_5 |-------------------
	.align	4
	.global	Proc_5
Proc_5:
	.cfa_bf	Proc_5
	ldr	%r3,[%pc, #.LC01-.-8]
	mov	%ip,#65
	strb	%ip,[%r3, #Ch_1_Glob-.L00DATA]
	mov	%ip,#0
	str	%ip,[%r3, #Bool_Glob-.L00DATA]
	bx	%lr
	.cfa_ef
	.type Proc_5, @function
	.size Proc_5, . - Proc_5
;-------------| testloop |-------------------
	.align	4
	.global	testloop
testloop:
	.cfa_bf	testloop
	stmdb	%sp!,{%r4-%fp,%lr}
	.cfa_push	{%r4-%fp,%lr}
	sub	%sp,%sp,#76
	.cfa_push	76
	mov	%r9,%r0
	mov	%r0,#48
	bl	malloc
	ldr	%r5,[%pc, #.LC01-.-8]
	add	%r10,%pc,#.LC02-.-8
	str	%r0,[%r5, #Next_Ptr_Glob-.L00DATA]
	mov	%r0,#48
	bl	malloc
	ldr	%ip,[%r5, #Next_Ptr_Glob-.L00DATA]
	str	%r0,[%r5, #Ptr_Glob-.L00DATA]
	str	%ip,[%r0, #0]
	mov	%ip,#0
	strb	%ip,[%r0, #4]
	mov	%ip,#2
	strb	%ip,[%r0, #8]
	mov	%ip,#40
	str	%ip,[%r0, #12]
	add	%r8,%r0,#16
	mov	%r2,#31
.LL28719:
	ldrb	%r3,[%r10], #1
	subs	%r2,%r2,#1
	strb	%r3,[%r8], #1
	bgt	.LL28719
	add	%r8,%pc,#.LC02+32-.-8
	add	%r6,%sp,#12
	ldmia	%r8!,{%r1-%r3,%ip}
	mov	%r0,%r6
	stmia	%r0!,{%r1-%r3,%ip}
	ldmia	%r8,{%r1-%r3,%ip}
	stmia	%r0,{%r1-%r3,%ip}
	ldr	%r7,[%pc, #.LC01+4-.-8]
	mov	%ip,#10
	cmp	%r9,#1
	str	%ip,[%r7, #Arr_2_Glob+0x65c-.L00BSS]
	mov	%fp,#1
	blt	.L028718
	add	%r10,%sp,#44
.L02874:
	mov	%ip,#65
	strb	%ip,[%r5, #Ch_1_Glob-.L00DATA]
	mov	%ip,#1
	str	%ip,[%r5, #Bool_Glob-.L00DATA]
	mov	%ip,#66
	mov	%r3,#2
	str	%r3,[%sp, #0]
	strb	%ip,[%r5, #Ch_2_Glob-.L00DATA]
	add	%r4,%pc,#.LC02+64-.-8
	ldmia	%r4!,{%r1-%r3,%ip}
	mov	%r0,%r10
	stmia	%r0!,{%r1-%r3,%ip}
	ldmia	%r4,{%r1-%r3,%ip}
	stmia	%r0,{%r1-%r3,%ip}
	mov	%r3,#1
	strb	%r3,[%sp, #8]
	mov	%r0,%r6
	mov	%r1,%r10
	bl	Func_2
	cmp	%r0,#0
	movne	%ip,#0
	ldr	%r2,[%sp, #0]
	moveq	%ip,#1
	mov	%r8,#3
	cmp	%r8,%r2
	str	%ip,[%r5, #Bool_Glob-.L00DATA]
	ble	.L02878
.L02877:
	add	%ip,%r2,%r2,lsl #2
	sub	%r3,%ip,#3
	mov	%r0,%r2
	add	%r2,%sp,#4
	str	%r3,[%sp, #4]
	mov	%r1,#3
	bl	Proc_7
	ldr	%ip,[%sp, #0]
	add	%r2,%ip,#1
	str	%r2,[%sp, #0]
	cmp	%r8,%r2
	bgt	.L02877
.L02878:
	ldr	%r3,[%sp, #4]
	mov	%r0,%r7
	add	%r1,%r7,#200
	bl	Proc_8
	ldr	%r0,[%r5, #Ptr_Glob-.L00DATA]
	mov	%r4,#65
	bl	Proc_1
	ldrb	%ip,[%r5, #Ch_2_Glob-.L00DATA]
	cmp	%r4,%ip
	bgt	.L028712
.L02879:
	mov	%r0,%r4
	mov	%r1,#67
	bl	Func_1
	ldrb	%ip,[%sp, #8]
	cmp	%ip,%r0
	bne	.L028711
	add	%r1,%sp,#8
	mov	%r0,#0
	bl	Proc_6
	add	%r8,%pc,#.LC02+0x60-.-8
	ldmia	%r8!,{%r1-%r3,%ip}
	mov	%r0,%r10
	stmia	%r0!,{%r1-%r3,%ip}
	ldmia	%r8,{%r1-%r3,%ip}
	stmia	%r0,{%r1-%r3,%ip}
	str	%fp,[%r5, #Int_Glob-.L00DATA]
.L028711:
	add	%ip,%r4,#1
	and	%r4,%ip,#255
	ldrb	%ip,[%r5, #Ch_2_Glob-.L00DATA]
	cmp	%r4,%ip
	ble	.L02879
.L028712:
	add	%fp,%fp,#1
	cmp	%fp,%r9
	ble	.L02874
.L028718:
	.cfa_remember_state
	add	%sp,%sp,#76
	.cfa_pop	76
	ldmia	%sp!,{%r4-%ip}
	.cfa_pop	{%r4-%ip}
	bx	%ip
	.cfa_restore_state
	.cfa_ef
	.type testloop, @function
	.size testloop, . - testloop
.LC02:
	.ascii	"DHRYSTONE PROGRAM, SOME STRING\0"
	.block	 0x1
	.ascii	"DHRYSTONE PROGRAM, 1'ST STRING\0"
	.block	 0x1
	.ascii	"DHRYSTONE PROGRAM, 2'ND STRING\0"
	.block	 0x1
	.ascii	"DHRYSTONE PROGRAM, 3'RD STRING\0"
	.block	 0x1
.LC01:
	.long	.L00DATA
	.long	.L00BSS
	.end

⌨️ 快捷键说明

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