±à¼ÍƼö: |
±¾ÎÄÖ÷Òª¼òµ¥½éÉÜÁ˼ܹ¹µÄÑݱäÀúÊ·¡¢Äں˵Ť×÷ÔÀí
¼°ARM µÄ¼¼ÊõʵÏÖ¡£
±¾ÎÄÀ´×ÔÓÚcsdn£¬ÓÉ»ðÁú¹ûÈí¼þLinda±à¼¡¢ÍƼö¡£ |
|
¼Ü¹¹µÄÑݱäÀúÊ·
ÎÒÃÇÊ×ÏȽéÉÜ ARM Ltd£¬ÕâÀïÏÈ˵µÄÊǹ«Ë¾¶ø²»ÊǼܹ¹¡£ARM µÄ·¢Õ¹ÀúÊ··Ç³£¾ÃÔ¶£¬³¬ºõÐí¶àÈ˵ÄÏëÏó¡£
Ê×ÏÈ£¬ÎÒÃÇÌṩһЩ±³¾°ÐÅÏ¢£¬ARM ³ÉÁ¢ÓÚ20ÊÀ¼Í90Äê´úÄ©£¬´ÓÁíÒ»¼ÒλÓÚ½£ÇŵĹ«Ë¾·Ö²ð¶øÀ´£¬ÄǼҹ«Ë¾½Ð×ö
Acorn Computers£¬Ôø¾ÊÇÓ¢¹ú½ÌÓýÊг¡µÄÖøÃû¸öÈĘ̈ʽ¼ÆËã»ú¹©Ó¦ÉÌ£¬ÏÖÒѲ»¸´´æÔÚ¡£
80Äê´úÖÐÆÚʱ£¬Acorn Ò»¸öСÍŶӽÓÊÜÁËÒ»¸öÌôÕ½£¬ÎªËûÃǵÄÏÂÒ»´ú¼ÆËã»úÌôÑ¡ºÏÊʵĴ¦ÀíÆ÷£¬ËûÃÇÆð²ÝÁËÒ»¸ö¼¼ÊõÐèÇó˵Ã÷Ê飬¾¹ýÏ൱³¤µÄÃþË÷ºóµÃ³öÒ»¸ö½áÂÛ£ºÎÞ·¨ÕÒµ½ÓëÖ®Ïà·ûµÄ²úÆ·£¬ÓÚÊÇ
Acorn ¾ö¶¨×Ô¼ºÉè¼Æ´¦ÀíÆ÷£¬Ò»¸öСÍŶÓÖ»ÓÃÁË18¸öÔ¾ÍÍê³ÉÁËÉè¼Æ²¢ÊµÏÖÁËÕâ¿î´¦ÀíÆ÷¡£
1985Äê4ÔÂ26ÈÕ£¬µÚһ̨ÔÐÍ»úÔÚ Acorn µÄ½£ÇŰ칫ÊÒÖпªÊ¼ÔËÐдúÂ룬ÄÇʱËü±»³ÆÎª¡±Acorn
RISC Machine¡±£¬Ëæ×Å Acorn ¹«Ë¾×ªÏòË¥Â䣬´¦ÀíÆ÷Éè¼Æ²¿Ãű»·ÖÁ˳öÀ´£¬×é³ÉÁËÒ»¼Òй«Ë¾£¬×î³õ½Ð×ö
Advanced RSIC Machines Ltd¡£ÏÖÔÚ¹«Ë¾ºÍ´¦ÀíÆ÷¶¼¼ò³ÆÎªARM¡£
ARM ÒÔÆä¸÷ÖÖ RISC ´¦ÀíÆ÷Äں˶øÖø³Æ£¬µ«Ò²³öÆ·´óÁ¿µÄÖ§³Ö¼¼ÊõÂú×ãоƬÉè¼ÆÊ¦ºÍÈí¼þ¿ª·¢ÕßµÄÐèÒª£¬Õâ°üÀ¨ÎïÀíIP£¬Èí¼þÄ£ÐͺͿª·¢¹¤¾ß£¬Í¼Ðδ¦ÀíÆ÷£¬ÒÔ¼°ÍâΧÉ豸£¬×¢Ò⣬µ«ÊÇ
ARM ²¢²»Éú²úоƬ£¬ARMÊǰ뵼Ìå֪ʶ²úȨҵÎñÖеĿªÍØÏȷ棬ĿǰÊÐÃæÉÏ´óÁ¿ ARM É豸¶¼ÊÇÓÉARM·Ö²¼ÓÚÊÀ½ç¸÷µØµÄÊÚȨÉÌÖÆÔìµÄ¡£
ÏÂÃæËµÏ ARM ²úÆ·ÔÚÄÄЩÁìÓòͨ¹ýͨÓÃÊý×Ö²úÆ··¢»ÓÓÃÎäÖ®µØ£¬ARM Ìṩ£ºÔÚϵͳоƬ(SoC)ÉϵÄϵͳ¼¶IP£¬ÒÔ¼°ÎïÀíIP£¬È·±£Æä¿ÉÖÆÔìÐÔ¿ª·¢¹¤¾ß£¬°ïÖúÉè¼ÆºÍÖÆÔìϵͳ¼Ü¹¹ºÍÈí¼þ£¬µ±È»Éú²ú³ö³ÉÆ·»¹ÐèÒªÐí¶àÆäËûͶÈ룬È繤ҵÉè¼Æ£¬·â×°£¬»·¾³µ÷²é£¬²Ù×÷ϵͳ£¬ÍâΧIPµÈ£¬ÕâЩ¶¼²»ÊÇ
ARM µÄ²úÆ·£¬µ« ARM ÓкܶàºÏ×÷»ï°é£¬ÖÆÔì³öÁ˳ÉǧÉÏÍòµÄÉ豸£¬´ÓÏÂͼÖÐÄã»á·¢ÏÖÐíÐí¶à¶à²¿ÊðÁË»ùÓÚ
ARM ½â¾ö·½°¸µÄÓ¦Óá£

