ã¢ã»ã³ããªèšèªã®å æ¬çã¬ã€ãããã®ååãå¿çšãéèŠæ§ãæ¢ããäœã¬ãã«ããã°ã©ãã³ã°ã®èªã¿æ¹ãšçè§£ãæ·±ããŸãã
ã¢ã»ã³ããªèšèªïŒäœã¬ãã«ã³ãŒãã®ç§å¯ãè§£ãæãã
PythonãJavaãC++ãšãã£ãé«ã¬ãã«èšèªãäž»æµã®ã³ã³ãã¥ãŒã¿ããã°ã©ãã³ã°ã®äžçã«ã¯ããã®ãã¹ãŠãæ¯ããåºç€å±€ãååšããŸãããããã¢ã»ã³ããªèšèªã§ãããã®äœã¬ãã«ããã°ã©ãã³ã°èšèªã¯ãã³ã³ãã¥ãŒã¿ã®ããŒããŠã§ã¢ãžã®çŽæ¥çãªã€ã³ã¿ãŒãã§ãŒã¹ãæäŸãããœãããŠã§ã¢ããã·ã³ãšã©ã®ããã«çžäºäœçšãããã«ã€ããŠãæ¯é¡ãªãå¶åŸ¡ãšæŽå¯ãå¯èœã«ããŸããäžè¬çãªã¢ããªã±ãŒã·ã§ã³éçºã§ã¯é«ã¬ãã«èšèªã»ã©åºã䜿ãããŠã¯ããŸããããã¢ã»ã³ããªèšèªã¯ã·ã¹ãã ããã°ã©ãã³ã°ãçµã¿èŸŒã¿ã·ã¹ãã éçºããªããŒã¹ãšã³ãžãã¢ãªã³ã°ããããŠããã©ãŒãã³ã¹æé©åã«ãããŠãäŸç¶ãšããŠæ¥µããŠéèŠãªããŒã«ã§ãã
ã¢ã»ã³ããªèšèªãšã¯äœãïŒ
ã¢ã»ã³ããªèšèªã¯ãã³ã³ãã¥ãŒã¿ã®äžå€®åŠçè£ çœ®ïŒCPUïŒãçŽæ¥å®è¡ãããã€ããªåœä»€ã§ãããã·ã³èªããèšå·ã§è¡šçŸãããã®ã§ããåã¢ã»ã³ããªåœä»€ã¯éåžžãåäžã®ãã·ã³èªåœä»€ã«å¯Ÿå¿ããŠããã人éãèªããïŒããã§ãããªãé£è§£ã§ããïŒåœ¢åŒã®ããã°ã©ãã³ã°èšèªãšãªã£ãŠããŸãã
åºç€ãšãªãããŒããŠã§ã¢ã®è€éããæœè±¡åããé«ã¬ãã«èšèªãšã¯ç°ãªããã¢ã»ã³ããªèšèªã¯ã¬ãžã¹ã¿ãã¡ã¢ãªæ§æãåœä»€ã»ãããšãã£ãã³ã³ãã¥ãŒã¿ã®ã¢ãŒããã¯ãã£ã«é¢ããæ·±ãçè§£ãå¿ èŠãšããŸãããã®ã¬ãã«ã®å¶åŸ¡ã«ãããããã°ã©ãã¯ããã©ãŒãã³ã¹ãšå¹çãæå€§åããããã«ã³ãŒãã埮調æŽããããšãã§ããŸãã
äž»ãªç¹åŸŽïŒ
- äœã¬ãã«ã®æœè±¡åïŒ ãã·ã³èªã®äžã«æå°éã®æœè±¡åã¬ã€ã€ãŒãæäŸããŸãã
- çŽæ¥çãªããŒããŠã§ã¢ã¢ã¯ã»ã¹ïŒ CPUã¬ãžã¹ã¿ãã¡ã¢ãªäœçœ®ãçŽæ¥æäœã§ããŸãã
- ã¢ãŒããã¯ãã£åºæïŒ ã¢ã»ã³ããªèšèªã¯ç¹å®ã®CPUã¢ãŒããã¯ãã£ïŒäŸïŒx86ãARMãMIPSïŒã«åºæã§ãã
- äžå¯Ÿäžã®å¯Ÿå¿ïŒ éåžžãäžã€ã®ã¢ã»ã³ããªåœä»€ã¯äžã€ã®ãã·ã³èªåœä»€ã«å€æãããŸãã
ãªãã¢ã»ã³ããªèšèªãåŠã¶ã®ãïŒ
é«ã¬ãã«èšèªã¯å©äŸ¿æ§ãšç§»æ€æ§ãæäŸããŸãããã¢ã»ã³ããªèšèªãåŠã¶ã¹ã説åŸåã®ããçç±ã¯ããã€ããããŸãïŒ
1. ã³ã³ãã¥ãŒã¿ã¢ãŒããã¯ãã£ã®çè§£
ã¢ã»ã³ããªèšèªã¯ãã³ã³ãã¥ãŒã¿ãå®éã«ã©ã®ããã«åäœããã®ããèŠãèŠãããã®æ¯é¡ãªãçªãæäŸããŸããã¢ã»ã³ããªã³ãŒããæžããåæããããšã§ãCPUã¬ãžã¹ã¿ãã¡ã¢ãªç®¡çãåœä»€ã®å®è¡ã«ã€ããŠæ·±ãçè§£ãåŸãããšãã§ããŸãããã®ç¥èã¯ãäž»èŠãªããã°ã©ãã³ã°èšèªã«é¢ããããã³ã³ãã¥ãŒã¿ã·ã¹ãã ã«æºãããã¹ãŠã®äººã«ãšã£ãŠéåžžã«äŸ¡å€ããããŸãã
äŸãã°ãã¢ã»ã³ããªã§ã¹ã¿ãã¯ãã©ã®ããã«æ©èœããããçè§£ããããšã¯ãé«ã¬ãã«èšèªã«ããã颿°åŒã³åºããã¡ã¢ãªç®¡çã®çè§£ãå€§å¹ ã«åäžãããããšãã§ããŸãã
2. ããã©ãŒãã³ã¹ã®æé©å
ããã©ãŒãã³ã¹ãéèŠãããã¢ããªã±ãŒã·ã§ã³ã§ã¯ãã¢ã»ã³ããªèšèªã䜿çšããŠã³ãŒããæé«é床ãšå¹çã®ããã«æé©åããããšãã§ããŸããCPUã®ãªãœãŒã¹ãçŽæ¥å¶åŸ¡ããããšã§ããªãŒããŒããããæé€ããç¹å®ã®ããŒããŠã§ã¢ã«åãããŠã³ãŒãã調æŽã§ããŸãã
é«é »åºŠååŒã¢ã«ãŽãªãºã ãéçºããŠãããšæ³åããŠã¿ãŠãã ããããã¹ãŠã®ãã€ã¯ãç§ãéèŠã§ããã³ãŒãã®éèŠãªéšåãã¢ã»ã³ããªã§æé©åããããšã§ã倧ããªç«¶äºäžã®åªäœæ§ãããããããšãã§ããŸãã
3. ãªããŒã¹ãšã³ãžãã¢ãªã³ã°
ã¢ã»ã³ããªèšèªã¯ããœãããŠã§ã¢ã®æ©èœãçè§£ããããã«ãå€ãã®å ŽåãœãŒã¹ã³ãŒããªãã§ãœãããŠã§ã¢ãåæããããã»ã¹ã§ãããªããŒã¹ãšã³ãžãã¢ãªã³ã°ã«äžå¯æ¬ ã§ãããªããŒã¹ãšã³ãžãã¢ã¯ãã£ã¹ã¢ã»ã³ãã©ã䜿çšããŠãã·ã³èªãã¢ã»ã³ããªã³ãŒãã«å€æãããããåæããŠè匱æ§ãç¹å®ããããã¢ã«ãŽãªãºã ãçè§£ãããããœãããŠã§ã¢ã®åäœã倿ŽãããããŸãã
ã»ãã¥ãªãã£ç ç©¶è ã¯ããã«ãŠã§ã¢ãåæãããã®æ»æãã¯ãã«ãçè§£ããããã«ããã°ãã°ã¢ã»ã³ããªèšèªã䜿çšããŸãã
4. çµã¿èŸŒã¿ã·ã¹ãã éçº
çµã¿èŸŒã¿ã·ã¹ãã ã¯ãä»ã®ããã€ã¹ïŒäŸïŒèªåè»ãå®¶é»ãç£æ¥æ©åšïŒã«çµã¿èŸŒãŸããç¹æ®ãªã³ã³ãã¥ãŒã¿ã·ã¹ãã ã§ããããªãœãŒã¹ãéãããŠããããšãå€ããããŒããŠã§ã¢ã®ç²Ÿå¯ãªå¶åŸ¡ãå¿ èŠã§ããçµã¿èŸŒã¿ã·ã¹ãã éçºã§ã¯ãã³ãŒãã®ãµã€ãºãšããã©ãŒãã³ã¹ãæé©åããããã«ãã¢ã»ã³ããªèšèªãé »ç¹ã«äœ¿çšãããŸãã
äŸãã°ãèªåè»ã®ã¢ã³ãããã¯ã»ãã¬ãŒãã»ã·ã¹ãã ïŒABSïŒã®å¶åŸ¡ã«ã¯ã粟å¯ãªã¿ã€ãã³ã°ãšçŽæ¥çãªããŒããŠã§ã¢å¶åŸ¡ãå¿ èŠã§ãããã·ã¹ãã ã®ç¹å®ã®éšåã«ã¯ã¢ã»ã³ããªèšèªãé©ããéžæè¢ãšãªããŸãã
5. ã³ã³ãã€ã©ã®èšèš
ã¢ã»ã³ããªèšèªã®çè§£ã¯ãé«ã¬ãã«ã®ã³ãŒããå¹ççãªãã·ã³èªã«å€æããå¿ èŠãããã³ã³ãã€ã©èšèšè ã«ãšã£ãŠæ¥µããŠéèŠã§ããã¿ãŒã²ããã¢ãŒããã¯ãã£ãšã¢ã»ã³ããªèšèªã®èœåãçè§£ããããšã§ãã³ã³ãã€ã©èšèšè ã¯æé©åãããã³ãŒããçæããã³ã³ãã€ã©ãäœæã§ããŸãã
ã¢ã»ã³ããªã®è€éããç¥ãããšã§ãã³ã³ãã€ã©éçºè ã¯ç¹å®ã®ããŒããŠã§ã¢æ©èœãã¿ãŒã²ãããšããã³ãŒããžã§ãã¬ãŒã¿ãäœæã§ããå€§å¹ ãªããã©ãŒãã³ã¹åäžã«ã€ãªãããŸãã
ã¢ã»ã³ããªèšèªã®åºç€ïŒæŠå¿µçæŠèŠ
ã¢ã»ã³ããªèšèªããã°ã©ãã³ã°ã¯ãCPUã®ã¬ãžã¹ã¿ãšã¡ã¢ãªå ã®ããŒã¿ãæäœããããšãäžå¿ã«å±éããŸããããã€ãã®åºæ¬çãªæŠå¿µãæ¢ã£ãŠã¿ãŸãããïŒ
ã¬ãžã¹ã¿
ã¬ãžã¹ã¿ã¯CPUå ã«ããå°ããé«éãªèšæ¶é åã§ãçŸåšåŠçäžã®ããŒã¿ãåœä»€ãä¿æããããã«äœ¿çšãããŸããåCPUã¢ãŒããã¯ãã£ã«ã¯ç¹å®ã®ã¬ãžã¹ã¿ã»ããããããããããã«ç¬èªã®ç®çããããŸããäžè¬çãªã¬ãžã¹ã¿ã«ã¯ä»¥äžã®ãããªãã®ããããŸãïŒ
- æ±çšã¬ãžã¹ã¿ïŒ ããŒã¿ã®ä¿åãç®è¡è«çæŒç®ã«äœ¿çšãããŸãïŒäŸïŒx86ã®EAXãEBXãECXãEDXïŒã
- ã¹ã¿ãã¯ãã€ã³ã¿ïŒESPïŒïŒ äžæããŒã¿ã颿°åŒã³åºãæ å ±ãä¿åããããã«äœ¿çšãããã¡ã¢ãªé åã§ããã¹ã¿ãã¯ã®å é ãæããŸãã
- ã€ã³ã¹ãã©ã¯ã·ã§ã³ãã€ã³ã¿ïŒEIPïŒïŒ 次ã«å®è¡ãããåœä»€ãæããŸãã
- ãã©ã°ã¬ãžã¹ã¿ïŒ 以åã®æäœã®çµæã瀺ãã¹ããŒã¿ã¹ãã©ã°ïŒäŸïŒãŒããã©ã°ããã£ãªãŒãã©ã°ïŒãæ ŒçŽããŸãã
ã¡ã¢ãª
ã¡ã¢ãªã¯ãCPUã§çŸåšåŠçãããŠããªãããŒã¿ãåœä»€ãä¿åããããã«äœ¿çšãããŸããã¡ã¢ãªã¯ãã€ãã®ç·åœ¢é åãšããŠæ§æãããããããã«äžæã®ã¢ãã¬ã¹ããããŸããã¢ã»ã³ããªèšèªã§ã¯ãç¹å®ã®ã¡ã¢ãªäœçœ®ã«å¯ŸããŠããŒã¿ã®èªã¿æžããã§ããŸãã
åœä»€
åœä»€ã¯ã¢ã»ã³ããªèšèªããã°ã©ã ã®åºæ¬çãªæ§æèŠçŽ ã§ããååœä»€ã¯ãããŒã¿ã®ç§»åãç®è¡æŒç®ã®å®è¡ãå®è¡ãããŒã®å¶åŸ¡ãªã©ãç¹å®ã®æäœãå®è¡ããŸããã¢ã»ã³ããªåœä»€ã¯éåžžããªãã³ãŒãïŒæäœã³ãŒãïŒãš1ã€ä»¥äžã®ãªãã©ã³ãïŒåœä»€ãæäœããããŒã¿ãã¢ãã¬ã¹ïŒã§æ§æãããŸãã
äžè¬çãªåœä»€ã®çš®é¡ïŒ
- ããŒã¿è»¢éåœä»€ïŒ ã¬ãžã¹ã¿ãšã¡ã¢ãªéã§ããŒã¿ãç§»åãããŸãïŒäŸïŒMOVïŒã
- ç®è¡åœä»€ïŒ ç®è¡æŒç®ãå®è¡ããŸãïŒäŸïŒADDãSUBãMULãDIVïŒã
- è«çåœä»€ïŒ è«çæŒç®ãå®è¡ããŸãïŒäŸïŒANDãORãXORãNOTïŒã
- å¶åŸ¡ãããŒåœä»€ïŒ å®è¡ã®æµããå¶åŸ¡ããŸãïŒäŸïŒJMPãJZãJNZãCALLãRETïŒã
ã¢ãã¬ãã·ã³ã°ã¢ãŒã
ã¢ãã¬ãã·ã³ã°ã¢ãŒãã¯ãåœä»€ã®ãªãã©ã³ãã«ã©ã®ããã«ã¢ã¯ã»ã¹ããããæå®ããŸããäžè¬çãªã¢ãã¬ãã·ã³ã°ã¢ãŒãã«ã¯ä»¥äžã®ãããªãã®ããããŸãïŒ
- å³å€ã¢ãã¬ãã·ã³ã°ïŒ ãªãã©ã³ãã宿°å€ã§ãã
- ã¬ãžã¹ã¿ã¢ãã¬ãã·ã³ã°ïŒ ãªãã©ã³ããã¬ãžã¹ã¿ã§ãã
- çŽæ¥ã¢ãã¬ãã·ã³ã°ïŒ ãªãã©ã³ããã¡ã¢ãªã¢ãã¬ã¹ã§ãã
- 鿥ã¢ãã¬ãã·ã³ã°ïŒ ãªãã©ã³ããã¡ã¢ãªã¢ãã¬ã¹ãæ ŒçŽããã¬ãžã¹ã¿ã§ãã
- ã€ã³ããã¯ã¹ã¢ãã¬ãã·ã³ã°ïŒ ãªãã©ã³ããããŒã¹ã¬ãžã¹ã¿ãšã€ã³ããã¯ã¹ã¬ãžã¹ã¿ãå ç®ããŠèšç®ãããã¡ã¢ãªã¢ãã¬ã¹ã§ãã
ã¢ã»ã³ããªèšèªã®æ§æïŒç°ãªãã¢ãŒããã¯ãã£ãå£éèŠã
ã¢ã»ã³ããªèšèªã®æ§æã¯CPUã¢ãŒããã¯ãã£ã«ãã£ãŠç°ãªããŸããããã€ãã®äž»èŠãªã¢ãŒããã¯ãã£ã®æ§æãèŠãŠã¿ãŸãããïŒ
x86ã¢ã»ã³ããªïŒIntelæ§æïŒ
x86ã¢ãŒããã¯ãã£ã¯ãã¹ã¯ãããããã³ã©ãããããã³ã³ãã¥ãŒã¿ã§åºã䜿çšãããŠããŸããIntelæ§æã¯ãx86ããã»ããµçšã®äžè¬çãªã¢ã»ã³ããªèšèªã®æ§æã§ãã
äŸïŒ
MOV EAX, 10 ; å€10ãEAXã¬ãžã¹ã¿ã«ç§»å ADD EAX, EBX ; EBXã¬ãžã¹ã¿ã®å€ãEAXã¬ãžã¹ã¿ã«å ç® CMP EAX, ECX ; EAXã¬ãžã¹ã¿ãšECXã¬ãžã¹ã¿ã®å€ãæ¯èŒ JZ label ; ãŒããã©ã°ãã»ãããããŠããã°ã©ãã«ã«ãžã£ã³ã
ARMã¢ã»ã³ããª
ARMã¢ãŒããã¯ãã£ã¯ãã¢ãã€ã«ããã€ã¹ãçµã¿èŸŒã¿ã·ã¹ãã ããããŠè¿å¹Žã§ã¯ãµãŒããŒã§åºãæ®åããŠããŸããARMã¢ã»ã³ããªèšèªã¯x86ãšã¯ç°ãªãæ§æãæã¡ãŸãã
äŸïŒ
MOV R0, #10 ; å€10ãR0ã¬ãžã¹ã¿ã«ç§»å ADD R0, R1 ; R1ã¬ãžã¹ã¿ã®å€ãR0ã¬ãžã¹ã¿ã«å ç® CMP R0, R2 ; R0ã¬ãžã¹ã¿ãšR2ã¬ãžã¹ã¿ã®å€ãæ¯èŒ BEQ label ; Zãã©ã°ãã»ãããããŠããã°ã©ãã«ã«åå²
MIPSã¢ã»ã³ããª
MIPSã¢ãŒããã¯ãã£ã¯ãçµã¿èŸŒã¿ã·ã¹ãã ããããã¯ãŒã¯æ©åšã§ãã䜿çšãããŸããMIPSã¢ã»ã³ããªèšèªã¯ã¬ãžã¹ã¿ããŒã¹ã®åœä»€ã»ããã䜿çšããŸãã
äŸïŒ
li $t0, 10 ; å³å€10ãã¬ãžã¹ã¿$t0ã«ããŒã add $t0, $t0, $t1 ; ã¬ãžã¹ã¿$t1ã®å€ãã¬ãžã¹ã¿$t0ã«å ç® beq $t0, $t2, label ; ã¬ãžã¹ã¿$t0ãã¬ãžã¹ã¿$t2ãšçãããã°ã©ãã«ã«åå²
æ³šïŒ æ§æãšåœä»€ã»ããã¯ã¢ãŒããã¯ãã£éã§å€§ããç°ãªãå ŽåããããŸããæ£ããå¹ççãªã¢ã»ã³ããªã³ãŒããæžãããã«ã¯ãç¹å®ã®ã¢ãŒããã¯ãã£ãçè§£ããããšãäžå¯æ¬ ã§ãã
ã¢ã»ã³ããªèšèªããã°ã©ãã³ã°ã®ããã®ããŒã«
ã¢ã»ã³ããªèšèªããã°ã©ãã³ã°ãæ¯æŽããããã«ãããã€ãã®ããŒã«ãå©çšå¯èœã§ãïŒ
ã¢ã»ã³ãã©
ã¢ã»ã³ãã©ã¯ãã¢ã»ã³ããªèšèªã®ã³ãŒãããã·ã³èªã«å€æããŸãã人æ°ã®ããã¢ã»ã³ãã©ã«ã¯ä»¥äžã®ãããªãã®ããããŸãïŒ
- NASM (Netwide Assembler)ïŒ x86ãARMãå«ãè€æ°ã®ã¢ãŒããã¯ãã£ããµããŒããããç¡æã§ãªãŒãã³ãœãŒã¹ã®ã¢ã»ã³ãã©ã
- MASM (Microsoft Macro Assembler)ïŒ x86ããã»ããµçšã®ã¢ã»ã³ãã©ã§ãWindowsã§äžè¬çã«äœ¿çšãããŸãã
- GAS (GNU Assembler)ïŒ GNU Binutilsããã±ãŒãžã®äžéšã§ãå¹ åºãã¢ãŒããã¯ãã£ããµããŒããã倿©èœãªã¢ã»ã³ãã©ã
ãã£ã¹ã¢ã»ã³ãã©
ãã£ã¹ã¢ã»ã³ãã©ã¯ã¢ã»ã³ãã©ã®éã®ããã»ã¹ãå®è¡ãããã·ã³èªãã¢ã»ã³ããªã³ãŒãã«å€æããŸãããããã¯ãªããŒã¹ãšã³ãžãã¢ãªã³ã°ãã³ã³ãã€ã«æžã¿ããã°ã©ã ã®åæã«äžå¯æ¬ ã§ãã人æ°ã®ãããã£ã¹ã¢ã»ã³ãã©ã«ã¯ä»¥äžã®ãããªãã®ããããŸãïŒ
- IDA ProïŒ é«åºŠãªåææ©èœãåããã匷åã§åºã䜿çšãããŠãããã£ã¹ã¢ã»ã³ãã©ãïŒåçšïŒ
- GDB (GNU Debugger)ïŒ ã³ãŒãã®éã¢ã»ã³ãã«ãå¯èœãªãç¡æã§ãªãŒãã³ãœãŒã¹ã®ãããã¬ã
- Radare2ïŒ ãã£ã¹ã¢ã»ã³ãã©ãå«ããç¡æã§ãªãŒãã³ãœãŒã¹ã®ãªããŒã¹ãšã³ãžãã¢ãªã³ã°ãã¬ãŒã ã¯ãŒã¯ã
ãããã¬
ãããã¬ã䜿çšãããšãã¢ã»ã³ããªã³ãŒããã¹ãããå®è¡ããã¬ãžã¹ã¿ãã¡ã¢ãªãæ€æ»ãããã¬ãŒã¯ãã€ã³ããèšå®ããŠãšã©ãŒãç¹å®ã»ä¿®æ£ããããšãã§ããŸãã人æ°ã®ãããããã¬ã«ã¯ä»¥äžã®ãããªãã®ããããŸãïŒ
- GDB (GNU Debugger)ïŒ è€æ°ã®ã¢ãŒããã¯ãã£ãšèšèªããµããŒããã倿©èœãªãããã¬ã
- OllyDbgïŒ ç¹ã«ãªããŒã¹ãšã³ãžãã¢ãªã³ã°ã§äººæ°ã®Windowsçšãããã¬ã
- x64dbgïŒ Windowsçšã®ãªãŒãã³ãœãŒã¹ãããã¬ã
çµ±åéçºç°å¢ïŒIDEïŒ
äžéšã®IDEã¯ã¢ã»ã³ããªèšèªããã°ã©ãã³ã°ããµããŒãããŠãããæ§æãã€ã©ã€ããã³ãŒãè£å®ããããã°ãªã©ã®æ©èœãæäŸããŸããäŸãšããŠã¯ä»¥äžã®ãããªãã®ããããŸãïŒ
- Visual StudioïŒ MASMã¢ã»ã³ãã©ã䜿çšããŠã¢ã»ã³ããªèšèªããã°ã©ãã³ã°ããµããŒãããŸãã
- EclipseïŒ ãã©ã°ã€ã³ã䜿çšããŠã¢ã»ã³ããªèšèªããã°ã©ãã³ã°ããµããŒãããããã«èšå®ã§ããŸãã
ã¢ã»ã³ããªèšèªäœ¿çšã®å®çšäŸ
ã¢ã»ã³ããªèšèªãå®éã®ã¢ããªã±ãŒã·ã§ã³ã§ã©ã®ããã«äœ¿çšãããŠããããããã€ãã®å®çšäŸãèŠãŠã¿ãŸãããïŒ
1. ããŒãããŒã
ããŒãããŒãã¯ãã³ã³ãã¥ãŒã¿ãèµ·åãããšãã«æåã«å®è¡ãããããã°ã©ã ã§ããããŒããŠã§ã¢ã®åæåãšãªãã¬ãŒãã£ã³ã°ã·ã¹ãã ã®èªã¿èŸŒã¿ãæ åœããŸããããŒãããŒãã¯ãå°ãããé«éã§ãããŒããŠã§ã¢ã«çŽæ¥ã¢ã¯ã»ã¹ã§ããããã«ããããã«ããã°ãã°ã¢ã»ã³ããªèšèªã§æžãããŸãã
2. ãªãã¬ãŒãã£ã³ã°ã·ã¹ãã ã«ãŒãã«
ãªãã¬ãŒãã£ã³ã°ã·ã¹ãã ã®äžæ žã§ãããªãã¬ãŒãã£ã³ã°ã·ã¹ãã ã«ãŒãã«ã«ã¯ãã³ã³ããã¹ãã¹ã€ãããå²ã蟌ã¿åŠçãã¡ã¢ãªç®¡çãªã©ã®éèŠãªã¿ã¹ã¯ã®ããã«ã¢ã»ã³ããªèšèªã³ãŒããå«ãŸããŠããããšããããããŸããã¢ã»ã³ããªèšèªã«ãããã«ãŒãã«éçºè ã¯ãããã®ã¿ã¹ã¯ãæé«ã®ããã©ãŒãã³ã¹ã«æé©åã§ããŸãã
3. ããã€ã¹ãã©ã€ã
ããã€ã¹ãã©ã€ãã¯ããªãã¬ãŒãã£ã³ã°ã·ã¹ãã ãããŒããŠã§ã¢ããã€ã¹ãšéä¿¡ã§ããããã«ãããœãããŠã§ã¢ã³ã³ããŒãã³ãã§ããããã€ã¹ãã©ã€ãã¯ããŒããŠã§ã¢ã®ã¬ãžã¹ã¿ãã¡ã¢ãªäœçœ®ãžã®çŽæ¥ã¢ã¯ã»ã¹ãå¿ èŠãšããããšãå€ãããã©ã€ãã®ç¹å®ã®éšåã«ã¯ã¢ã»ã³ããªèšèªãé©ããéžæè¢ãšãªããŸãã
4. ã²ãŒã éçº
ã²ãŒã éçºã®åæã«ã¯ãã²ãŒã ã®ããã©ãŒãã³ã¹ãæé©åããããã«ã¢ã»ã³ããªèšèªãåºã䜿çšãããŠããŸãããçŸåšã§ã¯é«ã¬ãã«èšèªãäžè¬çã§ãããã²ãŒã ãšã³ãžã³ãã°ã©ãã£ãã¯ã¹ã¬ã³ããªã³ã°ãã€ãã©ã€ã³ã®ç¹å®ã®ããã©ãŒãã³ã¹ãéèŠãªéšåã«ã¯ãäŸç¶ãšããŠã¢ã»ã³ããªèšèªã䜿çšãããããšããããŸãã
5. æå·æè¡
æå·æè¡ã§ã¯ãæå·ã¢ã«ãŽãªãºã ããããã³ã«ãå®è£ ããããã«ã¢ã»ã³ããªèšèªã䜿çšãããŸããã¢ã»ã³ããªèšèªã«ãããæå·åŠè ã¯ã³ãŒããé床ãšã»ãã¥ãªãã£ã®ããã«æé©åãããµã€ããã£ãã«æ»æããä¿è·ããããšãã§ããŸãã
ã¢ã»ã³ããªèšèªã®åŠç¿ãªãœãŒã¹
ã¢ã»ã³ããªèšèªãåŠã¶ããã«å©çšã§ãããªãœãŒã¹ã¯æ°å€ããããŸãïŒ
- ãªã³ã©ã€ã³ãã¥ãŒããªã¢ã«ïŒ å€ãã®ãŠã§ããµã€ããã¢ã»ã³ããªèšèªããã°ã©ãã³ã°ã«é¢ããç¡æã®ãã¥ãŒããªã¢ã«ãã¬ã€ããæäŸããŠããŸããäŸïŒtutorialspoint.comãassembly.netã
- æžç±ïŒ ã¢ã»ã³ããªèšèªããã°ã©ãã³ã°ã詳现ã«è§£èª¬ããæžç±ãããã€ããããŸããäŸïŒJeff Duntemannèã"Assembly Language Step-by-Step: Programming with DOS and Linux"ããJonathan Bartlettèã"Programming from the Ground Up"ãïŒãªã³ã©ã€ã³ã§ç¡æå ¥æå¯èœïŒã
- 倧åŠã®ã³ãŒã¹ïŒ å€ãã®å€§åŠãã³ã³ãã¥ãŒã¿ã¢ãŒããã¯ãã£ãšã¢ã»ã³ããªèšèªããã°ã©ãã³ã°ã®ã³ãŒã¹ãæäŸããŠããŸãã
- ãªã³ã©ã€ã³ã³ãã¥ããã£ïŒ ã¢ã»ã³ããªèšèªããã°ã©ãã³ã°å°éã®ãªã³ã©ã€ã³ãã©ãŒã©ã ãã³ãã¥ããã£ã¯ã貎éãªãµããŒããšã¬ã€ãã³ã¹ãæäŸããŠãããŸãã
ã¢ã»ã³ããªèšèªã®æªæ¥
é«ã¬ãã«èšèªãäžè¬çãªã¢ããªã±ãŒã·ã§ã³éçºãæ¯é ãç¶ããäžæ¹ã§ãã¢ã»ã³ããªèšèªã¯ç¹å®ã®åéã§ãã®éèŠæ§ãä¿ã£ãŠããŸããã³ã³ãã¥ãŒãã£ã³ã°ããã€ã¹ãããè€éã§å°éçã«ãªãã«ã€ããŠãäœã¬ãã«ã§ã®å¶åŸ¡ãšæé©åã®å¿ èŠæ§ã¯ç¶ãã§ããããã¢ã»ã³ããªèšèªã¯ã以äžã®åéã§åŒãç¶ãäžå¯æ¬ ãªããŒã«ã§ããç¶ããŸãïŒ
- çµã¿èŸŒã¿ã·ã¹ãã ïŒ ãªãœãŒã¹ã®å¶çŽãšãªã¢ã«ã¿ã€ã èŠä»¶ãããã现ããªå¶åŸ¡ãå¿ èŠãšããå Žåã
- ã»ãã¥ãªãã£ïŒ ãã«ãŠã§ã¢ã®ãªããŒã¹ãšã³ãžãã¢ãªã³ã°ãè匱æ§ã®ç¹å®ã®ããã
- ããã©ãŒãã³ã¹ãéèŠãªã¢ããªã±ãŒã·ã§ã³ïŒ é«é »åºŠååŒãç§åŠæè¡èšç®ãªã©ããã¹ãŠã®ãµã€ã¯ã«ãéèŠãªå Žåã
- ãªãã¬ãŒãã£ã³ã°ã·ã¹ãã éçºïŒ äžæ žãšãªãã«ãŒãã«æ©èœãããã€ã¹ãã©ã€ãéçºã®ããã
çµè«
ã¢ã»ã³ããªèšèªã¯åŠã¶ã®ãé£ããäžæ¹ã§ãã³ã³ãã¥ãŒã¿ãã©ã®ããã«åäœãããã®åºæ¬çãªçè§£ãæäŸããŸããããã¯é«ã¬ãã«èšèªã§ã¯äžå¯èœãªãç¬ç¹ã®ã¬ãã«ã®å¶åŸ¡ãšæé©åãå¯èœã«ããŸããçç·Žããããã°ã©ãã§ããã奜å¥å¿æºçãªåå¿è ã§ãããã¢ã»ã³ããªèšèªã®äžçãæ¢æ±ããããšã¯ãã³ã³ãã¥ãŒã¿ã·ã¹ãã ãžã®çè§£ãå€§å¹ ã«æ·±ãããœãããŠã§ã¢éçºã«ãããæ°ããªå¯èœæ§ãåãéãããšãã§ããŸããææŠãåãå ¥ããäœã¬ãã«ã³ãŒãã®è€éãã«é£ã³èŸŒã¿ãã¢ã»ã³ããªèšèªã®åãçºèŠããŠãã ããã
åºæ¬ãåŠã¶éã«ã¯ãã¢ãŒããã¯ãã£ïŒx86ãARMãMIPSãªã©ïŒãéžãã§ããã«éäžããããšãå¿ããªãã§ãã ãããç°¡åãªããã°ã©ã ã§å®éšããåŸã ã«è€éããå¢ããŠãããŸãããããããã°ããŒã«ã䜿ã£ãŠèªåã®ã³ãŒããã©ã®ããã«å®è¡ãããŠããããçè§£ããããšãæããªãã§ãã ããããããŠæãéèŠãªã®ã¯ãäœã¬ãã«ããã°ã©ãã³ã°ã®é åçãªäžçãæ¥œããã§æ¢æ±ããããšã§ãïŒ