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

📄 dhry_1.s

📁 ARM入门的好帮手.包含了从简单到相对较复杂的程序.
💻 S
字号:
	.file	"c:/at91/software/projects/bench/source/dhry_1.c"
	.option	svr4
	.option	thumb_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	code16,inter
.L00TEXT:
;-------------| Proc_1 |-------------------
	.global	Proc_1
Proc_1:
	.cfa_bf	Proc_1
	push	{%r4-%r7,%lr}
	.cfa_push	{%r4-%r7,%lr}
	sub	%sp,#4
	.cfa_push	4
	mov	%r7,%r0
	ldr	%r5,[%r7, #0]
	ldr	%r6,[%pc, #.LC01-.-4]
	ldr	%r4,[%r6, #Ptr_Glob-.L00DATA]
	mov	%r0,%r5
	mov	%r1,%r4
	ldmia	%r1!,{%r2,%r3}
	stmia	%r0!,{%r2,%r3}
	ldmia	%r1!,{%r2,%r3}
	stmia	%r0!,{%r2,%r3}
	ldmia	%r1!,{%r2,%r3}
	stmia	%r0!,{%r2,%r3}
	ldmia	%r1!,{%r2,%r3}
	stmia	%r0!,{%r2,%r3}
	ldmia	%r1!,{%r2,%r3}
	stmia	%r0!,{%r2,%r3}
	ldmia	%r1!,{%r2,%r3}
	stmia	%r0!,{%r2,%r3}
	mov	%r3,#5
	str	%r3,[%r7, #12]
	str	%r3,[%r5, #12]
	ldr	%r3,[%r7, #0]
	str	%r3,[%r5, #0]
	cmp	%r4,#0
	beq	.L02825
	ldr	%r3,[%r4, #0]
	str	%r3,[%r5, #0]
	ldr	%r1,[%r6, #Int_Glob-.L00DATA]
	ldr	%r4,[%r6, #Ptr_Glob-.L00DATA]
	b	.L02826
.L02825:
	ldr	%r1,[%r6, #Int_Glob-.L00DATA]
.L02826:
	mov	%r0,#10
	mov	%r2,%r4
	add	%r2,#12
	bl	Proc_7
	ldrb	%r3,[%r5, #4]
	cmp	%r3,#0
	bne	.L02828
	mov	%r3,#6
	str	%r3,[%r5, #12]
	ldrb	%r0,[%r7, #8]
	mov	%r1,%r5
	add	%r1,#8
	bl	Proc_6
	ldr	%r3,[%r6, #Ptr_Glob-.L00DATA]
	ldr	%r3,[%r3, #0]
	str	%r3,[%r5, #0]
	ldr	%r0,[%r5, #12]
	mov	%r1,#10
	mov	%r2,%r5
	add	%r2,#12
	bl	Proc_7
	.cfa_remember_state
	add	%sp,#4
	.cfa_pop	4
	pop	{%r4-%r7}
	.cfa_pop	{%r4-%r7}
	pop	{%r3}
	.cfa_pop	{%r3}
	bx	%r3
	.cfa_restore_state
.L02828:
	ldr	%r5,[%r7, #0]
	ldmia	%r5!,{%r0-%r3}
	stmia	%r7!,{%r0-%r3}
	ldmia	%r5!,{%r0-%r3}
	stmia	%r7!,{%r0-%r3}
	ldmia	%r5!,{%r0-%r3}
	stmia	%r7!,{%r0-%r3}
	.cfa_remember_state
	add	%sp,#4
	.cfa_pop	4
	pop	{%r4-%r7}
	.cfa_pop	{%r4-%r7}
	pop	{%r3}
	.cfa_pop	{%r3}
	bx	%r3
	.cfa_restore_state
	.cfa_ef
	.type Proc_1, @function
	.size Proc_1, . - Proc_1
;-------------| Proc_2 |-------------------
	.global	Proc_2
Proc_2:
	.cfa_bf	Proc_2
	ldr	%r2,[%r0, #0]
	add	%r2,#10
	ldr	%r1,[%pc, #.LC01-.-4]
	ldrb	%r3,[%r1, #Ch_1_Glob-.L00DATA]
	cmp	%r3,#65
	bne	.L02837
	sub	%r2,#1
	ldr	%r3,[%r1, #Int_Glob-.L00DATA]
	sub	%r2,%r3
	str	%r2,[%r0, #0]
.L02837:
	bx	%lr
	.cfa_ef
	.type Proc_2, @function
	.size Proc_2, . - Proc_2
;-------------| Proc_3 |-------------------
	.global	Proc_3
Proc_3:
	.cfa_bf	Proc_3
	push	{%lr}
	.cfa_push	{%lr}
	sub	%sp,#4
	.cfa_push	4
	ldr	%r1,[%pc, #.LC01-.-4]
	ldr	%r2,[%r1, #Ptr_Glob-.L00DATA]
	cmp	%r2,#0
	beq	.L02845
	ldr	%r3,[%r2, #0]
	str	%r3,[%r0, #0]
	ldr	%r2,[%r1, #Ptr_Glob-.L00DATA]
.L02845:
	mov	%r0,#10
	ldr	%r1,[%r1, #Int_Glob-.L00DATA]
	add	%r2,#12
	bl	Proc_7
	.cfa_remember_state
	add	%sp,#4
	.cfa_pop	4
	pop	{%r3}
	.cfa_pop	{%r3}
	bx	%r3
	.cfa_restore_state
	.cfa_ef
	.type Proc_3, @function
	.size Proc_3, . - Proc_3
;-------------| Proc_4 |-------------------
	.global	Proc_4
Proc_4:
	.cfa_bf	Proc_4
	ldr	%r2,[%pc, #.LC01-.-4]
	ldrb	%r3,[%r2, #Ch_1_Glob-.L00DATA]
	cmp	%r3,#65
	beq	.LL2854
	mov	%r1,#0
	b	.LL2855
.LL2854:
	mov	%r1,#1
.LL2855:
	ldr	%r3,[%r2, #Bool_Glob-.L00DATA]
	orr	%r3,%r1
	str	%r3,[%r2, #Bool_Glob-.L00DATA]
	mov	%r3,#66
	strb	%r3,[%r2, #Ch_2_Glob-.L00DATA]
	bx	%lr
	.cfa_ef
	.type Proc_4, @function
	.size Proc_4, . - Proc_4
;-------------| Proc_5 |-------------------
	.global	Proc_5
Proc_5:
	.cfa_bf	Proc_5
	mov	%r3,#65
	ldr	%r2,[%pc, #.LC01-.-4]
	strb	%r3,[%r2, #Ch_1_Glob-.L00DATA]
	mov	%r3,#0
	str	%r3,[%r2, #Bool_Glob-.L00DATA]
	bx	%lr
	.cfa_ef
	.type Proc_5, @function
	.size Proc_5, . - Proc_5
;-------------| testloop |-------------------
	.global	testloop
testloop:
	.cfa_bf	testloop
	push	{%r4-%r7,%lr}
	.cfa_push	{%r4-%r7,%lr}
	sub	%sp,#84
	.cfa_push	84
	str	%r0,[%sp, #0]
	mov	%r0,#48
	bl	malloc
	ldr	%r3,[%pc, #.LC01-.-4]
	str	%r0,[%r3, #Next_Ptr_Glob-.L00DATA]
	mov	%r0,#48
	bl	malloc
	ldr	%r3,[%pc, #.LC01-.-4]
	str	%r0,[%r3, #Ptr_Glob-.L00DATA]
	ldr	%r3,[%r3, #Next_Ptr_Glob-.L00DATA]
	str	%r3,[%r0, #0]
	mov	%r3,#0
	strb	%r3,[%r0, #4]
	mov	%r3,#2
	strb	%r3,[%r0, #8]
	mov	%r3,#40
	str	%r3,[%r0, #12]
	add	%r5,%pc,#.LC01+4-.-4
	mov	%r7,%r0
	add	%r7,#16
	mov	%r2,#31
.LL28719:
	ldrb	%r3,[%r5, #0]
	strb	%r3,[%r7, #0]
	add	%r5,#1
	add	%r7,#1
	sub	%r2,#1
	bgt	.LL28719
	add	%r5,%pc,#.LC01+36-.-4
	add	%r7,%sp,#20
	ldmia	%r5!,{%r0-%r3}
	stmia	%r7!,{%r0-%r3}
	ldmia	%r5!,{%r0-%r3}
	stmia	%r7!,{%r0-%r3}
	mov	%r2,#10
	ldr	%r3,[%pc, #.LC01+0x44-.-4]
	str	%r2,[%r3, #Arr_2_Glob-0xa4-.L00BSS]
	mov	%r4,#1
	ldr	%r3,[%sp, #0]
	cmp	%r3,#1
	blt	.L028718
	ldr	%r3,[%pc, #.LC01+0x48-.-4]
	add	%r3,#200
	str	%r3,[%sp, #4]
.L02874:
	mov	%r2,#65
	ldr	%r3,[%pc, #.LC01-.-4]
	strb	%r2,[%r3, #Ch_1_Glob-.L00DATA]
	mov	%r2,#1
	str	%r2,[%r3, #Bool_Glob-.L00DATA]
	mov	%r2,#66
	strb	%r2,[%r3, #Ch_2_Glob-.L00DATA]
	mov	%r3,#2
	str	%r3,[%sp, #8]
	mov	%r5,#3
	add	%r6,%pc,#.LC01+0x4c-.-4
	add	%r7,%sp,#52
	ldmia	%r6!,{%r0-%r3}
	stmia	%r7!,{%r0-%r3}
	ldmia	%r6!,{%r0-%r3}
	stmia	%r7!,{%r0-%r3}
	mov	%r2,#1
	add	%r3,%sp,#16
	strb	%r2,[%r3, #0]
	add	%r0,%sp,#20
	add	%r1,%sp,#52
	bl	Func_2
	neg	%r2,%r0
	and	%r2,%r0
	sub	%r2,#1
	lsr	%r2,#31
	ldr	%r3,[%pc, #.LC01-.-4]
	str	%r2,[%r3, #Bool_Glob-.L00DATA]
	ldr	%r2,[%sp, #8]
	cmp	%r5,%r2
	ble	.L02878
.L02877:
	mov	%r3,#5
	mul	%r3,%r2
	sub	%r3,%r5
	str	%r3,[%sp, #12]
	mov	%r0,%r2
	mov	%r1,%r5
	add	%r2,%sp,#12
	bl	Proc_7
	ldr	%r3,[%sp, #8]
	add	%r2,%r3,#1
	str	%r2,[%sp, #8]
	cmp	%r5,%r2
	bgt	.L02877
.L02878:
	ldr	%r0,[%pc, #.LC01+0x48-.-4]
	ldr	%r1,[%sp, #4]
	ldr	%r3,[%sp, #12]
	bl	Proc_8
	ldr	%r3,[%pc, #.LC01-.-4]
	ldr	%r0,[%r3, #Ptr_Glob-.L00DATA]
	bl	Proc_1
	mov	%r6,#65
	ldr	%r3,[%pc, #.LC01-.-4]
	ldrb	%r3,[%r3, #Ch_2_Glob-.L00DATA]
	cmp	%r6,%r3
	bgt	.L028712
.L02879:
	mov	%r0,%r6
	mov	%r1,#67
	bl	Func_1
	add	%r2,%sp,#16
	ldrb	%r3,[%r2, #0]
	cmp	%r3,%r0
	bne	.L028711
	mov	%r0,#0
	mov	%r1,%r2
	bl	Proc_6
	add	%r5,%pc,#.LC01+0x6c-.-4
	add	%r7,%sp,#52
	ldmia	%r5!,{%r0-%r3}
	stmia	%r7!,{%r0-%r3}
	ldmia	%r5!,{%r0-%r3}
	stmia	%r7!,{%r0-%r3}
	ldr	%r3,[%pc, #.LC01-.-4]
	str	%r4,[%r3, #Int_Glob-.L00DATA]
	mov	%r5,%r4
.L028711:
	add	%r3,%r6,#1
	lsl	%r6,%r3,#24
	lsr	%r6,#24
	ldr	%r3,[%pc, #.LC01-.-4]
	ldrb	%r3,[%r3, #Ch_2_Glob-.L00DATA]
	cmp	%r6,%r3
	ble	.L02879
.L028712:
	ldr	%r3,[%sp, #8]
	mov	%r1,%r3
	mul	%r1,%r5
	ldr	%r0,[%sp, #12]
	bl	_divmod
	str	%r0,[%sp, #8]
	add	%r3,%sp,#8
	ldr	%r2,[%r3, #0]
	add	%r2,#10
	ldr	%r3,[%pc, #.LC01-.-4]
	ldrb	%r3,[%r3, #Ch_1_Glob-.L00DATA]
	cmp	%r3,#65
	bne	.L028716
	sub	%r2,#1
	ldr	%r3,[%pc, #.LC01-.-4]
	ldr	%r3,[%r3, #Int_Glob-.L00DATA]
	sub	%r2,%r3
	add	%r3,%sp,#8
	str	%r2,[%r3, #0]
.L028716:
	add	%r4,#1
	ldr	%r3,[%sp, #0]
	cmp	%r4,%r3
	ble	.L02874
.L028718:
	.cfa_remember_state
	add	%sp,#84
	.cfa_pop	84
	pop	{%r4-%r7}
	.cfa_pop	{%r4-%r7}
	pop	{%r3}
	.cfa_pop	{%r3}
	bx	%r3
	.cfa_restore_state
	.cfa_ef
	.type testloop, @function
	.size testloop, . - testloop
	.align	4
.LC01:
	.long	.L00DATA
	.ascii	"DHRYSTONE PROGRAM, SOME STRING\0"
	.block	 0x1
	.ascii	"DHRYSTONE PROGRAM, 1'ST STRING\0"
	.block	 0x1
	.long	.L00BSS+1792
	.long	.L00BSS
	.ascii	"DHRYSTONE PROGRAM, 2'ND STRING\0"
	.block	 0x1
	.ascii	"DHRYSTONE PROGRAM, 3'RD STRING\0"
	.block	 0x1
	.end

⌨️ 快捷键说明

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