´ÓÓ²ÅÌÇý¶¯Æ÷µ½´òÓ¡»ú£¬´ÓÓÎÏ·É豸µ½ÖÇÄÜÁ¿±í£¬´ÓÏ´Ò»úµ½µçÊÓ»ú£¬¿Éν°üÂÞÍòÏ󣬼´±ãÈç´Ë£¬»¹Ã»ÓÐÖյ㣬ʱ¿Ì¶¼ÔÚÔö³¤£¬µ½Ä¿Ç°ÎªÖ¹£¬ÒÔARM¼Ü¹¹µÄоƬ³ö»õÁ¿×ܹ²´ïµ½500ÒÚÆ¬£¬Ã¿Ä껹ÒÔ´óÔ¼80ÒÚµÄÊý×ÖÔÚÔö³¤£¬µ½2020Ä꣬×ÜÁ¿ÓÐÍû´ïµ½1000ÒÚ¡£
ARM ÄÚºËÏÖÔÚ¹ãÊÜ»¶ÓµÄÒ»¸öÔÒòÊÇÖ§³ÖһϵÁеÄÐÔÄܺ͹¦Äܵ㡣ÎÒÏàÐÅÐí¶àÈËÌý˵ ARM ÊÇ´Ó ARM7TDMI
´¦ÀíÆ÷Äں˵ijɹ¦¿ªÊ¼µÄ£¬´ÓÉÏÊÀ¼Í90Äê´úÆðÕâÒ»ÄÚºËÔÚÊÖ»úÐÐÒµµÃµ½Á˹㷺²ÉÓã¬Ò²ÊÇARMÔçÆÚ³É¹¦µÄµì»ùʯ¡£
ËäÈ»ÏÖÔÚÒÀÈ»Êܵ½¹ã·ºÊ¹Óã¬Ò²¿ÉÒÔ¹ºÂòµ½°üº¬ÕâÒ»Äں˵ĴóÁ¿²¿¼þ£¬µ«²»ÔÙÌṩ ARM7TDMI µÄÊÚȨÐí¿É£¬ÏÖÔÚÒѾ´ÓÕâÒ»Äں˷¢Õ¹³öÒÔʵʱǶÈëʽ¿Õ¼äΪĿ±êµÄÕû¸ö²úƷ·Ïßͼ£¬ÏÖÔÚÓÐÁ½´ó²úƷϵÁУ¬Cortex-MϵÁÐÖ÷ÒªÓÃÓÚ×¢ÖØ³É±¾½ÚÔ¼µÄ΢¿ØÖÆÆ÷£»
Cortex-RϵÁУ¬Ìṩ·Ç³£¸ßµÄÐÔÄܺÍÍÌÍÂÁ¿£¬Í¬Ê±±£³Ö¾«×¼µÄʱÐòÊôÐԺͿÉÔ¤²âµÄÖжÏÑÓʱ£¬Í¨³£ÓÃÓÚʱÐò¹Ø¼üµÄÓ¦ÓÃÖУ¬ÈçÒýÇæ¹ÜÀíϵͳºÍÓ²ÅÌÇý¶¯Æ÷¿ØÖÆÆ÷¡£
ºóÀ´·¢Õ¹ÁËÕû¸öϵÁеÄÓ¦Óô¦ÀíÆ÷£¬´Ó²úÆ·Ïß×î³õµÄARM926EJ-S¿ªÊ¼£¬·¢Õ¹µ½ÁË ARM11MP£¬ÏÖÔÚ°üº¬ÁË
Cortex-A ϵÁУ¬ÕâЩ´¦ÀíÆ÷Éè¼ÆÎª¿ÉÔÚÒªÇó linux µÈƽ̨²Ù×÷ϵͳµÄÓ¦ÓÃÖÐÌṩ¿ÉËõ·ÅµÄ¸ßÐÔÄÜ¡£
ËüÃÇÈÚºÏÁ˾«ÃܵÄÄÚ´æ¹ÜÀí¹¦ÄÜ£¬ÒÔ¼°¶àýÌå´¦ÀíÀ©Õ¹Ö¸Á£¬´Ó ARM11MP ¿ªÊ¼¼ÓÈëÁËÕë¶Ô¶àºËϵͳµÄÖ§³Ö£¬Cortex-A
ϵÁеÄ×îкËÐÄÏÖÔÚÒÔ¶àºËÅäÖÃÌṩ£¬ÕâʹµÃËüÃÇÄܹ»ÕæÕýº¸Ç¹ãÀ«µÄ¹¦ÂʺÍÐÔÄܵ㷶Χ¡£
ÎÒÃÇÏÖÔÚÒѾ¶Ô¹«Ë¾Ô¨Ô´ºÍ¼Ü¹¹ÓÐÁËЩÁ˽⣬ÏÖÔÚÈÃÎÒÃǽøÈë ARM оƬµÄÄÚ²¿°É¡£
Äں˵Ť×÷ÔÀí

