ϵͳѧϰARMÖ®Îå --CÓïÑԺͻã±à»ìºÏ±àд -
[µ¼¶Á]
×ªÔØ×Ôhttp://blog.csdn.net/qqliyunpeng/article/details/48791647Ò»¡¢GNU»ã±àÊéд¸ñʽ£º´úÂëÐÐÖеÄ×¢ÊÍ·ûºÅ: ¡®@¡¯ ÕûÐÐ×¢ÊÍ·ûºÅ: ¡®#¡¯Óï¾ä·ÖÀë·ûºÅ: ¡®;¡¯Ö±½Ó²Ù×÷Êýǰ׺: ¡®#¡¯ »ò ¡®$¡¯È«¾Ö±êºÅ£º
±¾ÎÄÒýÓõØÖ·: http://www.21ic.com/app/mcu/201806/764475.htm
Ò»¡¢GNU»ã±àÊéд¸ñʽ£º´úÂëÐÐÖеÄ×¢ÊÍ·ûºÅ: ¡®@¡¯ ÕûÐÐ×¢ÊÍ·ûºÅ: ¡®#¡¯Óï¾ä·ÖÀë·ûºÅ: ¡®;¡¯Ö±½Ó²Ù×÷Êýǰ׺: ¡®#¡¯ »ò ¡®$¡¯
È«¾Ö±êºÅ£º±êºÅÖ»ÄÜÓÉa¡«z£¬A¡«Z£¬0¡«9£¬¡°.¡±£¬_µÈ£¨Óɵ㡢×Öĸ¡¢Êý×Ö¡¢Ï»®ÏßµÈ×é³É£¬³ý¾Ö²¿±êºÅÍ⣬²»ÄÜÒÔÊý×Ö¿ªÍ·£©×Ö·û×é³É£¬±êºÅµÄºóÃæ¼Ó¡°£º¡±¡£
¶ÎÄÚ±êºÅµÄµØÖ·ÖµÔÚ»ã±àʱȷ¶¨£»
¶ÎÍâ±êºÅµÄµØÖ·ÖµÔÚÁ¬½Óʱȷ¶¨¡£
¾Ö²¿±êºÅ:¾Ö²¿±êºÅ Ö÷ÒªÔÚ¾Ö²¿·¶Î§ÄÚʹÓöøÇÒ¾Ö²¿±êºÅ¿ÉÒÔÖØ¸´³öÏÖ¡£ËüÓÉÁ½²¿×é³É¿ªÍ·ÊÇÒ»¸ö0-99Ö±½ÓµÄÊý×Ö¾Ö²¿±êºÅ ºóÃæ¼Ó¡°:¡±???
F£ºÖ¸Ê¾±àÒëÆ÷Ö»ÏòǰËÑË÷£¬´úÂëÐÐÊýÔö¼ÓµÄ·½Ïò/ ´úÂëµÄÏÂÒ»¾ä
B£ºÖ¸Ê¾±àÒëÆ÷Ö»ÏòºóËÑË÷£¬´úÂëÐÐÊý¼õСµÄ·½Ïò
×¢Òâ¾Ö²¿±êºÅµÄÌø×ª£¬¾Í½üÔÔò
Àý×Ó£º
1£ºa
2£ºb
1£ºc
b 1b Ìø×ªµ½ c Ëù´¦µÄλÖÃ
==================================================================
¶þ¡¢»ìºÏ±à³ÌºÍÄÚÁª»ã±à£º¡¾1¡¿1.c ºÍ2.c ±àÒë³ÉÒ»¸öelfÎļþgcc -c 1.c -o 1.o
gcc -c 2.c -o 2.o
ld -Ttext 40008000 1.o 2.o -o a.elf
¡¾2¡¿1.s ºÍ2.c ±àÒë³ÉÒ»¸öelfÎļþgcc -c 1.s -o 1.o
gcc -c 2.c -o 2.o
ld -Ttext 40008000 1.o 2.o -o a.elf
¡¾3¡¿cÓïÑÔÖе÷Óûã±àÖеĺ¯ÊýÔÚ»ã±àÖÐ.global/.globl (ÔÚ¶¨ÒåµÄÎļþÖÐ)
ÔÚ c ÖÐextern (ÔÚµ÷ÓõÄÎļþÖÐ)
================ÄÚÁª»ã±à============
¡¾4¡¿ÄÚÁª»ã±à£ºÔÚcÓïÑÔ´úÂëÖÐǶÈë»ã±àÖ¸Á1£©Gcc ͨ¹ý¹Ø¼ü×Ö¡°asm¡±À´ÉùÃ÷ÄÚÁª»ã±à
£¨2£©¸ñʽ£º asm»ò__asm__¿ªÍ·£¬Ð¡À¨ºÅ+·ÖºÅ£¬À¨ºÅÄÚÈÝд»ã±àÖ¸Áî¡£
Ö¸Áî+ntÓÃË«ÒýºÅÒýÉÏ
asm(code : output operand list : input operand list : clobber list);
£¨3£©ÀýÒ»£ºÎÞ²ÎÊý£¬ÎÞ·µ»ØÖµ
asm
(
//»ã±àÖ¸Áî
"mrs r0,cpsr nt"
"bic r0,r0,#0x80 nt"
"msr cpsr,r0 nt"
);
£¨4£©
Àý¶þ£ºÓвÎÊý 1£¬Óзµ»ØÖµ
ÈÃÄÚÁª»ã±à×ö¼Ó·¨ÔËË㣬Çóa+b£¬½á¹û´æÔÚcÖÐ
int a =100£»
int b =200£»
int c =0£»
asm
(
"add%0,%1,%2nt"
: "=r"(c) //Êä³öÁбí %0 --c
: "r"(a),"r"(b) //ÊäÈëÁбí %1 --a %2--b
: "memory" //֪ͨÁбí
);
ÀýÈý£ºÓвÎÊý 2 £¬Óзµ»ØÖµ
ÈÃÄÚÁª»ã±à×ö¼Ó·¨ÔËË㣬Çóa+b£¬½á¹û´æÔÚcÖУ¬°Ña-bµÄ´æÔÚdÖÐ
int a=100£»
int b=200£»
int c=0£»
int d=0£»
asm volatile
(
"add %[op1],%[op2],%[op3]nt"
:[op1]"=r¡±(sum)
:[op2]"r"(a),[op3]¡±r¡±(b)
:"memory"
" sub%[op4],%[op2],%[op3]nt "
:[%op4]"=r"(d)
:
:"memory"
);
¡¾5¡¿ gccµÄ´úÂëÓÅ»¯¼¶±ð£¬ÔÚ makefile ÎļþÖеıàÒëÃüÁî4¼¶ O0 -- O3 Êý×ÖÔ½´ó£¬ÓÅ»¯³Ì¶ÈÔ½¸ß¡£O3×î´óÓÅ»¯
¡¾6¡¿volatile×÷ÓÃvolatileÐÞÊεıäÁ¿£¬±àÒëÆ÷²»ÔÙ½øÐÐÓÅ»¯£¬Ã¿´Î¶¼ÕæÕý·ÃÎÊÄÚ´æµØÖ·¿Õ¼ä¡£
Èý¡¢ATPCS¹æÔò£º£¨ARM¡¢thumber³ÌÐòµ÷Óù淶£©£¨1£©Ê¹ÓÃr0-r3£¬ÒÀ´Î½ÓÊܲÎÊývoid func(a,b,c,d,e)
a -- r0
b -- r1
c -- r2
d -- r3
e -- Õ»
£¨2£©Ê¹ÓÃr0 ½ÓÊÕ·µ»ØÖµint func1(int m, int n)
m -- r0
n -- r1
·µ»ØÖµ¸ø r0
£¨3£©¾Ö²¿±äÁ¿£¬±£´æµ½r4--r11£¬µ±¾Ö²¿±äÁ¿¶àÓà8¸ö£¬ÓÃÕ»£¨4£©r12 -- ip£¨±£´æsp£©r13 -- sp
r14 -- lr
r15 -- pc
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ ²é¿´ÆÀÂÛ »Ø¸´
"ϵͳѧϰARMÖ®Îå --CÓïÑԺͻã±à»ìºÏ±àд -"µÄÏà¹ØÎÄÕÂ
- ÉÏһƪ£ºÏµÍ³Ñ§Ï°ARMÖ®Áù --Òì³£´¦Àí -
- ÏÂһƪ£ºÏµÍ³Ñ§Ï°ARMÖ®ËÄ --GNUµÄαָÁ -
ÈÈÃÅÎÄÕÂ
- µ¥Æ¬»úÊÖ»úµç°å³äµçÆ÷³ÌÐò(PWM×Ô¶¯µ÷ѹ) -
- S3C2440 ²âÊÔ³ÌÐò(ËÄ) ÍⲿÖжÏʵÑé -
- PICÖжϵÄÓ¦ÓÃ(¶þ£© -
- ARM ϵÁÐ -- Ϊ ARM Linux ÖÆ×÷¸ùÎļþϵͳ -
- STM32ÖÐÓ³Éä C¿âº¯Êýprintf -
- ds1302µÄ51×Ó³ÌÐò -
- LM3S1138ÈëÃÅ3£¬ÖÐ¶Ï -
- ¶¨Ê±Æ÷µÄÓ¦ÓÃ---ÖжϷ½Ê½---ÈÃ8¸öLEDµÆ£¬×óÓÒ¸÷4¸öÀ´
- ×ÔÖÆµ¥Æ¬»ú֮ʮ¡¡AT89S51µÄÉÏÀµç×èÎÊÌâ -
- stm32 ÔÚÏßÉý¼¶Ö®Ìø×ªº¯Êý -