LinuxÏÂARM»ã±àÓï·¨
µÚÒ»²¿·Ö LinuxÏÂARM»ã±àÓï·¨
¾¡¹ÜÔÚLinuxÏÂʹÓÃC»òC++±àд³ÌÐòºÜ·½±ã£¬µ«»ã±àÔ´³ÌÐòÓÃÓÚϵͳ×î»ù±¾µÄ³õʼ»¯£¬Èç³õʼ»¯¶ÑÕ»Ö¸Õë¡¢ÉèÖÃÒ³±í¡¢²Ù×÷ ARMµÄд¦ÀíÆ÷µÈ¡£³õʼ»¯Íê³Éºó¾Í¿ÉÒÔÌø×ªµ½C´úÂëÖ´ÐС£ÐèҪעÒâµÄÊÇ£¬GNUµÄ»ã±àÆ÷×ñÑAT&TµÄ»ã±àÓï·¨£¬¿ÉÒÔ´ÓGNUµÄÕ¾µã £¨www.gnu.org£©ÉÏÏÂÔØÓйع淶¡£
Ò». Linux»ã±àÐнṹ
Èκλã±àÐж¼ÊÇÈçϽṹ£º
[:] [} @ comment
[:] [} @ ×¢ÊÍ
Linux ARM »ã±àÖУ¬ÈκÎÒÔðºÅ½áβµÄ±êʶ·û¶¼±»ÈÏΪÊÇÒ»¸ö±êºÅ£¬¶ø²»Ò»¶¨·ÇÒªÔÚÒ»ÐеĿªÊ¼¡£
¡¾Àý1¡¿¶¨ÒåÒ»¸ö"add"µÄº¯Êý£¬·µ»ØÁ½¸ö²ÎÊýµÄºÍ¡£
.section .text, “x”
.global add @ give the symbol add external linkage
add:
ADD r0, r0, r1 @ add input arguments
MOV pc, lr @ return from subroutine
@ end of program
¶þ. Linux »ã±à³ÌÐòÖеıêºÅ
±êºÅÖ»ÄÜÓÉa¡«z£¬A¡«Z£¬0¡«9£¬“.”£¬_µÈ×Ö·û×é³É¡£µ±±êºÅΪ0¡«9µÄÊý×ÖʱΪ¾Ö²¿±êºÅ£¬¾Ö²¿±êºÅ¿ÉÒÔÖØ¸´³öÏÖ,ʹÓ÷½·¨ÈçÏ£º
? ±êºÅf: ÔÚÒýÓõĵط½ÏòǰµÄ±êºÅ
? ±êºÅb: ÔÚÒýÓõĵط½ÏòºóµÄ±êºÅ
¡¾Àý2¡¿Ê¹Óþֲ¿·ûºÅµÄÀý×Ó£¬Ò»¶ÎÑ»·³ÌÐò
1:
subs r0,r0,#1 @ÿ´ÎÑ»·Ê¹r0=r0-1
bne 1f @Ìø×ªµ½1±êºÅÈ¥Ö´ÐÐ
¾Ö²¿±êºÅ´ú±íËüËùÔڵĵØÖ·,Òò´ËÒ²¿ÉÒÔµ±×÷±äÁ¿»òÕߺ¯ÊýÀ´Ê¹Óá£
Èý. Linux»ã±à³ÌÐòÖеķֶÎ
£¨1£©.sectionα²Ù×÷
Óû§¿ÉÒÔͨ¹ý.sectionα²Ù×÷À´×Ô¶¨ÒåÒ»¸ö¶Î,¸ñʽÈçÏÂ:
.section section_name [, "flags"[, %type[,flag_specific_arguments]]]
ÿһ¸ö¶ÎÒÔ¶ÎÃûΪ¿ªÊ¼, ÒÔÏÂÒ»¸ö¶ÎÃû»òÕßÎļþ½áβΪ½áÊø¡£ÕâЩ¶Î¶¼ÓÐȱʡµÄ±êÖ¾£¨flags£©,Á¬½ÓÆ÷¿ÉÒÔʶ±ðÕâЩ±êÖ¾¡£(ÓëarmasmÖеÄAREAÏàͬ)¡£
ÏÂÃæÊÇELF¸ñʽÔÊÐíµÄ¶Î±êÖ¾
º¬Òå
a ÔÊÐí¶Î
w ¿Éд¶Î
x Ö´ÐжÎ
¡¾Àý3¡¿¶¨Òå¶Î
.section .mysection @×Ô¶¨ÒåÊý¾Ý¶Î£¬¶ÎÃûΪ “.mysection”
.align 2
strtemp:
.ascii "Temp string \n\0"
£¨2£©»ã±àϵͳԤ¶¨ÒåµÄ¶ÎÃû
.text @´úÂë¶Î
.data @³õʼ»¯Êý¾Ý¶Î
.bss @δ³õʼ»¯Êý¾
Ïà¹ØÎĵµ£º
Spca5xx ÉãÏñÍ·Çý¶¯ÒÆÖ²£¨For Linux 2.6.14£©
Ò»£®ÏÂÔØ²¢½âѹSpca5xxÇý¶¯£¬±¾ÎÄʹÓÃÁËgspcav1-20070508°æ±¾¡£
¶þ£®°æ±¾ËµÃ÷£ºÖ®Ç°³¢ÊÔ¹ýspca5xx*µÄ¶à¸ö°æ±¾£¬ËäÈ»ÒÆÖ²Ã»ÓÐÎÊÌ⣬µ«ÊÇÔÚ½øÐÐv4lÓ¦ÓÃʱ£¬³öÏֺܶàĪÃûÆäÃîµÄ´íÎ󣬱ÈÈçISOC data errorµÈ£¬ºóÀ´»»³ÉÁË×îеÄgspca°æ±¾£¬ÎÊÌâÈ«²¿½â¾ö¡£
Èý£®ÍêÕû±àÒëÒÆÖ²ºÃµÄLi ......
¿â´Ó±¾ÖÊÉÏÀ´ËµÊÇÒ»ÖÖ¿ÉÖ´ÐдúÂëµÄ¶þ½øÖƸñʽ£¬¿ÉÒÔ±»ÔØÈëÄÚ´æÖÐÖ´ÐС£¿â·Ö¾²Ì¬¿âºÍ¶¯Ì¬¿âÁ½ÖÖ¡£
¾²Ì¬¿âºÍ¶¯Ì¬¿âµÄÇø±ð
1. ¾²Ì¬º¯Êý¿â
ÕâÀà¿âµÄÃû×ÖÒ»°ãÊÇlibxxx.a£»ÀûÓþ²Ì¬º¯Êý¿â±àÒë³ÉµÄÎļþ±È½Ï´ó£¬ÒòΪÕû¸ö º¯Êý¿âµÄËùÓÐÊý¾Ý¶¼»á±»ÕûºÏ½øÄ¿±ê´úÂëÖУ¬ËûµÄÓŵã¾ÍÏÔ¶øÒ×¼ûÁË£¬¼´±àÒëºóµÄÖ ......
ÎĵµÑ¡Ïî
½«´ËÒ³×÷Ϊµç×ÓÓʼþ·¢ËÍ
¼¶±ð£º ³õ¼¶
Ö£ÑåÐË (mlinux@163.com), ¹ú·À¿Æ´ó¹¥¶Á²©Ê¿Ñ§Î»
2003 Äê 5 ÔÂ 01 ÈÕ
¹²ÏíÄÚ´æ¿ÉÒÔ˵ÊÇ×îÓÐÓõĽø³Ì¼äͨÐÅ·½Ê½£¬Ò²ÊÇ×î¿ìµÄIPCÐÎʽ¡£Á½¸ö²»Í¬½ø³ÌA¡¢B¹²ÏíÄÚ´æµÄÒâ˼ÊÇ£¬Í¬Ò»¿éÎïÀíÄÚ´æ±»Ó³Éäµ½½ø³ÌA¡¢B¸÷×ԵĽø³ÌµØÖ·¿Õ¼ä¡£½ø³ÌA¿ÉÒÔ¼´Ê±¿´µ ......
ʲôʱºòÐèÒª´´½¨Ï̳߳ØÄØ£¿¼òµ¥µÄ˵£¬Èç¹ûÒ»¸öÓ¦ÓÃÐèҪƵ·±µÄ´´½¨ºÍÏú»ÙỊ̈߳¬¶øÈÎÎñÖ´ÐеÄʱ¼äÓַdz£¶Ì£¬ÕâÑùÏ̴߳´½¨ºÍÏú»ÙµÄ´øÀ´µÄ¿ªÏú¾Í²»ÈݺöÊÓ£¬ÕâʱҲÊÇÏ̳߳ظóö³¡µÄ»ú»áÁË¡£Èç¹ûÏ̴߳´½¨ºÍÏú»Ùʱ¼äÏà±ÈÈÎÎñÖ´ÐÐʱ¼ä¿ÉÒÔºöÂÔ²»¼Æ£¬ÔòûÓбØÒªÊ¹ÓÃÏ̳߳ØÁË¡£ÏÂÃæÊÇLinuxϵͳÏÂÓÃCÓïÑÔ´´½¨µÄÒ»¸öÏ̳߳ء£Ïß³Ì³Ø ......
µÚ1ÕÂ×Ö·û²âÊÔº¯Êýisalnum(²âÊÔ×Ö·ûÊÇ·ñΪӢÎÄ×Öĸ»òÊý×Ö)isalpha(²âÊÔ×Ö·ûÊÇ·ñΪӢÎÄ×Öĸ)isascii(²âÊÔ×Ö·ûÊÇ·ñΪASCIIÂë×Ö·û)isblank(²âÊÔ×Ö·ûÊÇ·ñΪ¿Õ¸ñ×Ö·û)iscntrl(²âÊÔ×Ö·ûÊÇ·ñΪASCIIÂëµÄ¿ØÖÆ×Ö·û)isdigit(²âÊÔ×Ö·ûÊÇ·ñΪ°¢À²®Êý×Ö)isgraph(²âÊÔ×Ö·ûÊÇ·ñΪ¿É´òÓ¡×Ö·û)islower(²âÊÔ×Ö·ûÊÇ·ñΪСдӢÎÄ×Öĸ)isprint(² ......