부트코드에서 질문 드립니다.
아래는 arm 부트코드의 일부인데 아시는 대로 설명 좀 부탁드립니다.
아울러 아래에 질문한 사항에 대해 해답이 될만한 서적이 있다면 추천 바랍니다.
#include
#if defined(CONFIG_S5PC110) && defined(CONFIG_EVT1) && !defined(CONFIG_FUSED)
.word 0x2000
.word 0x0---------------------->.word gas지시어가 주소를 저장한다고 하는데
.word 0x0 .word 0x2000은 0x2000이라는 값을 저장하는 겁니까? 아니면 0x2000의 주소를
.word 0x0 저장하는 겁니까? 주소를 저장할 경우에 어느 곳에 어떻게 저장하는 겁니까?
#endif 제 얘기는 특별한 변수 같은 것도 없는데 어디에 저장 한다는 겁니까?
.globl _start
_start: b reset
ldr pc, _undefined_instruction
ldr pc, _software_interrupt
ldr pc, _prefetch_abort
ldr pc, _data_abort
ldr pc, _not_used
ldr pc, _irq
ldr pc, _fiq
_undefined_instruction: .word undefined_instruction
_software_interrupt: .word software_interrupt
_prefetch_abort: .word prefetch_abort
_data_abort: .word data_abort
_not_used: .word not_used
_irq: .word irq
_fiq: .word fiq
_pad: .word 0x12345678 /* now 16*4=64 */
.global _end_vect
_end_vect:
.balignl 16,0xdeadbeef--------------------> .balignl 이 것이 뜻하는 바가 무엇입니까?
/*************************************************************************
*
* Startup Code (reset vector)
_board_init_r_ofs:
.word board_init_r - _start------------------> 여기에서는 board_init_r의 주소에서 _start의 주소를 뺀 값을 저장
_rel_dyn_start_ofs: 하라는 얘기입니까?
.word __rel_dyn_start - _start
_rel_dyn_end_ofs:
.word __rel_dyn_end - _start
_dynsym_start_ofs:
.word __dynsym_start - _start
exception handlers
*/
.align 5
undefined_instruction:
get_bad_stack
bad_save_user_regs
bl do_undefined_instruction
참조 문서
> 아울러 아래에 질문한 사항에 대해 해답이 될만한 서적이 있다면 추천 바랍니다.
아래는 공식적인 GNU GAS document 입니다. LD와 AS의 문서는 Binutils 패키지속에 존재합니다.
저도 오래전에 GAS 처음 접했을 때, 별도의 책이 없어, GNU 매뉴얼을 끼고 열심히 봤던 기억이 납니다.
http://sourceware.org/binutils/docs-2.24/as/index.html
댓글 달기