ÄúÏÖÔÚµÄλÖ㺠Ö÷Ò³ > MCU > µ¥Æ¬»ú¼¼ÊõÓ¦Óà > ϵͳѧϰARMÖ®ËÄ --GNUµÄαָÁ -
±¾ÎÄËùÊô±êÇ©:
Ϊ±¾ÎÄ´´Á¢¸ö±êÇ©°É:

ϵͳѧϰARMÖ®ËÄ --GNUµÄαָÁ -

À´Ô´£º ÍøÂçÓû§·¢²¼£¬ÈçÓаæÈ¨ÁªÏµÍø¹Üɾ³ý¡¡2018-09-07¡¡

[µ¼¶Á]
×ªÔØ×Ôhttp://blog.csdn.net/qqliyunpeng/article/details/48791487Ò»¡¢Î±Ö¸Áî µÄº¬Ò壺 αָÁîÊDZàÒëÆ÷Ö§³ÖµÄÖ¸Á²»ÊÇÓ²¼þоƬ֧³ÖµÄÖ¸Áî¡£ ±àÒëÆ÷ÔÚ±àÒëʱ£¬»á°ÑαָÁîת»¯¶ÔÓ¦µÄоƬ֧³ÖµÄÖ¸Áî¡£

×ªÔØ×Ôhttp://blog.csdn.net/qqliyunpeng/article/details/48791487

±¾ÎÄÒýÓõØÖ·: http://www.21ic.com/app/mcu/201806/764474.htm


Ò»¡¢Î±Ö¸Áî µÄº¬Ò壺

αָÁîÊDZàÒëÆ÷Ö§³ÖµÄÖ¸Á²»ÊÇÓ²¼þоƬ֧³ÖµÄÖ¸Áî¡£

±àÒëÆ÷ÔÚ±àÒëʱ£¬»á°ÑαָÁîת»¯¶ÔÓ¦µÄоƬ֧³ÖµÄÖ¸Áî¡£

αָÁ°üÀ¨£ºÎ±²Ù×÷ºÍαָÁî

¶þ¡¢Î±²Ù×÷£º1. Êý¾Ý¶¨Ò壨Data Definition£©Î±²Ù×÷£º

Êý¾Ý¶¨Òåα²Ù×÷Ò»°ãÓÃÓÚÎªÌØ¶¨µÄÊý¾Ý·ÖÅä´æ´¢µ¥Ôª£¬Í¬Ê±¿ÉÍê³ÉÒÑ·ÖÅä´æ´¢µ¥ÔªµÄ³õʼ»¯¡£

³£¼ûµÄÊý¾Ý¶¨Òåα²Ù×÷ÓÐÈçϼ¸ÖÖ£º

.byte µ¥×Ö½Ú¶¨Òå .byte 0x12,¡¯a¡¯,23

.short ¶¨Òå2×Ö½ÚÊý¾Ý .short 0x1234,65535

.long /.word ¶¨Òå4×Ö½ÚÊý¾Ý .word 0x12345678

.quad ¶¨Òå8×Ö½Ú .quad 0x1234567812345678

.float ¶¨Ò帡µãÊý .float 0f3.2

.string/.asciz/.ascii ¶¨Òå×Ö·û´® .ascii ¡°abcd\0¡±,

×¢Ò⣺.asciiα²Ù×÷¶¨ÒåµÄ×Ö·û´®ÐèҪÿÐÐÌí¼Ó½áβ×Ö·û '\0'£¬ÆäËû²»ÐèÒª

Àý×Ó£º

int val = 0x11223344;

val:

.word 0x11223344

×¢Ò⣺

1--±äÁ¿µÄ¶¨Òå·ÅÔÚ£¬stopºó£¬.endǰ

2--±êºÅÊǵØÖ·µÄÖú¼Ç·û£¬±êºÅ²»Õ¼´æ´¢¿Õ¼ä¡£

2. »ã±à¿ØÖÆÎ±²Ù×÷£º

£¨1£©.if .else .endif ---- ÀàËÆcÓïÑÔÀïµÄÌõ¼þ±àÒë

»ã±à¿ØÖÆÎ±²Ù×÷ÓÃÓÚ¿ØÖÆ»ã±à³ÌÐòµÄÖ´ÐÐÁ÷³Ì