¾µäµÄARMϵͳ¼¶Ð¾Æ¬»òËùνµÄSocC°üº¬Ðí¶à×é¼þ£¬ÆäÖÐÖ»ÓÐһЩֱ½ÓÔ´×ÔARM¡£Ê×ÏÈ£¬ºËÐı¾Éíͨ³£Éî¶ÈǶÈëÔÚÉ豸ÄÚ²¿£¬ÔÚÉ豸·¶³ëÄÚͨ³£²»Ö±½Ó¿É¼û£¬¶øµ÷ÊÔ¶Ë¿Úͨ³£ÊÇΨһºÍºËÐı¾ÉíÏàÁ¬µÄÍâ¶²¿·Ö£¬ÓÐһЩճºÏÂß¼£¬ÈçʱÖӺ͸´Î»¼¯³Éµç·¡£
ÓÉÓÚ ARM ºËÐÄÖ»ÓÐÁ½¸öÖжÏÊäÈ룬×î³£¼ûµÄÍâÉè¾ÍÊÇijÖÖÖжϿØÖÆÆ÷£¬ÔÚÍâÉèÄÚ²¿£¬¸÷×é¼þͨ¹ýоƬÉÏ»¥Áª×ÜÏ߼ܹ¹Ï໥Á¬½Ó£¬¶ÔÓÚ¼«´ó¶àÊý»ùÓÚARMµÄÉ豸¶øÑÔ£¬Õâ¾ÍÊDZê×¼µÄ
AMBA »¥Áª¡£
AMBA Ö¸¶¨ÁËÁ½¸ö×ÜÏߣ¬³ÆÎªAXIµÄ¸ßÐÔÄÜϵͳ×ÜÏߣ¬ºÍ³ÆÎªAPBµÄµÍ¹¦ºÄÍâÉè×ÜÏߣ¬APBͨ³£ÓÃÓÚÁ¬½ÓËùÓÐÍâÉ裬AXIÔòÓÃÓÚ´æ´¢Æ÷ºÍÆäËû·¢¸ßËÙÉ豸£¬´ó¶àÊýÉ豸¶¼ÓÐÒ»¶¨ÊýÁ¿µÄоƬÉÏ´æ´¢ÒÔ¼°Á¬½ÓÍâÉè´æ´¢Æ÷É豸µÄ½Ó¿Ú£¬µ«ÊÇ×¢Ò⣬ÓëÉ豸µÄÍⲿÁ¬½Ó²¢²»ÊÇAMBA×ÜÏߣ¬Õâ½öÔÚÉ豸ÄÚ²¿Ê¹Ó㬲¢²»Íâ¶¡£
ÏÂÃæ¿´¿´Õâ¸öSocµÄ¹¤×÷ÔÀí¡ª¡ª±à³ÌÆ÷Ä£ÐÍ£¨programmer¡¯s model£©¡£½÷¼Ç£¬AϵÁкÍRϵÁÐÅäÖÃÔÚ±à³ÌÆ÷Ä£ÐÍÉϷdz£ÏàËÆ£¬µ«MϵÁÐÅäÖÃÔÚÐí¶à·Ç³£ÖØÒªµÄ·½Ãæ¶¼Óкܴó²»Í¬£¬ÕâÔÚ½ÓÏÂÀ´µÄ½²½âÖлáÖ¸³öÕâЩ²î±ð¡£
´Ó¸ù±¾ÉÏ˵£¬ARMÊÇRISC¼Ü¹¹£¬Äã¿ÉÄÜ»á·ñÈÏÏÖÔÚµÄARMÄÚºËÆäʵ²»ÊôÓÚRISCƽ̨£¬µ«ËüÃÇÓëRISCÓкܴóµÄÔ¨Ô´£¬Ò²±£ÁôÁË´«Í³ÉÏÓëRISC¼Ü¹¹Ïà¹ØµÄÐí¶àÌØÐÔ£¬ÀýÈç´ó¶àÊýÖ¸ÁîÔÚÒ»¸öÖÜÆÚÄÚÖ´ÐУ¬¼Ä´æÆ÷¼¯»ù±¾ÉÏÊÇÕý½»µÄ£¬¶øÇÒÖ¸Áʵʩ¼ÓÔØ´æ´¢Ê½¼Ü¹¹£¬Ò²¾ÍÒâζ×ÅÄܹ»Ö±½Ó´¦ÀíÄÚ´æÖÐÄÚÈݵÄÖ¸ÁîÖ»ÓмÓÔØºÍ´æ´¢Ö¸ÁÈç¹ûÐèÒª¶ÔÄÚ´æÖеÄÖµÖ´ÐÐÈκδ¦Àí£¬³ÌÐò±ØÐ뽫ÕâЩֵ¼ÓÔØµ½¼Ä´æÆ÷ÖУ¬Ö´ÐÐËùÐèµÄ´¦Àí£¬È»ºó½«½á¹û´æ»Øµ½ÄÚ´æÖУ¬ÆäËû³£¼û¼Ü¹¹ÔòÄܹ»Ö±½Ó²Ù¿Ø»òÐÞ¸ÄÄÚ´æÖеÄÄÚÈÝ¡£
ËùÓеÄÄÚ²¿¼Ä´æÆ÷³ýÁËһЩÊܵ½NEON¼Ü¹¹µÄʸÁ¿´¦Àí¹¦ÄÜÖ§³ÖÍâ¶¼ÊÇ32λ¿íµÄ£¬ËüÃǵÄÄÚ²¿ÓÉ32λALU´¦Àí£¬ÄÚ´æÔòͨ³£ÔÚ32λԪÖÐÓèÒÔ´¦Àí£¬Õâ¾ÍÊÇARMµÄ×Ö³¤¡£
̸µ½Ö¸Áʱ£¬Äã»á·¢ÏÖ ARM ºËÐIJ»Ö»ÓÐÒ»¸öÖ¸Á£¬ËùÓÐ ARMv7-A ºÍ ARMv7-R ºËÐͼ֧³Ö32λÔÉú
ARM Ö¸ÁºÍ Thumb Ö¸Á£¬ºóÕßÖеÄÖ¸Áî¿ÉÒÔÊÇ32λ»òÕß16λµÄ¡£
ARM Ö¸ÁÊÍ·ÅÁËÄں˵ÄÍêÕûÐÔÄÜDZÁ¦£¬¶øThumbÖ¸ÁÔòÌṩÁ˸ü³öÉ«µÄ´úÂëÃܶȣ¬ÎÒÃǰÑARMºÍThumbÖ¸Áî¼äÇл»ÕâÒ»¹ý³Ì³ÆÎª¡°½»»¥¹¤×÷¡±£¬²»Òªµ£ÐÄ£¬±àÒëÆ÷ºÍÁ´½ÓÆ÷»á´¦ÀíËüÃÇ¡£Ò»Ð©½Ï¾ÉµÄÄÚºËÖ§³ÖThumbÖ¸ÁµÄÔçÆÚ°æ±¾£¬ÆäÖÐËùÓеÄÖ¸Áî¶¼ÊÇ16λָÁ±ÈÈç
ARMv7-M Äں˽ö¾ÍÖ§³ÖThumbÖ¸Á¡£
Èç¹ûÄã֮ǰ½Ó´¥¹ý´¦ÀíÆ÷¼Ü¹¹£¬ÏàÐÅÄã»áÊìϤÔËÐÐģʽµÄ¸ÅÄîÒÔ¼°ÌØÈ¨µÄ¸ÅÄî¡£Ðí¶à¼Ü¹¹Í¨³£Ö§³ÖÁ½ÖÖģʽ£¬·Ö±ðΪ¡°Supervisor¡±ºÍ¡°User¡±£¬ÆäÖÐÒ»¸öģʽӵÓÐÌØÈ¨£¬ÁíÒ»¸öÔòûÓС£
ÔÚÎÞÌØÈ¨Ä£Ê½Ï´úÂë¿ÉÄÜÎÞ·¨Ö±½ÓÖ´ÐÐÄ³Ð©ÌØ¶¨µÄ²Ù×÷£¬±ÈÈ磬½ûÓÃÖжϣ¬ÖØÐÂÅäÖÃÄÚ´æ±£»¤£¬»ò·ÃÎÊÌØ¶¨µÄÄÚ´æÇøÓò£¬ÕâÊÇ´ó¶àÊý²Ù×÷ϵͳµÄ»ù±¾ÒªÇó£¬ÔÊÐíϵͳ´ÓÓû§ÈÎÎñÖб£»¤×Ô¼º¡£ARMÄÚºËͨ³£Ö§³ÖÆßÖÖ»ù±¾ÔËÐÐģʽ£¬Ã¿ÖÖģʽÓÐȨ·ÃÎÊ×Ô¼ºµÄ¶ÑÕ»¿Õ¼ä£¬ÒÔ¼°Ò»×鲻ͬµÄ¼Ä´æÆ÷×Ó¼¯£¬³ýÒ»¸öÍâÆäÓà¶¼ÊÇÓÉÌØÈ¨µÄģʽ£¬ÈçÏ£º

