´ÙÀ½ ÀÌÀü Â÷·Ê

4. ÄÁº¥¼Ç ºÎ¸£±â

4.1 4.1 Linux

GCC·Î ¸µÅ©Çϱâ

32ºñÆ® ÀÎÀÚ´Â 32ºñÆ® near¸®ÅÏ ¾îµå·¹½ºÀ§·Î ½ºÅÃ»ó¿¡ Çª½¬µÈ´Ù. %ebp, %esi, %edi, %ebx °¡ ÀúÀåµÈ´Ù. %eax¿¡ °á°ú°¡ ´ã±â°Å³ª %edx:%eax¿¡ 64ºñÆ® °á°ú°¡ ´ã±ä´Ù. GCC´Â ÀúÀåµÈ ·¹Áö½ºÅÍ¿¡ ÀÇÇØ È£ÃâµÇ´Â ÄÁº¥¼ÇÀ» º¯°æÇÒ ¼ö ÀÖ´Â ¿É¼ÇÀ» °¡Áö°í ÀÖÀ¸¸ç, ·¹Áö½ºÅÍ¿¡ ÀÎÀÚ¸¦ °¡Áö°í ÀÖÀ¸³ª FPU¸¦ »ý°¢ÇÏÁö ¾Ê´Â´Ù. i386 ÀÎÆ÷ ÆäÀÌÁö¸¦ üũÇ϶ó. GCC°¡ ÀÌ·¯ÇÑ Ç¥ÁØ ÄÁº¥¼ÇÀ» Á¦°øÇÒ·Á¸é ÇÔ¼ö¸¦ À§ÇØ asmlinkage attribute¸¦ ¼±¾ðÇØ¾ß ÇÑ´Ù. (³ª´Â ¾î¶»°Ô ±×°ÍÀÌ ÄÁº¥¼ÇÀ» ºÒ·¯¼­ º¯°æÇÏ´Â Áö¸¦ ¾ËÁö ¸øÇÑ´Ù.)

ELF vs a.out ¹®Á¦µé

¾î¶² C ÄÄÆÄÀÏ·¯´Â ¸ðµç ½Éº¼ Àü¿¡ °­Á¶¸¦ ÁغñÇÑ´Ù. Ưº°È÷, ¸®´ª½º a.out GCC ´Â ¸®´ª½º ELF GCC°¡ ¾øÀ» µ¿¾È ±×·¯ÇÑ Áغñ¸¦ ÇÑ´Ù. ¸®´ª½º ¼Ò½º Æ®¸®°¡ ±×°ÍÀ» ¾î¶»°Ô °ü¸®ÇÏ´Â Áö¸¦ º¸¶ó. (linux/include/linux/linkage.h). ¿©·¯ºÐµéÀº C->asm À̸§ º¯°æÀ» ´ÙÀ½°ú °°Àº ±â¼úÀ» »ðÀÔÇÔÀ¸·Î½á ¶Ù¾î³ÑÀ» ¼ö ÀÖ´Ù. void foo asm("bar") (void); foo ÇÔ¼ö¸¦ È®½ÇÈ÷ Çϱâ À§Çؼ­´Â ¾î¼Àºí¸®¿¡¼­ bar¸¦ È£ÃâÇØ¾ß ÇÑ´Ù. binutils ÆÐÅ°Áö¾ÈÀÇ objcopy À¯Æ¿¸®Æ¼´Â a.out ¸ñÀûÆÄÀÏÀº ELF ¸ñÀûÆÄÀÏ·Î ¸¸µé¼ö ÀÖÀ¸¸ç ¹Ý´ëÀÇ °æ¿ìµµ °¡²û °¡´É ÇÒ °ÍÀÌ´Ù.

Á÷Á¢ÀûÀÎ ¸®´ª½º ½Ã½ºÅÛ ÄÝ

ÀÌ°ÍÀº Àç¸í¸íÇÒ ¼ö ¾ø´Ù. ¿Ö³ÄÇϸé ÀÌ°ÍÀº ¹Ù²î¸é ȣȯ¼ºÀÌ ¾ø¾îÁö±â ¶§¹®ÀÌ´Ù. ±×¸®°í ÀÌ°ÍÀº libcÀÇ °íÁ¤ÀûÀÎ °Íµé°ú È®ÀåµÈ °ÍµéÀ» ¹æÇØÇÑ´Ù. Á¤¼®À¸·Î ÇÏÀÚ¸é, ¸®´ª½º ½Ã½ºÅÛ ¼­ºñ½º ÄÝÀ» Àç¸í¸íÇÏ´Â °ÍÀº libc¸¦ ÅëÇؼ­ ÇÑ´Ù. ÀÌÁ¦, libc·Î ¸µÅ©¸¦ ½ÃÅ°´Â °ÍÀ» ¿øÇÏÁö ¾ÊÀ» °ÍÀÌ´Ù. ¾Æ·¡¿¡¼­ linux-eforth- 1.0c.tgz À» º¸¶ó. ftp.forth.org/pub/Forth/Linux/ ¸®´ª½º ¼Ò½º°¡ µû¶ó¿Ã °ÍÀÌ´Ù. ¾î¶»°Ô ½Ã½ºÅÛ ÄÝÀ» »ç¿ëÇÒ °ÍÀÎÁö¸¦ ¼³¸íÇÏ´Â asm/unistd.h Çì´õÆÄÀϵµ µû¶ó¿Â´Ù. ±âº»ÀûÀ¸·Î ¿©·¯ºÐµéÀº %eax¿¡ __NR_syscallname ¹øÈ£¸¦ ³Ö°í, ÆĶó¸ÞŸ¸¦ %ebx, %ecx, %edx, %esi, %edi¿¡ °¢°¢ ³Ö°í int $0x80À» »ç¿ë ÇÒ ¼ö ÀÖÀ» °ÍÀÌ´Ù. °á°ú´Â %eax¿¡ ¸®Åϵǰí, ¿¡·¯½Ã¿¡´Â libc°¡ errno¸¦ ¼¼ÆÃÇÏ´Â °Í¿¡ ÇØ´çÇÏ´Â °á°ú¸¦ À½¼ö·Î %eax¿¡ ³õ´Â´Ù. »ç¿ëÀÚ ½ºÅØÀº °Ç´õ¸®Áö ¾Ê´Âµ¥, ½Ã½ºÅÛ ÄÝÀÌ ºÒ¸®¿ö Áö´Â µ¿¾È º°´Ù´Â °ÍÀÌ ÇÊ ¿äÇÏÁö ¾ÊÀ» °ÍÀÌ´Ù.

