Tag: bootloader

0

64bit ๋ฉ€ํ‹ฐ์ฝ”์–ด OS ์›๋ฆฌ์™€ ๊ตฌ์กฐ - Day 1

์ด ๊ธ€์€ โ€˜64๋น„ํŠธ ๋ฉ€ํ‹ฐ์ฝ”์–ด OS ์›๋ฆฌ์™€ ๊ตฌ์กฐ - ํ•œ์Šนํ›ˆ ์ €์žโ€™์„ ๊ณต๋ถ€ํ•˜๋ฉฐ ์ •๋ฆฌํ•œ ๋‚ด์šฉ์„ ์ž‘์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค. ์„ธ์ƒ์—์„œ ๊ฐ€์žฅ ๊ฐ„๋‹จํ•œ BootLoader๋ถ€ํŠธ ๋กœ๋”๋ฅผ ์ •์ƒ์ ์œผ๋กœ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ ์œ„ํ•ด์„œ๋Š” ํ•œ๊ฐ€์ง€ ๊ทœ์น™์ด ์žˆ๋‹ค. ๋จผ์ € ๋ถ€ํŠธ ์„นํ„ฐ 512Byte์˜ ๋งˆ์ง€๋ง‰ 2Byte๋Š” ๋ฐ˜๋“œ์‹œ 0x55, 0xAA๋ฅผ ๊ฐ€์ ธ์•ผ ํ•œ๋‹ค. ์•„๋ž˜๋Š” ์„ธ์ƒ์—์„œ ๊ฐ€์žฅ ๊ฐ„๋‹จํ•œ ๋ถ€ํŠธ๋กœ๋”๋ฅผ ์ž‘์„ฑํ•œ ์†Œ์Šค ์ฝ”๋“œ์ด๋‹ค. 12345678[ORG 0x00][BITS 16]SECTION .textjmp $times 510 - ($ - $$) db 0x00db 0x55db 0xAA ์œ„ ์ฝ”๋“œ์—์„œ [ORG 0x00]์€ 0x00 ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ์—์„œ ์‹œ์ž‘ํ•œ๋‹ค๋Š” ์˜๋ฏธ์ด๋ฉฐ, [BITS 16]์€ ์•„๋ž˜ ์ฝ”๋“œ๋Š” 16bit๋ผ๊ณ  ์•Œ๋ ค์ค€๋‹ค. SECTION .text์€ .text ์„น์…˜์˜ ์‹œ์ž‘์„ ์˜๋ฏธํ•˜๊ณ  jmp $์€ ํ˜„์žฌ ์œ„์น˜์—์„œ ๋ฌดํ•œ Loop์„ ํ•˜๋ฉฐ ๋Œ€๊ธฐํ•˜๊ฒŒ ํ•œ๋‹ค. ์—ฌ๊ธฐ๊นŒ์ง€ ์ด ๋ช‡ Byte๊ฐ€ ์ž‘์„ฑ๋œ ์ง€ ์†Œ์Šค ์ฝ”๋“œ๋กœ๋Š” ํ™•์ธ์ด ์–ด๋ ต๊ธฐ์— 510byte (512byte์—์„œ ๋งˆ์ง€๋ง‰ 0x55, 0xAA 2byte๋ฅผ ๋บ€ ์ˆซ์ž)๋งŒํผ ์ฑ„์šฐ๊ธฐ ์œ„ํ•ด์„œ times 510 - ($ - $$) db 0x00์ด๋ผ๊ณ  ํ‘œํ˜„ํ•œ๋‹ค. ์ด ์˜๋ฏธ๋Š” $(ํ˜„์žฌ ์ฃผ์†Œ)์ด์—์„œ $$(์„น์…˜์˜ ์ฃผ์†Œ)๋ฅผ ๋บ€ ๊ฐ’, ๋‹ค์‹œ ๋งํ•ด ์ด ์ƒ์„ฑ๋œ opcode ํฌ๊ธฐ๋ฅผ ๋บ€ ๋‚˜๋จธ์ง€๋ฅผ 0x00์œผ๋กœ ์ฑ„์šฐ๊ฒ ๋‹ค๋Š” ์˜๋ฏธ์ด๋‹ค. ์ดํ›„ 0x55, 0xAA๋ฅผ ์ฑ„์šฐ๋ฉด ์ •ํ™•ํžˆ 512byte ํฌ๊ธฐ์˜ ๋ฐ”์ด๋„ˆ๋ฆฌ ํŒŒ์ผ์ด ์ƒ์„ฑ๋˜๊ฒŒ ๋œ๋‹ค. ํ™”๋ฉด ๋ฒ„ํผ ์ œ์–ด์–ด๋ฆด ์  ์ปดํ“จํ„ฐ๋ฅผ ํ‚ค๋ฉด ๊นœ๋นก์ด๋Š” ์ปค์„œ์™€ ํ•จ๊ป˜ ๋œป ๋ชจ๋ฅผ ์˜์–ด๋“ค์ด ์ฃผ๋ฃฉ์ฃผ๋ฃฉ ๋‚˜์˜ค๋Š” ๊ฑธ ๋ณธ ๊ธฐ์–ต์ด ์žˆ๋‹ค. ํ˜„์žฌ ์ž‘์„ฑ๋œ Boot Loader์— ์œ„์™€ ๊ฐ™์€ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋น„๋””์˜ค ๋ฉ”๋ชจ๋ฆฌ์— ํ˜•์‹์— ๋งž์ถฐ ๋ฐ์ดํ„ฐ๋ฅผ ๋„ฃ์–ด์ฃผ๋Š” ๊ฑฐ๋กœ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋Ÿฌ๊ธฐ ์œ„ํ•ด์„  ๋น„๋””์˜ค ๋ฉ”๋ชจ๋ฆฌ์˜ ์‹œ์ž‘ ์ฃผ์†Œ 0xB8000์— ๋ฌธ์ž 1 Byte, ์†์„ฑ 1 Byte ์ด 2 Byte์ธ ํ˜•์‹์— ๋งž์ถฐ ๊ฐ€๋กœ 80, ์„ธ๋กœ 25์ž ์ด 4000 Byte์— ์ž‘์„ฑํ•˜๊ฒŒ ๋œ๋‹ค. 12345678... ์ƒ๋žต ...SECTION .textmov ax, 0xb800mov ds, axmov byte[0x00], 'J'mov byte[0x01], 0x4Ajmp $... ์ƒ๋žต ... ์ด๋ ‡๊ฒŒ ์ž‘์„ฑํ•˜๊ณ  QEMU๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ์ฒซ ๊ธ€์ž๊ฐ€ ๋นจ๊ฐ„ ๋ฐฐ๊ฒฝ์˜ J๊ฐ€ ๋ณด์ด๊ฒŒ ๋œ๋‹ค. ์„ธ๊ทธ๋จผํŠธ ์ดˆ๊ธฐํ™”