.if¡¢.else .endifα²Ù×÷Äܸù¾ÝÌõ¼þµÄ³ÉÁ¢Óë·ñ¾ö¶¨ÊÇ·ñÖ´ÐÐij¸öÖ¸ÁîÐòÁС£

µ±.ifºóÃæµÄÂß¼­±í´ïÊ½ÎªÕæ£¬ÔòÖ´ÐÐ.ifºóµÄÖ¸ÁîÐòÁУ¬·ñÔòÖ´ÐÐ.elseºóµÄÖ¸ÁîÐòÁУ»

.if¡¢.else¡¢.endifαָÁî¿ÉÒÔǶÌ×ʹÓá£

.if logical-expressing

¡­

.else

¡­

.endif

£¨2£©.macro£¬.endm --- ÀàËÆcÓïÑÔÀïµÄºêº¯Êý

macroα²Ù×÷¿ÉÒÔ½«Ò»¶Î´úÂ붨ÒåΪһ¸öÕûÌ壬³ÆÎªºêÖ¸Áî¡£

È»ºó¾Í¿ÉÒÔÔÚ³ÌÐòÖÐͨ¹ýºêÖ¸Áî¶à´Îµ÷ÓøöδúÂë¡£

ÆäÖУ¬$±êºÅÔÚºêÖ¸Áî±»Õ¹¿ªÊ±£¬±êºÅ»á±»Ì滻ΪÓû§¶¨ÒåµÄ·ûºÅ¡£

ºê²Ù×÷¿ÉÒÔʹÓÃÒ»¸ö»ò¶à¸ö²ÎÊý£¬µ±ºê²Ù×÷±»Õ¹¿ªÊ±£¬ÕâЩ²ÎÊý±»ÏàÓ¦µÄÖµÌæ»»¡£

Óï·¨¸ñʽ£º

.macro {$label} Ãû×Ö{$parameter{,$parameter}¡­}

¡­¡­..code

.endm

×¢Ò⣺Ïȶ¨ÒåºóʹÓÃ

.macro func1

mov r1,#1

mov r2,#2

mov r3,#3

.endm

func1

func1

func1

3.ÔÓÏîα²Ù×÷£º

.arm .arm ¶¨ÒåһϴúÂëʹÓÃARMÖ¸Á±àÒë

.thumb .thumb ¶¨ÒåһϴúÂëʹÓÃThumbÖ¸Á±àÒë

.section .section expr ¶¨ÒåÒ»¸ö¶Î¡£expr¿ÉÒÔʹ.text .data. .bss

.text .text {subsection} ½«¶¨Òå·û¿ªÊ¼µÄ´úÂë±àÒëµ½´úÂë¶Î

.data .data {subsection} ½«¶¨Òå·û¿ªÊ¼µÄ´úÂë±àÒëµ½Êý¾Ý¶Î,³õʼ»¯Êý¾Ý¶Î

.bss .bss {subsection} ½«±äÁ¿´æ·Åµ½.bss¶Î,δ³õʼ»¯Êý¾Ý¶Î

.align .align{alignment}{,fill}{,max} ͨ¹ýÓÃÁã»òÖ¸¶¨µÄÊý¾Ý½øÐÐÌî³äÀ´Ê¹µ±Ç°Î»ÖÃÓëÖ¸¶¨±ß½ç¶ÔÆë

.align 4 --- 16×Ö½Ú 2µÄ4´Î

.align (4) --- 4×Ö½Ú

.org .org offset{,expr} Ö¸¶¨´Óµ±Ç°µØÖ·¼ÓÉÏoffset¿ªÊ¼´æ·Å´úÂ룬

²¢ÇÒ´Óµ±Ç°µØÖ·µ½µ±Ç°µØÖ·¼ÓÉÏoffsetÖ®¼äµÄÄÚ´æµ¥Ôª£¬ÓÃÁã»òÖ¸¶¨µÄÊý¾Ý½øÐÐÌî³ä

_start »ã±à³ÌÐòµÄȱʡÈë¿ÚÊÇ_ start±êºÅ,Óû§Ò²¿ÉÒÔÔÚÁ¬½Ó½Å±¾ÎļþÖÐÓÃENTRY±êÖ¾Ö¸Ã÷ÆäËüÈë¿Úµã.