ÆäÖÐ6ÖÖÊÇÌØÈ¨Ä£Ê½£¬User ģʽÊÇûÓÐÌØÈ¨µÄģʽ£¬×÷ΪΨһµÄÎÞÌØÈ¨Ä£Ê½£¬User ģʽ¹©²Ù×÷ϵͳÓÃÓÚÓû§ÈÎÎñºÍ´¦ÀíÆ÷¡£
´ËÍ⣬ÓÐ5ÖÖģʽ³ÆÎª¡°Ò쳣ģʽ¡±£¬Ã¿Ò»ÖÖ¶¼Óë´¦ÀíÌØ¶¨ÖÖÀàµÄÒì³£»òÖжÏÏà¹Ø£¬ÀýÈ磬µ±Äں˿ªÊ¼´¦ÀíÍⲿÖжÏʱ»á×Ô¶¯½øÈë
IRQ ģʽ£¬¶ø Supervisor ģʽÔòÓÃÓÚ´¦Àí SVC Ö¸ÁîºÍÓ²¼þ¸´Î»£¬ÕâЩģʽ·Ö±ðÓµÓÐרÊôµÄ¶ÑÕ»¿Õ¼ä£¬ÒÔ¼°Ò»Ð¡×éרÓüĴæÆ÷£¬ÎÒÃǰÑÕâÒ»¹¦ÄܽÐ×ö¼Ä´æÆ÷±à×飬ֻÊÇÕâЩÒì³£ÊôÓÚ²»Í¬µÄÀàÐÍ¡£
×¢Ò⣬ÉÏͼ½öÊÊÓÃÓÚ Cortex-A ºÍ Cortex-R ´¦ÀíÆ÷£¬Cortex-M ΢¿ØÖÆÆ÷µÄģʽ½á¹¹ÔòȫȻ²»Í¬¡£ARMv7-M
¼Ü¹¹ÅäÖýö¶¨ÒåÁËÁ½ÖÖģʽ£¬ÈçÏÂͼ£¬·Ö±ðÊÇ Thread ģʽºÍ Handler ģʽ£¬Thread
ģʽûÓÐÌØÈ¨£¬ÓÃÓÚÓ¦ÓóÌÐò´úÂ룬 Handler ģʽÓÐÌØÈ¨£¬ÓÃÓÚÒì³£´¦Àí³ÌÐò£¬µ±ÏµÍ³¸´Î»Ê±ÔÚ Thread
ģʽÖпªÊ¼Ö´ÐУ¬Óöµ½Ò쳣ʱ×Ô¶¯±äΪ Handler ģʽ£¬´¦Àí³ÌÐòÍê³ÉºóÔٻص½ Thread ģʽ¡£

ÏÂÃæÎÒÃÇÖØµã½²ÏÂÕâЩģʽÊÇÈçºÎÓë¼Ä´æÆ÷×é½»»¥¹¤×÷µÄ:

