Home > Study > C Language > ARM System Programming > [ex32] BOOT_CODE

[ex32] BOOT_CODE
Study Language

문제 설명


	.syntax unified
	.thumb

	.text

	.word	0x20005000
	.word	__start

	.global	__start
  	.type 	__start, %function
__start:

	.extern __RO_LIMIT__
	.extern __RW_base__
	.extern __ZI_base__
	.extern __ZI_LIMIT__

	ldr		r0, =__RO_LIMIT__
	ldr		r1, =__RW_base__
	ldr		r3, =__ZI_base__

	cmp		r0, r1
	beq		2f

1:

	@ RW 복사 코드 작성


2:
	ldr		r1, =__ZI_LIMIT__
	mov		r2, #0x0
3:

	@ BSS 초기화 코드 작성


	.extern Main

	bl		Main

	b		.

	.end

정답 코드


	.syntax unified
	.thumb

	.text

	.word	0x20005000
	.word	__start

	.global	__start
  	.type 	__start, %function
__start:

	.extern __RO_LIMIT__
	.extern __RW_BASE__
	.extern __ZI_BASE__
	.extern __ZI_LIMIT__

	ldr		r0, =__RO_LIMIT__
	ldr		r1, =__RW_BASE__
	ldr		r3, =__ZI_BASE__

	cmp		r0, r1
	beq		2f

1:
	cmp		r1, r3
	ittt	lo
	ldrlo	r2, [r0], #4
	strlo	r2, [r1], #4
	blo		1b

2:
	ldr		r1, =__ZI_LIMIT__
	mov		r2, #0x0
3:
	cmp		r3, r1
	itt		lo
	strlo	r2, [r3], #4
	blo		3b

	.extern Main

	bl		Main

	b		.
			
	.end

메모


printf 내부의 \n 습관화 필요