°³¶ËÀ̳׿¡¼ ÆÇ¸ÅµÈ "LLVM Cookbook" Á¤°¡ 30,000¿ø Æò±ÕÇÒÀΰ¡
|
|
|
1Àå. LLVM ¼³°è¿Í »ç¿ë¹ý ¼Ò°³ ¸ðµâ ¼³°è ÀÌÇØ Clang/LLVMÀ» ÀÌ¿ëÇÑ Å©·Î½ºÄÄÆÄÀϸµ C ¼Ò½ºÄڵ带 LLVM ¾î¼Àºí¸®·Î º¯È¯ IRÀ» LLVM ºñÆ®ÄÚµå·Î º¯È¯ LLVM ºñÆ®Äڵ带 Ÿ°Ù ¸Ó½Å ¾î¼Àºí¸®·Î º¯È¯ LLVM ºñÆ®Äڵ带 LLVM ¾î¼Àºí¸®·Î ¿ªº¯È¯ LLVM IR º¯È¯ LLVM ºñÆ®ÄÚµå ¸µÅ· LLVM ºñÆ®ÄÚµå ½ÇÇà C ÇÁ·ÐÆ®¿£µå Clang »ç¿ë GO ÇÁ·ÐÆ®¿£µå »ç¿ë µå·¡°ï¿¡±× »ç¿ë
2Àå. ÇÁ·ÐÆ®¿£µå ÀÛ¼º ´Ü°è ¼Ò°³ TOY ¾ð¾î Á¤ÀÇ ·º¼ ±¸Çö ¹æ¹ý Ãß»ó ±¸¹® Æ®¸® Á¤ÀÇ Æļ ±¸Çö ´Ü¼ø Ç¥Çö½ÄÀÇ ÆÄ½Ì ÀÌÇ× Ç¥Çö½ÄÀÇ ÆÄ½Ì ÆĽÌÀ» À§ÇÑ µå¶óÀ̹ö Àû¿ë TOY ¾ð¾î ´ë»ó ·º¼ ½ÇÇà °¢ Ãß»ó ±¸¹® Æ®¸® Ŭ·¡½º¸¦ À§ÇÑ IR ÄÚµå »ý¼º ±â¹ý Á¤ÀÇ Ç¥Çö½ÄÀ» À§ÇÑ IRÄÚµå »ý¼º ÇÔ¼ö¸¦ À§ÇÑ IR ÄÚµå »ý¼º IR ÄÚµå ÃÖÀûÈ ±â´É Ãß°¡
3Àå. ÇÁ·ÐÆ®¿£µå È®Àå°ú JIT ÄÄÆÄÀÏ Ãß°¡ ¼Ò°³ Á¶°Ç¹® ÄÚµå »ý¼º- if/then/else ¹Ýº¹¹® ÄÚµå »ý¼º »ç¿ëÀÚ Á¤ÀÇ ¿¬»êÀÚ- ÀÌÇ× ¿¬»êÀÚ »ç¿ëÀÚ Á¤ÀÇ ¿¬»êÀÚ- ´ÜÇ× ¿¬»êÀÚ JIT ÄÄÆÄÀÏ Ãß°¡
4Àå. ÃÖÀûÈ Áغñ ¼Ò°³ ÃÖÀûÈÀÇ ´Ù¾çÇÑ ·¹º§ LLVM Æнº ±¸Çö opt Åø·Î ±¸ÇöÇÑ Æнº ½ÇÇà »õ·Î¿î Æнº¿¡¼ ´Ù¸¥ Æнº »ç¿ë Æнº ¸Å´ÏÀú¿¡ Æнº µî·Ï ºÐ¼® Æнº ±¸Çö ¿¡Àϸ®¾î½º ºÐ¼® Æнº ±¸Çö ´Ù¸¥ ºÐ¼® Æнº »ç¿ë
5Àå. ÃÖÀûÈ ±¸Çö ¼Ò°³ Á×Àº ÄÚµå Á¦°Å Æнº ÀζóÀÎ º¯È¯ Æнº ÀÛ¼º ¸Þ¸ð¸® ÃÖÀûÈ Æнº ÀÛ¼º LLVM IR º´ÇÕ ¹Ýº¹¹® º¯È¯°ú ÃÖÀûÈ Ç¥Çö½Ä Àç¹èÄ¡ IR º¤ÅÍÈ ±âŸ ÃÖÀûÈ Æнº
6Àå. Ÿ°Ù µ¶¸³Àû ÄÚµå »ý¼º±â ¼Ò°³ LLVM IRÀÇ »ý¸íÁÖ±â GraphViz¸¦ ÀÌ¿ëÇÑ LLVM IR Á¦¾î È帧 ±×·¡ÇÁ ½Ã°¢È TableGenÀ» ÀÌ¿ëÇÑ Å¸°Ù ÁöÁ¤ ¸í·É¾î ÁýÇÕ Á¤ÀÇ ¸Ó½Å ÄÚµå µð½ºÅ©¸³ÅÍ Ãß°¡ MachineInstrBuilder Ŭ·¡½º ±¸Çö MachineBasicBlock Ŭ·¡½º ±¸Çö MachineFunction Ŭ·¡½º ±¸Çö ¸í·É¾î ¼±ÅÃÀÚ ÀÛ¼º SelectionDAG ±³Á¤ SelectionDAG ÃÖÀûÈ DAG¿¡¼ ¸í·É¾î ¼±Åà SelectionDAG¿¡¼ ¸í·É¾î ½ºÄÉÁÙ¸µ
7Àå. ¸Ó½Å ÄÚµå ÃÖÀûÈ ¼Ò°³ ¸Ó½Å ÄÚµåÀÇ °øÅëºÎºÐ Ç¥Çö½Ä Á¦°Å À¯È¿ ±¸°£ ºÐ¼® ·¹Áö½ºÅÍ ÇÒ´ç ÇÁ·Ñ·Î±×-¿¡ÇÊ·Î±× ÄÚµå »ðÀÔ ÄÚµå »ý¼º ²¿¸® È£Ãâ ÃÖÀûÈ ÇüÁ¦ È£Ãâ ÃÖÀûÈ
8Àå. LLVM ¹é¿£µå ÀÛ¼º ¼Ò°³ ·¹Áö½ºÅÍ¿Í ·¹Áö½ºÅÍ ÁýÇÕ Á¤ÀÇ È£Ãâ ±Ô¾à Á¤ÀÇ ¸í·É¾î ÁýÇÕ Á¤ÀÇ ÇÁ·¹ÀÓ Àú¼öÁØÈ ±¸Çö ¸í·É¾î Ãâ·Â ¸í·É¾î ¼±Åà ¸í·É¾î ÀÎÄÚµù Ãß°¡ º¸Á¶ Ÿ°Ù Áö¿ø ´ÙÁß ¸í·É¾î·Î Àú¼öÁØÈ Å¸°Ù µî·Ï
9Àå. ´Ù¾çÇÑ ÇÁ·ÎÁ§Æ®¿¡¼ÀÇ LLVM È°¿ë ¼Ò°³ LLVMÀÇ ¿¹¿Ü ó¸® Sanitizer »ç¿ë ¹æ¹ý LLVMÀ¸·Î °¡ºñÁö Ä÷ºÅÍ ÀÛ¼º LLVM IRÀ» ÀÚ¹Ù½ºÅ©¸³Æ®·Î º¯È¯ Clang Á¤Àû ºÐ¼®±âÀÇ »ç¿ë bugpoint »ç¿ë LLDB »ç¿ë LLVM À¯Æ¿¸®Æ¼ Æнº »ç¿ë
[ÀÌ Ã¥¿¡¼ ´Ù·ç´Â ³»¿ë] - LLVMÀÇ ¸ðµâ½Ä µðÀÚÀΰú LLVM µµ±¸ ¼Ò°³ - ¾ð¾î¿¡ ´ëÇÑ ÇÁ·ÐÆ®¿£µå ÀÛ¼º - JIT ±â´É Ãß°¡ ¹× ¿©·¯ ¾ð¾îÀÇ ÇÁ·ÐÆ®¿£µå »ç¿ë - LLVM Æнº ±¸Á¶ ¹× LLVM Æнº ¸Å´ÏÀú ÀÌÇØ - ºÐ¼® Æнº °³¹ß ¹× ÃÖÀûÈ Æнº º¯È¯ - TOY ¾ð¾î·Î LLVM ¹é¿£µå ±¸Çö - Selection DAG ´Ü°è¿¡¼ ÄÚµå ÃÖÀûÈ ¹× º¯¼ö ·¹Áö½ºÅÍ ÇÒ´ç
[ÀÌ Ã¥ÀÇ ´ë»ó µ¶ÀÚ] ÄÄÆÄÀÏ·¯ °³³ä¿¡ Àͼ÷ÇÏ°í LLVM ±â¹Ý ±¸Á¶¸¦ ÀÌÇØÇÏ°í ŽÇèÇϱ⸦ ¿øÇϸç, ¾÷¹«¿¡ È°¿ëÇÏ°íÀÚ ÇÏ´Â ÄÄÆÄÀÏ·¯ ¿£Áö´Ï¾î¸¦ À§ÇÑ °ÍÀÌ´Ù. ¶ÇÇÑ ÄÄÆÄÀÏ·¯¿Í Á÷Á¢ ¿¬°üÀº ¾øÁö¸¸ ¼öõ ¶óÀÎÀÇ Äڵ带 ÀÛ¼ºÇÏ´Â ÇÁ·Î±×·¡¸Ó¸¦ À§ÇÑ Ã¥À̱⵵ ÇÏ´Ù. ÄÄÆÄÀÏ·¯ µ¿ÀÛ ¹æ½Ä¿¡ ´ëÇÑ Áö½ÄÀ» ¹ÙÅÁÀ¸·Î ÃÖÀûÈµÈ Äڵ带 ÀÛ¼ºÇØ °í¼º´ÉÀÇ ±ò²ûÇÑ ÇÁ·Î±×·¥À» °³¹ßÇÒ ¼ö ÀÖ´Ù.
[ÀÌ Ã¥ÀÇ ±¸¼º] 1Àå, 'LLVM ¼³°è¿Í »ç¿ë¹ý'¿¡¼´Â LLVM°ú Clang¸¦ ´Ù¿î·ÎµåÇØ ¼³Ä¡ÇÏ´Â ¹æ¹ý°ú LLVM ³»ºÎ µ¿ÀÛ°ú °ü·ÃµÈ ¿©·¯ ¿¹Á¦¸¦ ÅëÇØ LLVMÀÇ ¸ðµâ ±¸Á¶¿¡ ´ëÇØ ¼³¸íÇÑ´Ù. ¶ÇÇÑ ÇÁ·ÐÆ®¿£µå¿¡ °ü·ÃµÈ ´Ù¾çÇÑ ¿¹Á¦¸¦ ´Ù·é´Ù. 2Àå, 'ÇÁ·ÐÆ®¿£µå ÀÛ¼º ´Ü°è'¿¡¼´Â ÇÁ·Î±×·¡¹Ö ¾ð¾îÀÇ ÇÁ·ÐÆ®¿£µå ±¸Çö ¹æ¹ýÀ» ¼³¸íÇÑ´Ù. TOY ¾ð¾î¸¦ À§ÇØ ÇÏÀ§ ´Ü°èºÎÅÍ °£´ÜÇÑ ÄÄÆÄÀÏ·¯ ÇÁ·ÐÆ®¿£µå¸¦ ¸¸µé¸ç, À̸¦ ÅëÇØ ÇÁ·ÐÆ®¿£µå ¾ð¾î°¡ LLVM IR·Î º¯È¯µÇ´Â °úÁ¤À» ´«À¸·Î È®ÀÎÇغ»´Ù. 3Àå, 'ÇÁ·ÐÆ®¿£µå È®Àå°ú JIT ÄÄÆÄÀÏ Ãß°¡'¿¡¼´Â TOY ¾ð¾îÀÇ °í±Þ ±â´ÉÀ» »ìÆ캸°í ÇÁ·ÐÆ®¿£µå¿¡ JIT ÄÄÆÄÀÏ ±â´ÉÀ» Ãß°¡ÇÑ´Ù. ´ëºÎºÐÀÇ Çö´ë ÇÁ·Î±×·¡¹Ö ¾ð¾î¿¡¼ ãÀ» ¼ö ÀÖ´Â °·ÂÇÑ ±â´ÉÀ» ±¸ÇöÇÑ´Ù. 4Àå, 'ÃÖÀûÈ Áغñ'¿¡¼´Â LLVM IRÀÇ Æнº ±â¹Ý ±¸Á¶¸¦ ´Ù·é´Ù. ´Ù¾çÇÑ ÃÖÀûÈ ´Ü°è¸¦ ŽÇèÇÏ°í, °¢ ´Ü°è¿¡¼ ¾î¶² ÃÖÀûÈ ±â¼úÀÌ Àû¿ëµÇ´ÂÁö »ìÆ캻´Ù. LLVM Æнº¸¦ ½º½º·Î ÀÛ¼ºÇÒ ¼ö ÀÖ°Ô ´Ü°èº°·Î ¼³¸íÇÑ´Ù. 5Àå, 'ÃÖÀûÈ ±¸Çö'¿¡¼´Â ÈçÈ÷ »ç¿ëµÇ´Â LLVM IR¿¡ ´ëÇÑ ´Ù¾çÇÑ ÃÖÀûÈ Æнº ±¸Çö ¹æ¹ýÀ» ¼³¸íÇÑ´Ù. ¶ÇÇÑ ¾ÆÁ÷ LLVM ¿ÀǼҽº Äڵ忡 °ø°³µÇÁö ¾ÊÀº º¤ÅÍÈ ±â¼ú °ü·Ã ³»¿ëµµ »ìÆ캻´Ù. 6Àå, 'Ÿ°Ù µ¶¸³Àû ÄÚµå »ý¼º±â'¿¡¼´Â Ÿ°Ù µ¶¸³Àû ÄÚµå »ý¼º±âÀÇ Ãß»óÀûÀÎ ±â¹Ý ±¸Á¶¿¡ ´ëÇØ ¼³¸íÇÑ´Ù. LLVM IRÀÌ ÃÖÁ¾ÀûÀ¸·Î ±â°è Äڵ带 »ý¼ºÇϱâ À§ÇØ »ç¿ëÇÏ´Â Selection DAG·Î ¾î¶»°Ô º¯È¯µÇ´ÂÁöµµ »ìÆ캻´Ù. 7Àå, '¸Ó½Å ÄÚµå ÃÖÀûÈ'¿¡¼´Â Selection DAG°¡ ¾î¶»°Ô ÃÖÀûȵǰí Ÿ°Ù ·¹Áö½ºÅÍ°¡ ¾î¶»°Ô º¯¼ö¿¡ ÇÒ´çµÇ´ÂÁö »ìÆ캻´Ù. ¶ÇÇÑ Selection DAGÀÇ ÃÖÀûÈ¿Í ¿©Å¸ ·¹Áö½ºÅÍ ÇÒ´ç ±â¼ú¿¡ ´ëÇؼµµ ¼³¸íÇÑ´Ù. 8Àå, 'LLVM ¹é¿£µå ÀÛ¼º'¿¡¼´Â ·¹Áö½ºÅÍ¿Í ¸í·É¾î ÁýÇÕ, È£Ãâ ±Ô¾à, ÀÎÄÚµù, º¸Á¶ Ÿ°Ù ±â´É µî Ÿ°Ù ¾ÆÅ°ÅØó¸¦ Ç¥ÇöÇÏ´Â ¹æ¹ýÀ» ¼³¸íÇÑ´Ù. 9Àå, '´Ù¾çÇÑ ÇÁ·ÎÁ§Æ®¿¡¼ÀÇ LLVM È°¿ë'¿¡¼´Â LLVM IR ±â¹Ý ±¸Á¶¸¦ »ç¿ëÇÒ ¼ö ÀÖ´Â ´Ù¾çÇÑ ÇÁ·ÎÁ§Æ®¸¦ »ìÆ캻´Ù. LLVMÀº ´Ü¼øÇÑ ÄÄÆÄÀÏ·¯°¡ ¾Æ´Ï¶ó ÄÄÆÄÀÏ·¯ ±â¹Ý ±¸Á¶´Ù. ÄÚµå Á¶°¢µé¿¡ Àû¿ëÇÒ ¼ö ÀÖ´Â ´Ù¾çÇÑ ÇÁ·ÎÁ§Æ®¸¦ »ìÆ캸°í À¯¿ëÇÑ Á¤º¸¸¦ ¾ò´Â °ÍÀÌ 9ÀåÀÇ ¸ñÇ¥´Ù.
[ÁöÀºÀÌÀÇ ¸»] ÇÁ·Î±×·¡¸Ó¶ó¸é ÇÁ·Î±×·¡¹ÖÇÏ¸é¼ ÄÄÆÄÀÏ·¯¸¦ Á¢ÇغÃÀ» °ÍÀÌ´Ù. ÄÄÆÄÀÏ·¯¶õ ½±°Ô ¼³¸íÇÏ¸é »ç¶÷ÀÌ ÀÌÇØÇÒ ¼ö ÀÖ´Â ÇüÅÂÀÇ °í¼öÁØ Äڵ带 ±â°è°¡ ÀÌÇØÇÒ ¼ö ÀÖ´Â ÇüÅÂÀÇ Àú¼öÁØ ÄÚµå·Î º¯È¯ÇØÁÖ´Â ÇÁ·Î±×·¥ÀÌ´Ù. ÄÄÆÄÀÏ·¯°¡ ¾î¶»°Ô µ¿ÀÛÇÏ´ÂÁö ³»ºÎ ±¸Á¶¿¡ Àǹ®À» °¡Á®º» ÀûÀÌ Àִ°¡? ÄÄÆÄÀÏ·¯´Â ÃÖÀûÈµÈ ±â°è¾î Äڵ带 »ý¼ºÇس»±â À§ÇØ ¼ö¸¹Àº ÀÛ¾÷À» ¼öÇàÇϸç, ÁÁÀº ÄÄÆÄÀÏ·¯¸¦ ±¸ÇöÇÏ·Á¸é º¹ÀâÇÑ ¾Ë°í¸®ÁòÀÌ ¸¹ÀÌ ÇÊ¿äÇÏ´Ù. ÀÌ Ã¥Àº ÄÄÆÄÀÏ °úÁ¤ÀÎ ÇÁ·ÐÆ®¿£µå, ÄÚµå ÃÖÀûÈ, ÄÚµå »ý¼º µî ¸ðµç ´Ü°è¸¦ ´Ù·ç´Âµ¥, ´Ü¼øÇÑ ±â¹Ý ±¸Á¶¸¦ °¡Áø LLVMÀÌ °¢ ÄÄÆÄÀÏ ´Ü°è¸¦ ÇнÀÇÏ´Â µ¥ ÀûÇÕÇÏ´Ù. LLVMÀº ¿©·¯ ¸ðµâ°ú °èÃþÀ¸·Î ³ª´²Á® ÀÖÀ¸¸ç ¸ðµç ÄÄÆÄÀÏ·¯ ±â´ÉµéÀÌ µ¶¸³ÀûÀ¸·Î ±¸ÇöµÅ ÀÖ´Ù. ¶ÇÇÑ °´Ã¼ÁöÇâ ¾ð¾îÀÎ C++·Î ±¸ÇöµÆÀ¸¸ç, ÇÁ·Î±×·¡¸Ó¿¡°Ô ´Ü¼øÇÑ ÀÎÅÍÆäÀ̽º¿Í ¼ö¸¹Àº API¸¦ Á¦°øÇØ µ¶ÀÚÀûÀÎ ÄÄÆÄÀÏ·¯¸¦ ±¸ÇöÇϱ⠽±°Ô ÇØÁØ´Ù. º¹ÀâÇÑ ¼Ö·ç¼Çº¸´Ù´Â ´Ü¼øÇÑ ¼Ö·ç¼ÇÀ» ¿©·¯ ¹ø ´Ù·ç´Â °ÍÀÌ ³ªÀ» °ÍÀÌ´Ù. ÀÌ Ã¥¿¡¼´Â ¸ðµç ÄÄÆÄÀÏ ¿É¼ÇÀ» °í·ÁÇÏ°í ´Ü¼øÈ÷ Äڵ带 ÄÄÆÄÀÏÇÏ´Â °Í ÀÌ»óÀÇ °ÍÀ» ÀÌÇØÇÒ ¼ö ÀÖµµ·Ï º¸¿©ÁÜÀ¸·Î½á µ¶ÀÚÀÇ ½Ç·Â Çâ»ó¿¡ µµ¿òÀÌ µÇ´Â ´Ù¾çÇÑ ¿¹Á¦¸¦ ´Ù·é´Ù. ¶ÇÇÑ ÄÄÆÄÀÏ·¯ °³¹ß°ú °ü·ÃÀÌ ¾ø´Â °³¹ßÀÚ¶ó ÇÒÁö¶óµµ ÀÌ Ã¥À» ÅëÇØ ¸¹Àº °ÍÀ» ¾òÀ» ¼ö ÀÖ´Ù°í ¹Ï´Â´Ù. ÄÄÆÄÀÏ·¯ ±¸Çö¿¡ ´ëÇÑ ÀÌÇØ´Â ÃÖÀûÈµÈ Äڵ带 © ¼ö ÀÖ°Ô µµ¿ÍÁÙ °ÍÀÌ´Ù. Ã¥¿¡¼ ´Ù·ç´Â ¿¹Á¦µéÀÌ À¯ÀÍÇÏ´Ù°í »ý°¢ÇÏ±æ ¹Ù¶ó¸ç, ÀÌ ¿¹Á¦µéÀ» ÇнÀÇÑ µÚ¿¡´Â ½º½º·Î ÄÄÆÄÀÏ·¯¸¦ ¸¸µé ¼ö ÀÖÀ» °ÍÀÌ´Ù.
[¿Å±äÀÌÀÇ ¸»] ÄÄÆÄÀÏ·¯´Â ¼ÒÇÁÆ®¿þ¾î °³¹ßÀÚ¶ó¸é ´©±¸³ª ¸ÅÀÏ »ç¿ëÇÏ´Â µµ±¸Áö¸¸, ½ÇÁ¦ ³»ºÎ°¡ ¾î¶»°Ô µ¿ÀÛÇÏ´ÂÁö ¾Æ´Â °³¹ßÀÚ´Â ±×¸® ¸¹Áö ¾Ê´Ù. °ú°Å¿£ ¿ÀǼҽº ÄÄÆÄÀÏ·¯ÀÎ GCC, ¸¶ÀÌÅ©·Î¼ÒÇÁÆ®¿¡¼ °³¹ßÇÏ´Â MSVC¸¦ ¸¹ÀÌ »ç¿ëÇßÁö¸¸, ÃÖ±Ù¿¡´Â LLVMÀÌ °ü½ÉÀ» ¸¹ÀÌ ¹Þ°í ÀÖ°í ƯÈ÷ ¿¢½ºÄÚµå(XCode)°¡ LLVMÀ» ±âº» ÄÄÆÄÀÏ·¯·Î äÅÃÇÏ¸é¼ LLVMÀ¸·Î ºôµåÇÏ´Â »ó¿ë ¾ÖÇø®ÄÉÀ̼ÇÀÌ ¸¹¾ÆÁ³´Ù. LLVMÀº ´õ ³ª¾Æ°¡ FreeBSD ¿î¿µÃ¼Á¦¸¦ ºôµåÇÒ ¶§µµ ¾²ÀδÙ. ÀÌ·¸µí LLVMÀÇ ÀαⰡ ³ô¾ÆÁö¸é¼ LLVMÀ» Á¦¿ÜÇÏ°í´Â ÄÄÆÄÀÏ·¯¸¦ ³íÇÒ ¼ö ¾ø°Ô µÆ´Ù. Àϸ®³ëÀÌ ´ëÇÐÀÇ ¿¬±¸ ÁÖÁ¦·Î ½ÃÀÛÇÑ LLVMÀº Àç»ç¿ëÀÌ °¡´ÉÇÑ ÄÚ¾î ¶óÀ̺귯¸®, ÇÁ·ÐÆ®¿£µå, ¸µÄ¿ µî ÄÄÆÄÀÏ·¯ ¹× ÅøüÀÎÀÇ ÁýÇÕÀÌ´Ù. ÄÄÆÄÀÏ·¯ÀÇ ±¸¼º ¿ä¼ÒµéÀÌ ¸ðµÎ ¸ðµâȵŠÀִٴ Ư¡ ¶§¹®¿¡ LLVM ¸ðµâµéÀ» »ç¿ëÇÑ ´Ù¾çÇÑ ÇÁ·ÎÁ§Æ®µéÀÌ È°¹ßÇÏ°Ô °³¹ßµÇ°í ÀÖ´Ù. C/C++, ¿ÀºêÁ§Æ¼ºê C(Objective-C) µî ¼¿ ¼ö ¾ø´Â ÇÁ·Î±×·¡¹Ö ¾ð¾îµéÀ» Áö¿øÇÒ »Ó¸¸ ¾Æ´Ï¶ó µð½º¾î¼Àºí·¯, ¿¡¹Ä·¹ÀÌÅÍÀÇ ÄÚ¾î ¿ªÇÒÀ» Çϱ⵵ ÇÑ´Ù. ÀÌ Ã¥Àº LLVM ÄÄÆÄÀÏ·¯ »ç¿ë ±âÃʺÎÅÍ Áß°£ ¾ð¾î, ÃÖÀûÈ °úÁ¤±îÁö ºüÁü¾øÀÌ ´Ù·é´Ù. °ü·Ã ÄÄÆÄÀÏ·¯ À̷еµ ÃæºÐÈ÷ ¼³¸íÇÔÀ¸·Î½á ÄÄÆÄÀÏ·¯ À̷п¡ ´ëÇÑ ÀÌÇØ°¡ ºÎÁ·ÇÑ µ¶Àڵ鵵 ³»¿ëÀ» ¼ÒÈÇÒ ¼ö ÀÖµµ·Ï Ã¥À» ±¸¼ºÇß´Ù. ÄÄÆÄÀÏ·¯¸¦ °øºÎÇÔÀ¸·Î½á µ¶ÀÚÀûÀÎ ÄÄÆÄÀÏ·¯¸¦ ¸¸µé°Ú´Ù´Â °ÅâÇÑ ¸ñÇ¥¸¦ ÀÌ·çÁö ¸øÇÏ´õ¶óµµ, Æò¼Ò¿¡ ÀÛ¼ºÇÏ´Â Äڵ带 ÄÄÆÄÀÏ·¯´Â ³»ºÎÀûÀ¸·Î ¾î¶»°Ô Çؼ®ÇÏ°í ÃÖÀûÈÇÏ´ÂÁö °¨À» ÀâÀ» ¼ö ÀÖ´Â ÁÁÀº ±âȸ°¡ µÉ °ÍÀÌ´Ù.
|
|
|
|
|