±ÈÈçÎÒÃÇÀ´¿´¿´ºËÐÄÇл»µ½IRQģʽÒÔ´¦ÀíÍⲿÒ쳣ʱ»á·¢Éúʲô£¬´ÓͼÖÐÄã¿ÉÒÔ¿´µ½UserģʽµÄr13ºÍr14Çл»ÎªIRQģʽÖÐÓëËüÃǶÔÓ¦µÄ¼Ä´æÆ÷£¬ÓÉÓÚr13ÓÃ×÷¶ÑÕ»Ö¸Õ룬ËùÒÔÕâ±íʾIRQÖжÏÔÚ¶ÀÁ¢µÄ¶ÑÕ»ÖнøÐд¦Àí¡£
´ËÍâÒ²¿ÉÒÔ¿´µ½ÁíÒ»¸ö¼Ä´æÆ÷Ò²¼ÓÈëµ½¼¯ºÏÖÐÀ´£¬ËüÊÇ Saved Program Status Register
¼´ SPSR£¬ÓÃÓÚ±£Áôģʽ¸ü¸Ä·¢Éúʱ´¦ÀíÆ÷״̬µÄ¿ìÕÕ£¬²ÅÄÜʹµÃÔÚ´¦ÀíÖжÏʼþºó·µ»Øµ½ User ģʽ²¢»Ö¸´³ÌÐò±äµÃ·Ç³£ÈÝÒ×£¬µ±Öжϴ¦Àí½áÊøºó£¬¾Í»Øµ½Userģʽ£¬ÖØÐ»ñÈ¡ÔÏȵļĴæÆ÷¡£
ÔÚÒÔÉÏÃèÊöµÄ¼Ä´æÆ÷¼¯ºÏºÍ×éÖ¯ÊÊÓÃÓÚ Cotex-M Ö®ÍâµÄËùÓÐARMÄںˣ¬Cotex-M Äں˾ßÓв»Í¬µÄ¼Ä´æÆ÷¼¯ºÏºÍ×éÖ¯£¬¼ûÏÂͼ¡£
֮ǰһֱǿµ÷Cotex-M¼Ä´æÆ÷ÊDz»Í¬µÄ£¬²î±ð¾ÍÔÚÕâÀֻÓÐ18¸ö¼Ä´æÆ÷ûÓÐÎÒÃÇÔÚÆäËûÄÚºËÉÏ¿´µ½µÄ±à×é·½°¸¡£
Ê×ÏÈ£¬ÓÐ13¸öͨÓüĴæÆ÷£¬ÆäÖÐr0µ½r7ÊǵÍλ¼Ä´æÆ÷£¬r8 µ½ r12 ÊǸßλ¼Ä´æÆ÷£¬»¹ÓÐ3¸öÌØÊâ¼Ä´æÆ÷£ºStack
Pointer£¬Link Register ºÍ Program Counter£¬×îºóÒ»¸ö¼Ä´æÆ÷ÊdzÌÐò״̬¼Ä´æÆ÷
xPSR¡£
×¢Ò⣬Contex-M ÄÚºËÓÐÁ½ÖÖ´¦ÀíÆ÷ģʽ£ºThread ģʽºÍ Handler ģʽ£¬Ö»ÓÐÒ»¸ö¼Ä´æÆ÷ÔÚÕâÁ½ÖÖģʽ֮¼ä±à×飬Ëü¾ÍÊÇ
Stack Pointer¡£

ÕâÀïÀ©Õ¹ÏÂ״̬¼Ä´æÆ÷ Program status register:

×ó±ß28µ½31λÊÇALUÌõ¼þ´úÂ룬ÓÉÊý¾Ý´¦ÀíÖ¸Áî½øÐпÉÑ¡ÉèÖ㬲¢ÓÉÌõ¼þÖ¸Áî½øÐвâÊÔ£¬»¹ÓÐ4¸ö¶îÍâµÄ״̬λGE룬ÓÃÓڼǼÀ´×ÔSIMDÖ¸ÁîµÄ¶à¸ö½á¹û¡£Ö»ÓÐÕâЩALU״̬λ¿ÉÒÔÔÚ´¦ÓÚUserģʽʱ½øÐÐÐ޸ġ£
×îÓұߵÄ5λÏÔʾµ±Ç°µÄ´¦ÀíÆ÷ģʽ£¬ËüÃÇÔÚÏìÓ¦Òì³£ÖгöÏÖģʽ¸ü¸Äʱ×Ô¶¯ÉèÖã¬Ò²¿ÉÒÔÊÖ¶¯ÐÞ¸ÄÒÔ±ãÔÚ³ÌÐò¿ØÖÆÏ¸ü¸Äģʽ¡£
JºÍTÕâÁ½¸öλ¼Ç¼´¦ÀíÆ÷µÄµ±Ç°×´Ì¬£¬¸æËßÄں˵±Ç°ÕýÔÚÖ´ÐÐÄÄÒ»ÐÐÖ¸Á£¬¿ÉÄÜÊÇARM״̬£¬¼´ÕýÔÚÖ´ÐÐARMÖ¸ÁThumb״̬£¬¼´ÕýÔÚÖ´ÐÐThumbÖ¸Á»òÕßJazelle״̬£¬¼´ÕýÔÚÖ´ÐÐJava×Ö½Ú´úÂë¡£
IλºÍFλ¿ÉÆôÓûò½ûÓÃIRQºÍFIQÖжϡ£AλÔÊÐí½ûÓûòÔÝʱͣÓÃÒì²½Êý¾ÝÖÐÖ¹¡£EλÔÊÐíÔÚ³ÌÐò¿ØÖÆÏ¶¯Ì¬¸ü¸ÄÊý¾Ý½Ó¿ÚµÄ×Ö½ÚÐò(Little»òBig×Ö½ÚÐò)£¬¼ò»¯ÁË»ìºÏ×Ö½ÚÐòÊý¾ÝµÄ´¦Àí¡£Ê£ÓàµÄλ±»¡°±£Áô¡±»òÕßÓÃÓÚºÍÌØ¶¨Ö¸ÁîµÄÄÚ²¿ÏµÍ³×´Ì¬£¬²»¿ÉÓɳÌÐòÐ޸ġ£
ÏÂÃæÀ´½²Ò»Ï Cortex-M ÄÚºËÖпÉÓõÄ״̬¼Ä´æÆ÷£º