4.2 µµ½º

ÃÖ±ÙÀÇ µµ½º ÀͽºÅÙ´õµé¿¡´Â µµ½º¼­ºñ½º¸¦ À§ÇÑ ÀÎÅÍÆäÀ̽º°¡ µû¶ó¿Â´Ù. ±×¿¡ ´ëÇÑ docÆÄÀϵéÀ» Àо¶ó. º¸ÅëÀº int 0x21À» Èä³»³»´Âµ¥, µû¶ó¼­ ¸®¾ó¸ðµå¸¦ »ç¿ëÇÒ ¼ö ÀÖ°Ô µÈ´Ù. (³ª´Â ±×°ÍµéÀÌ, ÇÊ¿äÇÒ ¶§ 32ºñÆ® ÀÛµ¿ÀÚ¸¦ »ç¿ëÇÏ¿© 16ºñÆ® µµ½º ¼­ºñ½º¸¦ È£ÃâÇÔÀ¸·Î½á ÀÛ¾÷À» ÇÒ ¼ö ÀÖÀ¸¸®¶ó°í´Â »ý°¢Ä¡ ¾Ê´Â´Ù.) DPMI¿¡ °üÇÑ docÀº ´ÙÀ½¿¡¼­ ãÀ» ¼ö ÀÖ´Ù. ftp.oulu.fi/pub/msdos/programming/ DJGPP ¿¡´Â ÀÚüÀÇ (Á¦ÇѵÈ) ±³Ã¼µÈ libc°¡ µû¶ó¿Â´Ù. ÀÌ°ÍÀº ¸®´ª½º¿¡¼­ µµ½º·Î Å©·Î½ºÄÄÆÄÀÏÀÌ °¡´ÉÇÏ´Ù. ±×·¯³ª ÇöÀç ÀÖ´Â ÆÐÄ¡´Â a.out GCC¿ëÀ̸ç ÃÖ±ÙÀÇ ELF GCC´Â ÆÐÄ¡°¡ ÇÊ¿ä¾øÀ» °ÍÀÌ´Ù. ¸¸ÀÏ ±×°ÍµéÀÌ »õ·Î¿î ÆÐÄ¡¸¦ ÇÊ¿ä·Î ÇÑ´Ù¸é ³­¸ð¸£°Ú´Ù..

4.3 ¿©·¯ºÐµéÀÇ OS

[¾î¼Àºí¸® ÇÁ·Î±×·¡¸ÓµéÀÌ ¸¹ÀÌ ±×°Í¿¡ ´ëÇØ À̾߱â ÇÏ°í ÀÖ´Â °ÍÀÌ´Ù.]

ºÎÆ® ·Î´õ ÄÚµå¿Í 32ºñÆ® ¸ðµå·Î µé¾î°¡±â

ÇÁ·ÎÅؼÇÀÇ ±âÃÊ

ÀÎÅÍ·´Æ® ´Ù·ç±â

16ºñÆ® ½Ã½ºÅÛ ¼­ºñ½º¸¦ »ç¿ëÇÏ´Â V86/R86 ¸ðµå

À̰͵鿡 ´ëÇÑ Á¤º¸¸¦ ¾îµð¼­ ¾òÀ» °ÍÀΰ¡

[´Ù¸¥ ¹®¼­¿¡ À̺κе鿡 ´ëÇÑ ¾È³»Ç¥½Ã¸¦ º¸ÅÂÁֱ⠹ٶõ´Ù] Á¤º¸ÀÇ Áß¿äÇÑ ¼Ò½º´Â OS¿¡ Á¸ÀçÇÏ°í ÀÖ´Ù. ¸¹Àº ¾È³»Ç¥½ÃµéÀÌ ¾Æ·¡ÀÇ WWW ÆäÀÌÁö¿¡ ÀÖ´Ù. www.eleves.ens.fr:8080/home/rideau/Tunes/Review/OSes.html


´ÙÀ½ ÀÌÀü Â÷·Ê