[[[ÇØ°áÇØ¾ß ÇÒ ¹®Á¦µé]]] => ¸Þ´º¾ó ¾²±â => Àü󸮱⠱â´É ³Ö±â => ÄÚµå ÃÖÀûÈ­ ¾Ë°í¸®Áò ³Ö±â => ++, --, =°¡ º¯¼ö¿¡¸¸ °¡´ÉÇϵµ·Ï ÇØ³ù´Âµ¥, ¹è¿­ À妽Ì(a[2])¿¡µµ °¡´ÉÇϵµ·Ï ¹Ù²Ü °Í. => ÇÔ¼ö¿¡ ¹è¿­À» ³Ñ°ÜÁÙ ¼ö ÀÖµµ·Ï ÇÒ °Í. => ´ëºÎºÐÀÇ ¸í·É¿¡¼­ Àӽà ÀúÀå °ø°£À¸·Î¼­ ECX, EDXµîÀÇ ·¹Áö½ºÅ͸¦ ¾²´Âµ¥, ·¹Áö½ºÅÍÀÇ °³¼ö°¡ Á¦ÇÑÀûÀÌ¶ó¼­ Áߺ¹µÉ °æ¿ì°¡ »ý±æ ¼ö Àִµ¥, ÀÌ·² °æ¿ì¿¡ °á°ú°¡ À߸ø ³ª¿À°Ô µÈ´Ù. ¿¹¸¦ µé¾î int a = func( 4 ) + 10; ÀÌ·± ¹®ÀåÀÌ ±â°è¾î ÄÚµå·Î ¹Ù²ð ¶§ 1.MOV ECX, 10 2.MOV ECX, 4 3.PUSH ECX 4.CALL func 5.ADD ESP, 4 6.ADD ECX, EDX 7.MOV a, ECX ÀÌ·¸°Ô ¹Ù²î´Âµ¥, 1¹ø ¸í·É¿¡¼­ ECX¿¡´Ù Àӽ÷Π10À» ÀúÀåÇØ ³ù´Âµ¥ 2¹ø ¸í·É¿¡¼­ Àӽ÷Π°ªÀ» Áý¾î ³Ö´Â´Ù°í 4¸¦ ³Ö¾î¹ö·Á¼­ ¹Ì¸® ³Ö¾î ³õÀº °ª 10À» ÀÒ¾î¹ö¸± °æ¿ìµµ »ý±æ ¼ö ÀÖ´Ù. ->PUSH, POPÀ¸·Î ÇØ°áÇÒ ¼öµµ Àִµ¥... ÀÌ·² °æ¿ì ³Ê¹« ´À·ÁÁö°Ô µÈ´Ù. ->°¢ ¸í·É¸¶´Ù ·¹Áö½ºÅÍ »ç¿ë »óŸ¦ ÀúÀåÇØ ³õ°í, »õ·Î¿î Statement°¡ ½ÃÀ۵ɶ§¸¶´Ù ·¹Áö½ºÅÍ »ç¿ë »óŸ¦ ÃʱâÈ­ Çϵµ·Ï ÇØ³õÀº ´ÙÀ½¿¡ ·¹Áö½ºÅÍ »ç¿ë »óÅ¿¡ µû¶ó Àӽà ÀúÀå ·¹Áö½ºÅ͸¦ ¼±ÅÃÇϵµ·Ï ÇÏ´Â °Íµµ ±¦ÂúÀ» µí... => EAX ·¹Áö½ºÅÍ´Â ÇÔ¼öÀÇ ¸®ÅϰªÀ¸·Î ¿¹¾àÇØ³õ°í ¾²´Âµ¥, À̰Ͱú Áߺ¹µÉ °æ¿ì¿¡µµ ¿¹±âÄ¡ ¸øÇÑ °á°ú°¡ ³¯ ¼ö ÀÖ´Ù. => ¹®ÀÚ¿­ÀÇ µ¡¼À ¿¬»êÀ» ÇÒ ¶§ Àӽà ¹®ÀÚ¿­ º¯¼öµéÀÌ »ç¿ëµÇ´Âµ¥, À̰ÍÀ» ÀûÀýÈ÷ ¾ø¾ÖÁÖ´Â ¾Ë°í¸®Áòµµ ³ªÁß¿¡ ¸¸µé °Í. [0.9] [0.8] =>string¿¬»êµé Ãß°¡.( +, +=, = ) [0.78] =>VirtualMachine Ŭ·¡½º Ãß°¡, ÇÔ¼ö ¹ÙÀεù Ãß°¡ [0.77] =>IntermediateCode -> ±â°è¾î ÄÚµå ºÎºÐ¿¡ ´ëÇÑ ¹ö±×µé ¼öÁ¤. [0.75] =>IntermediateCode -> ±â°è¾î ÄÚµå ºÎºÐ Ãß°¡. =>TYPE_FUNCTION_CALL¿¡ ´ëÇÑ Å¸ÀÔ Ã¼Å© Ãß°¡ [0.7] =>IntermediateCode¿¡¼­ ¹Ù·Î ±â°è¾î Äڵ带 »ý¼ºÇÒ ¼ö ÀÖµµ·Ï Çϱâ À§ÇØ IntermediateCode Ŭ·¡½º¸¦ Àü¸é Àç ÄÚµù [0.6.2] =>0.5 ¹öÀü¿¡¼­ ¸¸µç IntermediateÄÚµå Ŭ·¡½º¿¡ ÇÔ¼ö¿Í ¹è¿­¿¡ ´ëÇÑ ÄÚµå »ý¼º ±â´É Ãß°¡ =>IntermediateCode Ŭ·¡½º ¸®ÆÑÅ͸µ [0.6.1] =>ÇÔ¼ö¿Í ¹è¿­À» Áö¿øÇϵµ·Ï SymbolTable°ú SyntaxTree¸¦ ¼öÁ¤ÇÔ. [0.6] =>Virtual MachineÀ» ¸¸µé¾î¼­ Intermediate Äڵ尡 ½ÇÇàµÉ ¼ö ÀÖµµ·Ï ÇÔ. [0.5] =>Intermediate ÄÚµå »ý¼º ±â´É Ãß°¡. [0.4] =>syntax tree¿¡¼­ ŸÀÔ Ã¼Å· Ãß°¡ [0.3] =>symbol table°ú syntax tree Ãß°¡ [0.2] =>±âº» ¹®¹ý¿¡ ´ëÇÑ parser ÄÚµù [0.1] =>±âº» ¹®¹ý¿¡ ´ëÇÑ lexer ÄÚµù Àü󸮱â´Â ±â´ÉÀ» ¾ÆÁ÷ ³ÖÁö ¾Ê¾ÒÀ½. [Àü󸮱â] #include #define [ÁÖ¼®] // /* ... */ [»ó¼ö] int»ó¼ö float»ó¼ö bool»ó¼ö string»ó¼ö vector»ó¼ö [Ű¿öµå] (º¯¼ö ¼±¾ð Ű¿öµå) int float bool string vector (·çÇÁ Ű¿öµå) for while (ºÐ±â Ű¿öµå) if else switch (Á¡ÇÁ Ű¿öµå) break continue default case return [½Éº¼] [¿¬»êÀÚ] »ê¼ú¿¬»êÀÚ +, -, *, /, % +=, -=, *=, /=, %= ++, -- = ³í¸®¿¬»êÀÚ &&, || ºñ±³¿¬»êÀÚ <, <=, >, >=, ==, != [±âŸ] ; () [] - Àε¦½Ì {} [ÇÔ¼ö] ¼±¾ð È£Ãâ Á¤ÀÇ