Äã»á·¢ÏÖËü±ÈÇ°Ãæ½²µÄ״̬¼Ä´æÆ÷¼òµ¥µÄ¶à£¬ÕâҲ˵Ã÷ÁËCortex-MÄں˵ļò½àÐÔ¡£ÓÐÒ»¸öT룬ÒòΪ
Cortex-M Äں˽öÖ§³Ö Thumb Ö¸Á£¬ËùÒÔ´ËλʼÖÕÊÇ1¡£×îºóÓÖÒ»¸ö×ֶΣ¬ËüÔÚºËÐÄÖ´ÐÐÒì³£´¦Àí³ÌÐòʱ°üº¬µ±Ç°»î¶¯µÄÒì³£±àºÅ¡£
³õѧÕß¿ÉÄÜ»áÎÊÒ쳣ʱ»á·¢Éúʲô£¬ÔÚARM¼Ü¹¹ÖУ¬Òì³£ÊÇijÖÖÀàÐ͵Äʼþ£¬µ¼ÖÂÈκÎÄÚÈÝÕý³£µÄ³ÌÐòÁ÷ÖгöÏÖÖжϣ¬Òì³£¿ÉÒÔÊÇÄÚ²¿µÄ£¬ÈçÄÚ´æ×ªÒë´íÎó£»Ò²¿ÉÒÔÊÇÍⲿµÄ£¬ÈçÀ´×ÔÍâÉèµÄÖжϣ»Ò²¿ÉÒÔÊÇͬ²½µÄ£¬ÈçSVCÖ¸Á»òÕßÊÇÒì²½µÄ£¬Èç¼ÆÊ±Æ÷Öжϡ£ÎÞÂÛÔÒòÈçºÎ£¬ºËÐĶÔËùÓÐÒì³£µÄ´¦Àí·½Ê½»ù±¾ÉÏÏàͬ¡£
µ±Ò»¸öÓ¦ÓóÌÐòÔÚÖðÒ»Ö´Ðи÷¸öÖ¸Áîʱ£¬Òì³£À´Ê±ÄÚºËÒª×öµÄµÚÒ»¼þʾÍÊÇÈ·±£ËüÄܹ»ÔÚÒì³£Ö®ºó»Øµ½ÕâÒ»µãÉÏ£¬Îª´ËÎÒÃDZØÐë¶Ôµ±Ç°×´Ì¬×¥È¡Ò»¸ö¿ìÕÕ£¬ËùÒÔÄں˸´ÖÆ
CPSR ²¢±£´æÔÚ SPSR ÖУ¬ÔÙ¸´ÖÆPC²¢±£´æÔÚLRÖУ¬È»ºóÄÚºËÇл»µ½ÏàÓ¦µÄÒ쳣ģʽ½ûÓýøÒ»²½µÄÖжϣ¬È·±£Ëü´¦ÓÚÕýÈ·µÄ״̬£¬½Ó×ÅʹÓÃʸÁ¿±íÈ·¶¨¿ÉÒÔÕÒµ½Òì³£´¦Àí³ÌÐòµÄλÖã¬Ã¿Ò»¸öÒì³£ÀàÐÍ·Ö±ðÓÐÒ»¸öÌõÄ¿£¬Ã¿Ò»ÌõÄ¿ÊÇÒ»¸öÖ¸Á·Ö³öÏà¹ØµÄ´¦Àí³ÌÐò´úÂ룬ËùÒÔºËÐľÍÊÇ´ÓÕýÈ·µÄʸÁ¿±íÌõÄ¿¼ÓÔØ
Program Counter Ö´ÐÐÒì³£´¦Àí³ÌÐò¡£
µ±´¦Àí³ÌÐòÍê³Éʱ£¬Òª·µ»Øµ½ÖжϵijÌÐò¾Í¼òµ¥ÁË£¬Ö»Òª´ÓSPSRÖб£ÁôµÄ¸±±¾»¹ÔCPSR£¬ÔÙ´ÓÁ´½Ó¼Ä´æÆ÷»¹Ô
Program Counter¡£µ±È»Cortex-MÔÚ´¦ÀíÒ쳣ʱÍêÈ«ÊÇÁíÒ»»ØÊ£¬ÕâÀï¾Í²»Ïê½²ÁË¡£
ÏÖÔÚÏàÐÅÄãÒѾÁ˽âÁ˼ĴæÆ÷£¬Ä£Ê½ºÍ״̬µÄËùÓÐÐÅÏ¢£¬ÏÖÔÚÎÒÃÇÀ´Ì¸Ì¸ARMÄÚºËÌṩµÄÖ¸Á¡£Ä¿Ç°Êг¡ÉϵĴó¶àÊýARMÄÚºËÖÁÉÙÖ§³ÖÁ½ÖÖÖ¸Á£ºÔÉúµÄ32λ
ARM Ö¸Á£¬ÒÔ¼°»ìºÏÁË16λºÍ32λµÄThumbÖ¸Á£¬ÎÒÃÇÏÈ¿´¿´ARMÖ¸Á¡£
ËäÈ»Õâ´Îchat²»ÊÇARM»ã±àÓïÑԵĿγ̣¬µ«Ò²ÄÜÈÃÄãÓÐ×ã¹»µÄÁ˽⡣ARMÖ¸ÁÖеÄËùÓÐÖ¸Áî¶¼ÊÇ32볤£¬Õ§Ò»¿´ARMÖ¸ÁîµÄÓï·¨ËÆºõ·Ç³£¸´ÔÓ£¬²»¹ýÒ»µ©ÄãÁ˽âÔËËã·ûºÍ¿ÉÄܵÄÔËËã¶ÔÏóµÄ»ù±¾½á¹¹£¬Æäʵ»¹ÊǷdz£¼òµ¥µÄ£¬±Ï¾¹ËüÊÇRISC¼Ü¹¹¡£ÏÂÃæ¾ÙÀý˵Ã÷£¬µÚÒ»¸öÕæµÄºÜ¼òµ¥£º
SUB r0, r1, #5
ËüÏÔÈ»ÊǸö¼õ·¨Ö¸ÁÓÐ3¸ö²ÎÊý¡£µÚÒ»¸ö²ÎÊýÊǼĴæÆ÷£¬Ö¸¶¨¼õ·¨½á¹ûµÄÄ¿µÄµØ£»ÁíÍâÁ½¸ö²ÎÊýÖ¸¶¨ÊäÈë²ÎÊý£¬¿ÉÒÔÀí½âΪ´Ó×óµ½ÓÒΪ¡±r0
= r1 - 5¡±¡£
ADD r2, r3, r3, LSL #2
ÕâÊÇÒ»¸ö¼Ó·¨Ö¸ÁÌṩһ¸ö×÷ΪµÚ¶þÊäÈëÔËËã¶ÔÏóµÄ¼Ä´æÆ÷£¬ÔÙÖ¸¶¨ÄÚÁªÒƶ¯»òÑ»·ÔËËãÓ¦Óõ½ÔËËã¶ÔÏóÉÏ£¬×÷ΪָÁîµÄÒ»²¿·Ö£¬Õâ¸öÖ¸Áî¿ÉÒÔÀí½âΪ¡±r2µÈÓÚr3¼ÓÉÏr3Ïò×óÒÆ¶¯Á½¸öλÖᱡ£
ANDS r4, r4, #0x20
ÕâÊÇÒ»¸öÂß¼ANDÖ¸ÁעÒâÕâ¸öANDÓиöºó׺¡¯S¡¯£¬ÕâÖ¸¶¨½«CPSRÖеÄALUÌõ¼þ´úÂëÉèΪ·´Ó³¸Ã½á¹û£¬ARMÊý¾Ý´¦ÀíÔËËãĬÈÏÇé¿öϲ»Ó°ÏìÌõ¼þ´úÂ룬ËùÒÔʹÓÃÕâ¸ö¡¯S¡¯ºó׺À´Ö¸¶¨ÐèÒªÕâô×öµÄÔËËã¡£
ADDEQ r5, r5, r6
ÕâÓÖÊÇÒ»¸öADD£¬ËüÊÇÓÐÌõ¼þÖ¸Á¸ÃÖú¼Ç·û´øÓС°EQ¡±ºó׺£¬±íÃ÷Ö»ÓÐÔÚ´ïµ½EQÌõ¼þÎªÕæÊ±²Å»áÖ´ÐÐÕâÒ»Ö¸ÁÈç¹û¸ÃÌõ¼þ²»ÎªÕ棬ָÁ±íÏÖΪNOP¡£
LDR r0, [r1]
ÕâÊÇÒ»¸ö¼ÓÔØÖ¸Á½«r1ÖÐÖ¸¶¨µØÖ·µÄÖµ¼ÓÔØµ½r0ÖС£ÔÚÖ¸¶¨ÄÚ´æ·ÃÎÊÖ¸ÁîµÄµØÖ·Ê±£¬ÎÒÃÇʹÓ÷½À¨ºÅÀ´±í´ï¡£
STRNEB r2, [r3, r4]
ÕâÊÇ´æ´¢Ö¸ÁֻÓÐÔÚNEÌõ¼þÓÐЧʱ²Å»áÖ´ÐвÙ×÷£¬Æä´ÎËüÊÇÒ»¸ö×Ö½Ú²ãÃæµÄ´æ´¢£¬Ëü½«r2ÖÐ×î²»ÖØÒªµÄ×Ö½Ú´æ´¢µ½r3¼Ór4µÃµ½µÄÄÚ´æÎ»ÖÃÉÏ¡£
ĿǰΪֹ£¬ÎÒÃÇÖ»ÊÇ̸ÁË ARM Ö¸Á£¬ÖÚËùÖÜÖªËùÓÐ ARM Ö¸Áî¶¼ÊÇ32λµÄ£¬ÎªÁËÌṩ¸üºÃµÄ´úÂëÃܶȣ¬ARMÔںܾÃÖ®Ç°ÍÆ³öÁ˵ڶþÖ¸Áî±àÂ룬½Ð×ö
Thumb£¬ Thumb ËùÓÐÖ¸Áî¶¼ÊÇ16λµÄ¡£
Thumb ´úÂëͨ³£ÔÚ´úÂëÃܶÈÉÏ¿ÉÒÔ¸ÄÉÆ´óÔ¼35%£¬´ó¶àÊýCºÍC++´úÂë¶¼Õë¶Ô¾ß±¸ Thumb ¹¦ÄܵĺËÐÄÉϵÄ
Thumb ½øÐбàÒë¡£
¼ÈÈ» Thumb ÕâôºÃ£¬ÎÒÃÇΪºÎÒª°Ñ;̫¶à¾«Á¦·ÅÔÚARMÖ¸ÁÉÏÄØ£¿ÕâÊÇÒòΪ Thumb ÊDZàÒë´úÂëµÄ×î¼ÑÄ¿±ê£¬Èç¹ûÄãÖ±½ÓÔÚ»ã±à³ÌÐòÖбàд´úÂ룬ARMÏà¶ÔÊǸüºÃµÄÑ¡Ôñ¡£ÏÂÃæÈÃÎÒÃǽøÒ»²½µØÆÊÎöARMµÄʵÏÖÔÀí¡£
ARM µÄ¼¼ÊõʵÏÖ
ÒªÏëÉîÈëÀí½âARMµÄʵÏÖÔÀíÊǸöºÜ´óµÄѧϰ¹¤³Ì£¬ÕâÀïÒ»ÑùÏ£Íû¶ÁÕß¶ÁºóÄܶÔARMÆðµ½Ò»¸ö×ÜÌåµÄÈÏʶ£¬ºóÐø¿ÉÒÔ½øÒ»²½µÄÉîÈëѧϰ¡£ÎÒÃÇÏÈÒÔ
ARM »ã±à»ù´¡À´Õ¹¿ªÕâÒ»Õ嵀 chat¡£
»ã±àÓïÑÔÊÇ»úÆ÷´úÂëÉϵÄÒ»¸ö±¡µÄÓï·¨²ã£¬ËüÓÉÒÔ¶þ½øÖƱàÂëµÄÖ¸Áî×é³É£¬ÕâÊÇÎÒÃǵļÆËã»úËùÀí½â¡£ÄÇôΪʲôÎÒÃDz»Ð´´úÂëÄØ£¿¿ÉÏë¶øÖªÒÔ¶þ½øÖÆÀ´½øÐÐ
coding µÄ»°ÊǶàôµÄÍ´¿à£¬Òò´ËÎÒÃǽ«±àдARM³ÌÐò¼¯¡£
µ«ÊǼÆËã»ú±¾Éíֻʶ±ð»úÆ÷ÂëÊDz»ÄÜÔËÐлã±à´úÂëµÄ£¬Õâ¾ÍÐèÒª½«»ã±à´úÂë×°µ½»úÆ÷´úÂëÖеŤ¾ß GNU Binutils
ÏîÄ¿ÖÐµÄ GNU Assembler¡£Ò»µ©ÓÃÀ©Õ¹Ãû*.s±àд³ÌÐò¾ÍÐèÒª°ÑËüÓëÆä½øÐÐ×éºÏ²¢ÓëldÁ´½ÓÆðÀ´£º
$ as program.s
-o program.o$ ld program.o -o program |

