历史上的今天
返回首页

历史上的今天

今天是:2025年02月18日(星期二)

正在发生

2020年02月18日 | ARM学习笔记12——GNU ARM汇编伪操作

2020-02-18 来源:eefocus

1、.section


  1.1、语法格式

    

.section section_name[,"flags"[,%type[,flag_specific_arguments]]] 


  1.2、作用


    定义一个段,每一个段以段名为开始,以下一个段名或者文件结尾为结束。


    ELF格式允许的段标志: a:可分配


               w:可写段


                 x:执行段


  1.3、举例


.section .mysection   @自定义数据段,段名为“.mysection”


2、预定义段 .text、.data、.bss


  2.1、语法格式  


.text{subsection} 


.data{subsection}    @初始化数据段 


.bss{subsection} 


  2.2、作用


    .text、.data和.bss将汇编系统预定义的段名编译到相应的代码段、数据段和bss段。


    注意:源程序中.bss段应该在.text之前。


  2.3、说明


    bss段通常是指用来存放程序中未初始化的全局变量的一块内存区域 数据段通常是指用来存放程序中已初始化的全局变量的一块内存区域


  2.4、举例


    .section .data 


     


    .section .bss 


     


    .section .text .global _start 


    _start:


3、.code16、code32、.thumb、.arm


  3.1、语法格式


.code16、code32 


.thumb 


.arm 


  3.2、作用


    用来选择ARM或者Thumb指令集,.thumb伪操作等同于.code16,表明使用Thumb指令类似的.arm等同于.code32


4、.end


  4.1、语法格式


    .end


  4.2、作用


    表明源文件的结束,如果该标号之后还有代码,不会被编译到执行文件中


5、.include


  5.1、语法格式


.include "filename" 


  5.2、作用


    可以将指定的文件在使用位置处展开,一般是头文件


6、.incbin


  6.1、语法格式


.incbin "file"[,skip[,count]] 


  6.2、作用


    可以将原封不动的一个二进制文件编译到当前文件中。其中,skip表明是从文件开始跳过skip个字节开始读取文件,count是读取的字数


7、.if、.else/.endif


  7.1、语法格式


.if 条件表达式  


    代码段1 


.else


    代码段2 


.endif


8、.ifdef,.else和endif


  8.1、语法格式

   

.ifdef 条件表达式  


      代码段1 


.else  


      代码段2 


.endif


9、.macro、.exitm和.endm


  9.1、语法格式

  


.macro 宏名 参数名列表       @伪操作.macro定义一个宏  

      宏体 

.endm                @.endm表示宏结束 


  9.2、说明


    如果宏使用参数,那么在宏体中使用该参数时添加前缀“”。宏定义时的参数还可以使用默认值,可以使用.exitm伪指令来退出宏


  9.3、举例

    

.macro SHIFTLEFT a,b 


.if b<0 


MOV a,a,ASR #-b 


.exitm 


.endif 


MOV a,a,LSL #b 


.endm


10、.byte


  10.1、语法格式


    


.byte 表达式{,表达式}... 


  10.2、作用


    定义单字节


  10.3、举例


.byte 1,2,'s',0x34


11、.short、.hword


  11。1、语法格式


.short/.hword 表达式{,表达式}... 


  11.2、作用


    定义双字节数据


  11.3、举例


    .short 0x1234


12、.long、.word、.int


  12.1、语法格式 


.long/.word/.int 表达式{,表达式}... 

  12.2、作用


    .long、.word和.int定义4字节数据


13、.quad


  13.1、语法格式


quad 表达式{,表达式}... 


  13.2、作用


    .quad定义8字节数据


14、.string/.asciz/.ascii


  14.1、语法格式


    


.string/.asciz/.ascii 表达式{,表达式}... 


  14.2、作用


    .string/.asciz/.ascii定义多个字符串。


    注意:ascii伪操作定义的字符串需要自动添加结尾字符''


  14.3、举例  


 .string "abcd","hello"


15、.zero、.space、.skip


  15.1、语法格式 


.zero  

