ARMϰÌâ´ð°¸ ÏÂÔØ±¾ÎÄ

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 main(){ int value=0xFF1; int *p1,**p2,***p3,****p4; p1=&value; p2=&p1; p3=&p2; p4=&p3; printf(\}

´ð£º³ÌÐòÊä³ö½á¹ûΪ£º****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*/