ÎÒÃÇ´Ó×îµ×²ãÀ´¿´Ï£¬ÔÚ×îµ×²ã£¬µç·ÉÏÓеçÐźţ¬ÐźÅÊǽ«µçѹÇл»ÎªÁ½¸öµçƽÀ´Ðγɵģ¬ÀýÈç0·ü(¹Ø)»ò5·ü(¿ª)¡£
ÒòΪֻÊÇÎÒÃDz»ÄÜÇáÒ׵ĸæËߵ緵çѹ£¬Ö»ÄÜÑ¡ÔñʹÓÃ1/0À´Ð´È뿪/¹ØµÄģʽ£¬È»ºóÎÒÃǶÔ0ºÍ1µÄ˳Ðò½øÐзÖ×飬ÒÔÐγɻúÆ÷ÂëÖ¸Á¸ÃÖ¸ÁîÊǼÆËã»ú´¦ÀíÆ÷µÄ×îС¹¤×÷µ¥Ôª£¬ÒÔÏÂÊÇ»úÆ÷ÓïÑÔµÄʾÀý£º
1110 0001 1010
0000 0010 0000 0000 0001 |
ÎÒÃÇÖªµÀARM´¦ÀíÆ÷Ö»ÄܶԼĴæÆ÷Ö´ÐÐÊý¾Ý´¦Àí£¬ËùÒÔÓë´æ´¢Æ÷µÄ½»»¥ÓÐÁ½ÖÖ£º´Ó´æ´¢Æ÷¼ÓÔØµ½¼Ä´æÆ÷£¬²¢½«Öµ´Ó¼Ä´æÆ÷´æ´¢µ½´æ´¢Æ÷£¬¼´ARMʹÓüÓÔØ/´æ´¢(LDRºÍSTR)Ä£ÐͽøÐÐÄÚ´æ·ÃÎÊ¡£
ͨ³£ LDR ÓÃÓÚ½«ÄÚ´æÖеÄÄÚÈݼÓÔØµ½¼Ä´æÆ÷ÖУ¬STRÓÃÓÚ´æ´¢¼Ä´æÆ÷ÖеÄÄÚÈݵ½´æ´¢Æ÷µØÖ·¡£ÎÒÃÇÀ´¾ÙÒ»¸ö»ù±¾Àý×Ó£º