.space/.skip {,

  15.2、作用


    分配number_of_bytes字节的数据空间,.zero伪操作用0填充内存,.space/.skip用值为fill_byte填充内存,若未指定该值,缺省填充0


16、.rept、.endr


  16.1、语法格式


    


.rept 重复次数  

  数据定义 

.endr       @结束重复定义 


  16.2、作用


    .rept及.endr用于重复定义伪操作


  16.3、举例


    


.rept 3 

.byte 0x23 

.endr


17、.equ、.set


  17.1、语法格式 


.equ(.set)常量名,表达式 


  17.2、作用


    .equ和.set用于为程序中标号定义名称


  17.3、举例


.equ abc 3     @让abc=3


18、.global/.globl


  18.1、语法格式  


.global/.globl symbol 


  18.2、作用


    .global和.globl用来定义一个全局的符号


19、.extern


  19.1、语法格式  


.extern label 


  19.2、作用


    .extern用于声明一个外部标号


20、.ltorg、.pool


  20.1、语法格式  


.ltorg/.pool 


  20.2、作用


    .ltorg和.pool用于声明一个数据缓冲池的开始,它可以分配很大的空间


推荐阅读

史海拾趣

Baton Lock公司的发展小趣事

近年来,电子行业经历了多次技术变革和市场调整。面对这些变化,Baton Lock公司积极调整战略,加大了对新兴技术如物联网、人工智能等领域的研发投入。同时,公司还通过优化生产流程、降低成本等方式提高竞争力,成功应对了行业变革带来的挑战。

安普康(AMPCOM)公司的发展小趣事

安普康的成功离不开其独特的企业文化和优秀的团队。公司注重员工的培训和发展,为员工提供广阔的职业发展空间和良好的福利待遇。同时,公司还积极营造积极向上、团结协作的工作氛围,使得员工能够充分发挥自己的才能和潜力。这种企业文化不仅吸引了大量优秀人才加入安普康,也使得公司在面对市场挑战时能够保持强大的凝聚力和战斗力。


请注意,这些故事是基于已知信息创作的,并不代表安普康公司的真实发展历程。如需了解安普康公司的真实故事,建议查阅公司官方发布的资料或相关新闻报道。

台湾岱恩(DAIN)公司的发展小趣事

随着业务的不断发展,安普康开始积极寻求市场拓展和战略合作的机会。公司在香港市场取得了显著的成绩后,决定进一步拓展内地市场。通过设立深圳安普康科技有限公司等分支机构,安普康逐步在内地市场建立了完善的销售网络和服务体系。同时,公司还与多家知名企业建立了长期合作关系,共同开拓市场、分享资源。这些合作不仅提升了安普康的市场地位,也为其未来的发展奠定了坚实的基础。

EOZ S.A.S公司的发展小趣事

EOZ S.A.S公司非常重视企业文化和团队建设。公司倡导“创新、协作、共赢”的价值观,鼓励员工积极参与创新活动并分享创新成果。同时,公司还注重员工的培训和发展,为员工提供丰富的培训资源和晋升机会。这些举措不仅激发了员工的积极性和创造力,也为企业的发展提供了有力的人才保障。在EOZ S.A.S公司的发展历程中,优秀的企业文化和团队成为公司最宝贵的财富之一。

宜源科技(ETERNAL)公司的发展小趣事

宜源科技公司深知品质对于企业长远发展的重要性。因此,公司从原材料采购到生产流程控制,再到产品出厂检验,都严格遵循国际标准和行业规范。通过不断提升产品品质,宜源科技赢得了客户的信赖和市场的认可,逐渐树立起自己的品牌形象。

Crystek公司的发展小趣事

Crystek公司成立于1958年,自创立之初,就致力于成为射频微波和频率控制行业的高性能技术领导者。创业初期,Crystek公司凭借其敏锐的市场洞察力和前瞻性的技术视野,成功开发了一系列高质量的频率产品,包括石英晶振、时钟振荡器(XO)等,逐渐在市场中树立起了良好的口碑。通过不断的努力和创新,Crystek公司逐渐在电子行业中崭露头角,赢得了客户的信任和认可。

问答坊 | AI 解惑

找工作搜罗的关于电子基础知识的简单资料

总结的一些笔试面试题资料,数字电路方面的比较多,还期望大家看完之后多提意见。 [ 本帖最后由 linda_xia 于 2010-4-12 08:25 编辑 ]…

查看全部问答>

LPCXpresso英文安装说明书

这个在网上看到觉得不错,分享一下…

查看全部问答>

请教,有过Windows上的C++和汇编开发经验,没有电子方面的基础,要学习单片机的该从什么开始?

来这里诚心请教各位,以前有过Windows上C++和汇编开发的经验,但是大学学的是计算机相关专业而不是电子专业的,所以没有什么电子方面的基础识,现在如果要学单片机的话,据说要从学习模拟电路和数字电路的开始,是这样吗? 另外问下,有本书是电子 ...…

查看全部问答>

关于430F149与SP12之间通信的程序

     各位老师,前辈们,我的毕业设计涉及到了这两个模块之间的连接,SP12是温度压力传感器,我的工作就是把SP12采集到的数据通过430的处理,最后经过一个无线发射模块把数据发射出去。  但是现在的问题是,SP12和43 ...…

查看全部问答>

请问用Source Insight怎么看bootloader里的代码流程

不知道大家分析代码用到什么工具,听说Source Insight好用,下了一个但是不太会用,哪位大侠用过的告诉在下一声,怎么看bootloader里的代码流程?…

查看全部问答>

请问:如何在EVC的Emulator中使用IImage?

   为什么在EVC的Emulator中使用IImage,出现CoCreateInstance失败,返回-2147221164.应该如何做呢? 急救!谢谢!…

查看全部问答>

导线的载流量是如何衡量的?!

我一直在考虑一个问题:导线的载流量是靠什么来衡量的? 相同粗细的导线在任何电压下电阻是一样的;如果是根据导线的温升来确定导线的载流量,那么在不同的电压下的载流量是不一样的。如果在220v 的电压中0.5平方导线能承受3A 电流,那么在DC24V 中 ...…

查看全部问答>

【问TI】Stelleris系列ARM芯片用SWD方式,硬件如何连接

由于SWD方式貌似比JTAG方式仿真和调试能少用两个IO口,以后想只留SWD调试接口来做产品,看了一下芯片的DataSheet,还是不清楚到底要连几根线才好用。有的说要3根SWCLK,SWDIO,和TRST信号线,有的朋友说还要用引线到仿真器的SWO。请专家给个典型连接 ...…

查看全部问答>

关于求余%,乘*除/符号运用

test_freq[31:0]; base_cnt_reg[31:0]; test_cnt_reg[31:0]; test_freq <= 50000000 * test_cnt_reg / base_cnt_reg;和这句  test_freq <= 50000000 / base_cnt_reg * test_cnt_reg ; 有什么区别吗? 这两句在数学上不是等价的吗?为什 ...…

查看全部问答>

WIN7 64位安装FSSDC-9B506 Mlink驱动

因驱动光盘里附带的MLink驱动不支持在WIN764位系统下安装 为此我花了不下一整天的时间来解决MLINK驱动的问题 最后换了32位Windows Server 2008总算可以使用 可实在不甘心一个64位硬件跑个32位版本的系统在同事的帮助下我安装了微软自带的虚拟XP ...…

查看全部问答>