.global/ .globl £ºÓÃÀ´ÉùÃ÷Ò»¸öÈ«¾ÖµÄ·ûºÅ

.end Îļþ½áÊø

.include ¸ñʽ£º.include ¡°filename¡±

°üº¬Ö¸¶¨µÄÍ·Îļþ, ¿ÉÒÔ°ÑÒ»¸ö»ã±à³£Á¿¶¨Òå·ÅÔÚÍ·ÎļþÖÐ

.equ ¸ñʽ£º.equ symbol, expression

°Ñijһ¸ö·ûºÅ(symbol)¶¨Òå³Éijһ¸öÖµ(expression).¸ÃÖ¸Áî²¢²»·ÖÅä¿Õ¼ä.(cÓïÑ﵀ #define)

#define PI 3.1415 == .equ PI, 3.1415


Èý¡¢Î±Ö¸Á

¹Ø¼üµã£ºÎ±Ö¸ÁîÔÚ±àÒëʱ»áת»¯Îª¶ÔÓ¦µÄARMÖ¸Áî

1.ADRαָÁ --°Ñ±êÇ©ËùÔڵĵØÖ·¼ÓÔØµ½¼Ä´æÆ÷ÖÐ

ADRαָÁîΪС·¶Î§µØÖ·¶ÁȡαָÁʹÓõÄÏà¶ÔÆ«ÒÆ

·¶Î§£ºµ±µØÖ·ÖµÊÇ×Ö½Ú¶ÔÆë (8λ)ʱ£¬È¡Öµ·¶Î§Îª-255¡«255£¬

µ±µØÖ·ÖµÊÇ×Ö¶ÔÆë(32λ)ʱ£¬È¡Öµ·¶Î§Îª-1020¡«1020¡£

Óï·¨¸ñʽ:

ADR{cond} register,label

ADR R0, lable

2. ADRLαָÁ --½«Öеȷ¶Î§µØÖ·¶ÁÈ¡µ½¼Ä´æÆ÷ÖÐ

ADRLαָÁîΪÖеȷ¶Î§µØÖ·¶ÁȡαָÁʹÓÃÏà¶ÔÆ«ÒÆ

·¶Î§£ºµ±µØÖ·ÖµÊÇ×Ö½Ú¶ÔÆëʱ£¬È¡Öµ·¶Î§Îª-64¡«64KB£»

µ±µØÖ·ÖµÊÇ×Ö¶ÔÆëʱ£¬È¡Öµ·¶Î§Îª-256¡«256KB

Óï·¨¸ñʽ£º

ADRL{cond} register,label

ADRL R0£¬lable

3. LDRαָÁî: LDRαָÁî×°ÔØÒ»¸ö32λµÄ³£ÊýºÍÒ»¸öµØÖ·µ½¼Ä´æÆ÷¡£

Óï·¨¸ñʽ£º

LDR{cond} register,=[expr|label-expr]

LDR R0£¬=0XFFFF0000

×¢Ò⣺

£¨1£©ldrαָÁîºÍldrÖ¸ÁîÇø·Ö

ldr r1,=val @ r1 = val ÊÇαָÁî

ldr r2,val @ r1 = *val ÊÇ armÖ¸Áî

.val

.word 0x11223344

£¨2£©ÔõôȡÓÃldrαָÁîʵÏÖ³¤Ìø×ª

ldr pc£¬=32λµØÖ·

£¨3£©±àÂëÖнâ¾öÁ¢¼´ÊýµÄÎÊÌâ

ÓÃarmαָÁîldr

0x999 ²»ÊÇÁ¢¼´Êý£¬

ldr r0,=0x999




¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ ²é¿´ÆÀÂÛ »Ø¸´



ǶÈëʽ½»Á÷ÍøÖ÷Ò³ > MCU > µ¥Æ¬»ú¼¼ÊõÓ¦Óà > ϵͳѧϰARMÖ®ËÄ --GNUµÄαָÁ -
 

"ϵͳѧϰARMÖ®ËÄ --GNUµÄαָÁ -"µÄÏà¹ØÎÄÕÂ

ÍøÕ¾µØÍ¼

Χ¹Û()