Stop B Stop LTORG Src DCD 1,2,3,4,5,6,7,8,9,0xA,0xB,0xC,0xD,0xE,0xF,0x10
DCD 1,2,3,4,5,6,7,8,9,0xA,0xB,0xC,0xD,0xE,0xF,0x10 Dst DCD 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 DCD 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 END
6.½«Ò»¸ö´æ·ÅÔÚ¡¾R1:R0¡¿ÖеÄ64λÊý¾Ý£¨ÆäÖÐR1Öдæ·Å¸ß32룩µÄ¸ßλºÍµÍλ¶Ô³Æ»»Î»£¬ÈçµÚ0λÓëµÚ63λµ÷»»£¬µÚ1λÓëµÚ62λµ÷»»£¬µÚ2λÓëµÚ61λµ÷»»£¬¡£¡£¡£¡£µÚ31λÓëµÚ32λµ÷»»¡£
´ð£º½â£º³ÌÐòÉè¼ÆË¼Â·£º¶ÔÓÚµ¥¸ö32λ¼Ä´æÆ÷µÄ¶Ô³Æ»»Î»²Ù×÷£¬ÎÒÃÇ¿ÉÒÔ²ÉÓÃÒÆÎ»²Ù×÷µÄ·½·¨£¬Í¨¹ýÒÀ´Î´ÓµÍλȡ³öÄ¿±ê¼Ä´æÆ÷µÄ¸÷¸ö룬ÔÙ½«Æä·ÅÖõ½Ä¿±ê¼Ä´æÆ÷µÄ×îµÍλ£¬È»ºóͨ¹ýÒÆÎ»²Ù×÷£¬ËÍÈëÏàӦλ¡£¶ÔÓÚ¡¾R1:R0¡¿µ½¡¾R3:R2¡¿µÄ64λ¶Ô³Æ»»Î»²Ù×÷£¬ÎÒÃÇ¿ÉÒÔ²ÉÓÃR1-¡·R2ºÍR0-¡·R3µÄÁ½¸ö32λµÄ»»Î»²Ù×÷À´Íê³É¡£
ÔÚARM¼¯³É¿ª·¢»·¾³Ï±à³Ì£º
/*---------------------------------------------------------------------------------------- ********¼Ä´æÆ÷ʹÓÃ˵Ã÷************************ ***R1£¬R0:Ô´Êý¾Ý ***R3£¬R2:Ä¿±êÊý¾Ý
***R4:¼ÆÊýÆ÷£¬³õֵΪ32£¬µÝ¼õÖÁ0
*---------------------------------------------------------------------------------------------*/ AREA Bit_Exch,CODE,READONLY ;ÉùÃ÷´úÂë¶ÎBit_Exch ENTRY ;±êʶ³ÌÐòÈë¿Ú
CODE32 ;ÉùÃ÷32λARMÖ¸Áî
START LDR R0,=0x55555555 ;ÊäÈëÔ´Êý¾Ý
MOV R3,#0 £»Ä¿±êÊý¾Ý MOV R5,#0 £»Êý¾ÝÁÙʱ»º³åÇø
MOV R4,#32 £»¼ÆÊýÆ÷ Bitex_H32 AND R5,R0,#1 £»È¡³öÔ´Êý¾ÝµÄ×îµÍλËÍR5
ORR R3,R5,R3,LSL #1 £»½«Ä¿±êÊý¾Ý×óÒÆÒ»Î»£¬²¢½«È¡³öµÄÊý¾Ý
;ËÍÈëÆä×îµÍλ
MOV R0,R0,LSR #1 ;Ô´Êý¾ÝÓÒÒÆÒ»Î» SUBS R4,R4,#1 £»µÝ¼õ¼ÆÊý BNE Bitex_L
LDR R1,=0x55555555 ;ÊäÈëÔ´Êý¾Ý
MOV MOV MOV
Bitex_L32 AND
ORR
R2,#0 R5,#0 R4,#32 £»Ä¿±êÊý¾Ý
£»Êý¾ÝÁÙʱ»º³åÇø £»¼ÆÊýÆ÷
£»È¡³öÔ´Êý¾ÝµÄ×îµÍλËÍR5
£»½«Ä¿±êÊý¾Ý×óÒÆÒ»Î»£¬²¢½«È¡³öµÄÊý¾Ý ;ËÍÈëÆä×îµÍλ ;Ô´Êý¾ÝÓÒÒÆÒ»Î» £»µÝ¼õ¼ÆÊý
R5,R1,#1 R2,R5,R2,LSL #1
MOV R1,R1,LSR #1 SUBS R4,R4,#1 BNE Bitex_L Stop B Stop END
7.ÄÚ´æÊý¾ÝÇø¶¨ÒåÈçÏ£º DataZone
DCD 0x12345678, 0x87654321, 0xABCDEF12, 0xCDEFAB45 DCD 0x12345678, 0x87654321, 0xABCDEF12, 0xCDEFAB45 DCD 0x12345678, 0x87654321, 0xABCDEF12, 0xCDEFAB45 DCD 0x12345678, 0x87654321, 0xABCDEF12, 0xCDEFAB45 DCD 0x12345678, 0x87654321, 0xABCDEF12, 0xCDEFAB45 DCD 0x12345678, 0x87654321, 0xABCDEF12, 0xCDEFAB45 DCD 0x12345678, 0x87654321, 0xABCDEF12, 0xCDEFAB45 DCD 0x12345678, 0x87654321, 0xABCDEF12, 0xCDEFAB45
ÒÔÉÏ¿ÉÒÔ¿´×öÒ»¸ö8*4¾ØÕó£¬ÇëÓÃARM»ã±àÓïÑÔÔÚARM¼¯³É¿ª·¢»·¾³ÏÂÉè¼Æ³ÌÐò£¬ÊµÏÖ¶Ô¾ØÕóµÄתÖòÙ×÷¡£
Èç¹û¸ÄΪÔÚGNU ARM»·¾³Ï±à³Ì£¬³ÌÐòÓ¦ÈçºÎÐ޸ġ£
´ð£º½â£ºÊ¹ÓÃR0Ö¸ÏòÔ´Êý¾ÝÇø£¬R1Ö¸ÏòÄ¿±êÊý¾ÝÇø¡£´ÓÔ´Êý¾ÝÇøÖа´ÁÐÈ¡Êý¾Ý£¨Ã¿´ÎÈ¡8¸ö£©£¬È»ºó˳Ðò´æÈëÄ¿±êÊý¾ÝÇø¡£ ÔÚARM¼¯³É¿ª·¢»·¾³Ï±à³Ì£º
/*---------------------------------------------------------------------------------------- ********¼Ä´æÆ÷ʹÓÃ˵Ã÷************************ ***R0:Ô´Êý¾Ý ***R1:Ä¿±êÊý¾Ý
***R2:ÐмÆÊýÆ÷£¬³õֵΪ8£¬µÝ¼õÖÁ0 ***R3:ÁмÆÊýÆ÷£¬³õֵΪ4£¬µÝ¼õÖÁ0
*---------------------------------------------------------------------------------------------*/ AREA Bit_Exch,CODE,READONLY ;ÉùÃ÷´úÂë¶ÎBit_Exch ENTRY ;±êʶ³ÌÐòÈë¿Ú
CODE32 ;ÉùÃ÷32λARMÖ¸Áî
START LDR R0,=Src
COL ROW
LDR
MOV MOV LDR STR SUBS BNE
SUBS BNE
R1,=Dst R3,#4 R2,#8 R4,[R0],#16 R4,[R1],#4 R2,R2,#1 ROW R3,R3,#1 COL
£»°´ÁÐÈ¡Êý¾Ý £»°´ÐдæÊý¾Ý £»ÐмÆÊýµÝ¼õ
£»ÁмÆÊýµÝ¼õ
Stop
B END
Stop
µÚ8Õ ARM»ã±àÓïÑÔÓëǶÈëʽC»ìºÏ±à³Ì
1.Ñϸñ°´ÕÕǶÈëʽCÓïÑԵıà³Ì¹æ·¶£¬Ð´Ò»¸öCÓïÑÔ³ÌÐò£¬ÊµÏÖ½«Ò»¸ö¶þάÊý×éÄÚµÄÊý¾ÝÐкÍÁнøÐÐÅÅÐò¡£ ´ð£ºÂÔ
2.ǶÈëʽC³ÌÐòÉè¼ÆÖг£ÓõÄÒÆÎ»²Ù×÷ÓÐÄļ¸ÖÖ£¬Çë˵Ã÷ÿÖÖÔËËãËù¶ÔÓ¦µÄARMÖ¸ÁîʵÏÖ¡£ ´ð£ºÒÆÎ»²Ù×÷·ÖΪ×óÒÆ²Ù×÷ÓëÓÒÒÆ²Ù×÷
×óÒÆÔËËã·û¨D<<¡¬ÊµÏÖ½«¨D<<¡¬×ó±ßµÄ²Ù×÷ÊýµÄ¸÷¸ö¶þ½øÖÆÎ»Ïò×óÒÆ¶¯¨D<<¡¬Óұ߲Ù×÷ÊýËùÖ¸¶¨µÄλÊý£¬¸ß붪Æú£¬µÍλ²¹0¡£ÆäÖµÏ൱ÓÚ³ËÒÔ£º2¨D×óÒÆÎ»Êý¡¬´Î·½¡£
ÓÒÒÆÔËËã·û¨D>>¡¬ÊµÏÖ½«¨D>>¡¬×ó±ßµÄ²Ù×÷ÊýµÄ¸÷¸ö¶þ½øÖÆÎ»ÏòÓÒÒÆ¶¯¨D<<¡¬Óұ߲Ù×÷ÊýËùÖ¸¶¨µÄλÊý¡£
? ¶ÔÓÚ¿ÕλµÄ²¹Æë·½Ê½£¬ÎÞ·ûºÅÊýÓëÓзûºÅÊýÊÇÓÐÇø±ðµÄ¡£
? ¶ÔÎÞ·ûºÅÊý½øÐÐÓÒÒÆÊ±£¬µÍ붪Æú£¬¸ßλÓÃ0²¹Æë£¬ÆäÖµÏ൱ÓÚ³ýÒÔ£º2¨DÓÒÒÆÎ»Êý¡¬
´Î·½
? ¶ÔÓзûºÅÊý½øÐÐÓÒÒÆÊ±£¬¸ù¾Ý´¦ÀíÆ÷µÄ²»Í¬Ñ¡ÔñÂß¼ÓÒÒÆ»òËãÊõÓÒÒÆ
3.volatileÏÞÖÆ·ûÔÚ³ÌÐòÖÐÆðµ½Ê²Ã´×÷Óá£Çë¾ÙÀý˵Ã÷¡£
´ð£ºvolatileµÄ±¾ÒâΪ ¨DÔÝ̬µÄ¡¬»ò.¨DÒ×±äµÄ¡¬£¬¸Ã˵Ã÷·ûÆðµ½ÒÖÖÆ±àÒëÆ÷ÓÅ»¯µÄ×÷Óá£
Èç¹ûÔÚÉùÃ÷ʱÓèDvolatile¡¬¹Ø¼ü½øÐÐÐÞÊΣ¬Óöµ½Õâ¸ö¹Ø¼ü×ÖÉùÃ÷µÄ±äÁ¿£¬±àÒëÆ÷¶Ô·ÃÎʸñäÁ¿µÄ´úÂë¾Í²»ÔÙ½øÐÐÓÅ»¯£¬´Ó¶ø¿ÉÒÔÌá¹©ÌØÊâµØÖ·µÄÎȶ¨·ÃÎÊ¡£ ? Àý:Ó²¼þ¶Ë¿Ú¼Ä´æÆ÷¶ÁÈ¡ ? Char x=0,y=0,z=0;
? x=ReadChar(0x54000000);//¶Á¶Ë¿Ú ? y=x;
? x=ReadChar(0x54000000);//ÔÙ¶Á¶Ë¿Ú ? z=x;
???????? ÒÔÉÏ´úÂë¿ÉÄܱ»±àÒëÆ÷ÓÅ»¯Îª Char x=0,y=0,z=0;
x=ReadChar(0x54000000);//¶Á¶Ë¿Ú y=x; z=x;
ΪÁËÈ·±£xµÄÖµ´ÓÕæÊµ¶Ë¿Ú»ñÈ¡£¬ÉùÃ÷ʱӦ¸ÃΪ Volatile char x; Char y,z;
4.Çë·ÖÎöÏÂÁгÌÐò´úÂëµÄÖ´Ðнá¹û¡£ #include
´ð£º³ÌÐòÊä³ö½á¹ûΪ£º****p4=4081
5.·ÖÎöºê¶¨Òå#define POWER(x) x*x ÊÇ·ñºÏÀí£¬¾ÙÀý˵Ã÷¡£Èç¹û²»ºÏÀí£¬Ó¦ÈçºÎ¸ü¸Ä£¿ ´ð£º#define POWER(x) x*x ²»ºÏÀí£»¶ÔÓÚ´ø²ÎÊýµÄºê£¬Æä²ÎÊýÓ¦¸ÃÓÃÀ¨ºÅÀ¨ÆðÀ´¡£ Àý£ºÈç¹û°´ÕÕϱ߷½Ê½Ê¹Óøúê
POWER(2+3) ÔòºêÕ¹¿ªºóΪ 2+3*2+3
¸ÃºêÓ¦ÐÞ¸ÄΪ£º#define POWER(x) £¨x£©*£¨x£©
6.Ìõ¼þ±àÒëÔÚ³ÌÐòÉè¼ÆÖÐÓÐÄÄЩÓÃ;£¿
´ð£ºÌõ¼þ±àÒë°üÀ¨ÁË6ÌõÔ¤´¦ÀíÖ¸Áî#ifdef, #ifndef. ##if, #elif, #else, #endif.¡£Ìõ¼þ±àÒëµÄ¹¦ÄÜÔÚÓÚ¶ÔÔ´³ÌÐòÖеÄÒ»²¿·ÖÄÚÈÝÖ»ÓÐÂú×ãijÖÖÌõ¼þµÄÇé¿öÏ²ŽøÐбàÒë¡£
7.ºÎΪ¿ÉÖØÈ뺯Êý£¿Èç¹ûʹ³ÌÐò¾ßÓпÉÖØÈëÐÔ£¬ÔÚ³ÌÐòÉè¼ÆÖÐÓ¦¸Ã×¢ÒâÄÄЩÎÊÌ⣿
´ð£ºÈç¹ûij¸öº¯Êý¿ÉÒÔ±»¶à¸öÈÎÎñ²¢·¢Ê¹Ó㬶ø²»»áÔì³ÉÊý¾Ý´íÎó£¬ÎÒÃǾÍ˵Õâ¸öº¯Êý¾ßÓпÉÖØÈëÐÔ£¨reentrant£© ¡£
¿ÉÖØÈ뺯Êý¿ÉÒÔʹÓþֲ¿±äÁ¿£¬Ò²¿ÉÒÔʹÓÃÈ«¾Ö±äÁ¿¡£
Èç¹ûʹÓÃÈ«¾Ö±äÁ¿£¬ÔòӦͨ¹ý¹ØÖжϡ¢ÐźÅÁ¿£¨¼´P¡¢V²Ù×÷£©µÈÊÖ¶Î¶ÔÆä¼ÓÒÔ±£»¤£¬Èô²»¼ÓÒÔ±£»¤£¬Ôò´Ëº¯Êý¾Í²»¾ßÓпÉÖØÈëÐÔ£¬¼´µ±¶à¸ö½ø³Ìµ÷Óô˺¯Êýʱ£¬ºÜÓпÉÄÜʹµÃ´ËÈ«¾Ö±äÁ¿±äΪ²»¿É֪״̬¡£
8.ÏÖÓÐÄ£¿émodule_1, module_2, module_3, ÒªÇóÔÚÄ£¿émodule_1ÖÐÌṩ¿É¹©Ä£¿émodule_2, module_3ʹÓõÄintÐͱäÁ¿xx£¬Çëд³öÄ£¿é»¯³ÌÐòÉè¼Æ¿ò¼Ü¡£ ´ð£ºÊ×ÏÈÔÚmodule_1µÄ.cÎļþÖж¨Òå int xx£» /*module_1.c*/