ÇÁ·Î±×·¡¹Ö

 3200, 1/160 ȸ¿ø°¡ÀÔ  ·Î±×ÀΠ 
   park53kr
   c¾ð¾î¿¡¼­ Áú¹®ÀÌ¿ä~~!!

http://www.hackerschool.org/HS_Boards/zboard.php?AllArticle=true&no=3450 [º¹»ç]


C¾ð¾î¿¡¼­ º¯¼ö¸¦ ¼±¾ðÇÏÀݾƿä

¸¸¾à¿¡

int a = 10;
À̶ó°í Çϸé

±â°è´Â º¯¼ö¸í a¶ó´Â ´Ü¾î¸¦ ¸ð¸£´Âµ¥ ¾î¶² ÇüÅ·ΠÀúÀåÀ» Çϳª¿ä??

¿¹¸¦ µé¾î 0x0000007b À̶ó´Â ÁÖ¼Ò¿¡ 10À» ÀúÀåÇß´Ù°í ÇսôÙ.

±×·¯¸é

printf("%d", a); ¶ó°í ÇÒ¶§ ±â°è´Â a¶ó´Â ´Ü¾î¸¦ º¸°í ¾î¶»°Ô 0x0000007b ÁÖ¼Ò¸¦ ã¾Æ°¡¼­
10À» Ãâ·ÂÇϳª¿ä??

  Hit : 5865     Date : 2012/07/04 10:25



    
hayate114 ÀÌ »çÀÌÆ®¿¡ ÀÖ´Â ¸¸È­¸¦ º¸½Ã¸é ¾Æ½Ã°ÚÁö¸¸

ÄÄÆÄÀÏ·¯°¡ »ç¶÷ÀÌ Â§ ¼Ò½º¸¦ ±â°è¾î·Î ¹Ù²ãÁÖ´Â ¿ªÈ°À» ÇÕ´Ï´Ù.
2012/07/05  
hayate114 ÄÄÆÄÀÏ·¯´Â º¯¼ö°¡ ½ÇÁ¦ ¾î¶² ¹øÁö¸¦ °¡¸®Å°´ÂÁö¸¦ ±â¾ïÇϰí ÀÖ´Ù°¡ º¯¼ö¸¦ »ç¿ëÇÏ¸é ½ÇÁ¦ ¹øÁö¿¡ °ªÀ» Àаųª ¾²´Â Äڵ带 ´ë½Å ÀÛ¼ºÇØ ÁÝ´Ï´Ù.

http://winapi.co.kr/clec/cpp1/3-1-1.htm

winapi »çÀÌÆ®¿¡ ÀÚ¼¼ÇÏ°Ô ¼³¸íÀÌ ³ª¿Í ÀÖ½À´Ï´Ù ¤¾¤¾
2012/07/05  
wolverine Compiler´Â text levelÀÇ c code¸¦ machine instructionÀ¸·Î º¯È¯À» ÇØÁÖ´Â µµ±¸ ÀÔ´Ï´Ù.

C source --> compiler ---> machine instruction

µû¶ó¼­, compiler¸¦ ÀÌÇØÇϱâ À§Çؼ­´Â ¿ì¼± CPU Architecture¿¡ ´ëÇÑ study°¡ ¼±ÇàÀÌ µÇ¾î¾ß ÇÕ´Ï´Ù.
Processor°¡ ¾î¶»°Ô µ¹¾Æ°¡´ÂÁö, machine instruction(±â°è¾î)ÀÌ ¾î¶»°Ô ±¸¼ºµÇ°í ¼öÇàµÇ´ÂÁö¿¡
´ëÇÑ ÀÌÇØ¸¦ ¹ÙÅÁÀ¸·Î, Àû¾îµµ assembly language·Î ÇÁ·Î±×·¥ °³¹ßÀÌ °¡´ÉÇÒ Á¤µµ°¡ µÇ¾ú´Ù¸é,
Áú¹®ÇϽŠºÎºÐ¿¡ ´ëÇØ¼­ ½º½º·Î ´äÀ» ãÀ¸½Ç ¼ö ÀÖÀ» °Ì´Ï´Ù.

int a=10;