µÚÒ»¿´µÄС»ï°é»òÐí»áһͷÎíË®£¬ÏÂÃæÒÔÒ»ÕŶ¯Ì¬Í¼À´½âÊÍÏ ARM ÊÇÈçºÎºÍ´æ´¢Æ÷½»»¥µÄ£º

²Î¿¼
ÕýÈç¸Õ¿ªÊ¼Ëù˵µÄ£¬±¾´Î chat ²»ÊÇËùÓÐ ARM ¼Ü¹¹ºÍ¼¼ÊõµÄÏ꾡¸ÅÀÀ£¬¶øÊÇͨÏò ARM ÊÀ½çµÄÒ»ÉÈ´óÃÅ£¬ARM
ÍøÕ¾ÉÏÓзḻµÄÎĵµµÈÄãÈ¥²éÔÄ£¬Ì½Ë÷¡£
±ÈÈ磨http://infocenter.arm.com£©¿ÉÒÔÕÒµ½¼Ü¹¹²Î¿¼Êֲᣬ֪ʶ¿âÎÄÕ£¬³£¼ûÎÊÌâ½â´ð£¬´¦ÀíÆ÷Îĵµ£¬ÒÔ¼°¿ª·¢ÕßÖ¸Äϵȡ£
ARM »¹ÓÐÒ»¸ö²»¶Ï׳´óµÄÈ«Çò´óѧ¼Æ»®£¬ÎªÄãÌṩ´óÁ¿µÄ½ÌѧºÍÅàѵ×ÊÔ´£¬Èí¼þ¹¤¾ß£¬ÒÔ¼°Ó²¼þ¿ª·¢°å¡£
|