어셈 (부트로더부분) jump하는것에 대한 질문입니다..
글쓴이: esllo / 작성시간: 토, 2008/07/26 - 5:28오후
소스코드를 간단히 작성해서 테스트 중에 있습니다.
그런데 궁금한게 있어서 질문 드립니다..
현재까지 작성한 소스는 다음과 같습니다..
1 BOOTSEG = 0x07c0 2 SECADDR = 0x1000 3 4 .code16 5 .text 6 .global start 7 start: 8 ljmp $BOOTSEG, $start2 9 10 start2: 11 movw %cs, %ax 12 movw %ax, %ds 13 movw %ax, %es 14 movw %ax, %ss 15
bochs 로 테스트 해 본 결과
0x00007c00에 Break를 걸고, 디버깅 하고 있는데,
ljmp하는 부분에서 무한루프에 빠지네요
bochs상에 나타나는 결과는 다음과 같습니다.
Next at t=7034736 (0) [0x00007c00] 0000:7c00 (unk. ctxt): jmp far 07c0:0000 ; ea0000c007 <bochs:3> n Next at t=7034737 (0) [0x00007c00] 07c0:0000 (unk. ctxt): jmp far 07c0:0000 ; ea0000c007 <bochs:4> n Next at t=7034738
커널 소스의 linux/arch/x86/boot/header.S와 별반 차이가 없는데..
이것저것 수정하면서 테스트 해도.. 결과는 마찬가지네요
segment:offset에서 offset부분을 라벨로 하면 인식이 안되는 건가요?
커널소스도 라벨로 인식을 하게 되어있거든요..
문제점이 무엇일까요? 답변 부탁드립니다..
Forums:
댓글 달기