À̶ó°í ¼±¾ðÀ» Çϸé, compiler/linker´Â aÀÇ ½ÇÁúÀûÀÎ memory address¸¦ °áÁ¤Çϰí,
¿¹¸¦ µé¾î¼­ ´ÙÀ½°ú °°Àº instructionÀ» ¸¸µì´Ï´Ù.
(processor & compiler¸¶´Ù ´Ù¸§, ÇϳªÀÇ ¿¹Á¦ÀÓ...)

mov r1, °áÁ¤µÈ aÀÇ ÁÖ¼Ò; // °áÁ¤µÈ aÀÇ ÁÖ¼Ò¸¦ register r1¿¡ load
mov r2, 10; // Àý´ë°ª 10À» register r2¿¡ load
mov *(r1), r2; // r1ÀÇ °ªÀÌ ÁöÁ¤ÇÏ´Â memory¿¡ r2¿¡ ÀúÀåµÈ °ª(10)À» ÀúÀå

printfÇÔ¼ö¿¡ ÀÎÀÚ·Î a°¡ Àü´ÞÀÌ µÇ±â À§Çؼ­´Â,
mov r1, °áÁ¤µÈ aÀÇ ÁÖ¼Ò; // °áÁ¤µÈ aÀÇ ÁÖ¼Ò¸¦ register r1¿¡ load
mov r2, *(r1) // r1ÀÇ °ªÀÌ ÁöÁ¤ÇÏ´Â memory¿¡ ÀÖ´Â °ª(10)À» r2¸¦ ÀúÀå
r2¸¦ printf ÇÔ¼ö call½Ã µÎ¹øÂ° ÀÎÀÚ·Î ³Ñ°ÜÁÜ

Core processing unitÀº ³»ºÎ¿¡ Á¤ÇØÁø register fileÀ̶ó´Â ¿©·¯°³ÀÇ register¸¦
°¡Áö°í ÀÖÀ¸¸ç, ÀÌ´Â processor ±¸Á¶¸¶´Ù õÂ÷ ¸¸º° ÀÔ´Ï´Ù.
load/store, add, multiply, branch, compare µîÀÇ ´ëºÎºÐÀÇ ¸í·ÉÀº ÀÌ·¯ÇÑ registerµéÀ»
¸Å°³·Î ÇØ¼­ ¼öÇàÀÌ µË´Ï´Ù.
Áï, add r1,r2,r3 ¸í·É¾î´Â r1 regiter¿¡ ÀÖ´Â °ª°ú, r2 regsiter¿¡ ÀÖ´Â °ªÀ» ´õÇØ¼­
r3¿¡ ÀúÀåÇϰڴٴ ÀǹÌÀÔ´Ï´Ù.
À̸¦ À§Çؼ­´Â load ¸í·É¾î¸¦ ÀÌ¿ëÇØ¼­ memory¿¡ ÀÖ´Â °ªÀ» ¹Ì¸® r1, r2¿¡ ¿Å°Ü³õ¾Æ¾ß ÇÕ´Ï´Ù.
¶ÇÇÑ ¸í·É¾î ¼öÇà ÈÄ¿¡´Â r3ÀÇ °ªÀ» memory¿¡ ´Ù½Ã ¿Å°Ü³õ¾Æ¾ß ÇÕ´Ï´Ù.
registerÀÇ ¼ö´Â 16°³ 32°³µîÀ¸·Î Á¦ÇÑÀÌ µÇ¾îÀֱ⠶§¹®¿¡,
´ÙÀ½ ¸í·É¾î ¼öÇà½Ã¿¡µµ µ¿ÀÏÇÏ°Ô r1,r2,r3 °¡ »ç¿ëµÉ ¼öµµ ÀÖ½À´Ï´Ù.

À§ÀÇ ¿¹Á¦´Â ÀÌÇØ¸¦ µ½±â À§ÇÑ ÇϳªÀÇ pseudo code ÀÔ´Ï´Ù.

CPU Architecture¿¡ °üÇÑ °øºÎÀ» ÇϽô٠º¸¸é, À§ÀÇ Áú¹®¿¡ ´ëÇØ¼­,
assembly coding¿¡ ´ëÇØ¼­ ÀÚ¿¬½º·´°Ô ÀÌÇØÇÏ½Ç ¼ö ÀÖ½À´Ï´Ù.































2012/07/05