ldr伪指令的用法(arm ldr伪指令)

ldr伪指令的用法(arm ldr伪指令)伪指令的本质 是多条指令集合而成的一段代码 写代码的时候难免用会经常用到一些固定的功能 比如 if else 之类的 如果单纯的使用汇编指令 每次都要先比较然后再根据 CPSR 的内容进行 BL 这样就很繁复 所以伪指令应运而生 它从形式上来看像是宏定义 从功能上而言 是帮助我们简化某些固定操作的指令 GNU 有一套伪指令 MDK 也有一套伪指令 这两台套伪指令相似 实际上最常用的是 GNU 风格伪指令

大家好,我是讯享网,很高兴认识大家。



伪指令的本质,是多条指令集合而成的一段代码;

写代码的时候难免用会经常用到一些固定的功能,比如if else之类的;如果单纯的使用汇编指令,每次都要先比较然后再根据CPSR的内容进行BL;这样就很繁复;

所以伪指令应运而生,它从形式上来看像是宏定义;从功能上而言,是帮助我们简化某些固定操作的指令;

GNU有一套伪指令,MDK也有一套伪指令;这两台套伪指令相似,实际上最常用的是GNU风格伪指令,MDK风格的伪指令大致看看就行;(注意,GNU风格的编译器不能编译MDK风格的代码,反之亦然)

注意:伪指令要遵循所谓的ADS Style;

ADS风格:顶行写 或者使用tab缩进

什么时候顶行?诸如EQU,SET这类 使用时第一个字段不是伪指令,一定要顶行写

AREA

CODE32/CODE16

ENTRY

表示程序的入口点;就好像C语言中的main函数

END

表示结尾

EQU

EXPORT与IMPORT与EXTERN

EXPORT:将标号声明为全局标号,本质上和.global功能一样

IMPORT:是静态引用,告知编译器,会用到其他源文件中的定义;通过这个指令可以实现混合编程(例如可以引入C语言的函数);同时静态引用代表着只要使用IMPORT声明引入,无论后续是否调用,被引入的定义均会被加入符号表中;

EXTERN:是动态引用,如果声名了EXTERN但是后续没有引用,那么编译器就不会把引入的标签加入符号表;

GET

相当于include

RN

为寄存器定义别名

name RN Rn; 将寄存器Rn取名为name /同时要注意,类似于EQU,这个命令也应当顶头写/

——-分割线——-

为了让汇编用起来更加方便,汇编也提供了类似于高级语言的定义,条件分支等伪指令

定义变量,赋值

汇编中使用伪指令可以定义:数字变量,逻辑变量,字符串变量;

也可以使用伪指令对变量进行赋值

那么,局部和全局,他们的生效范围具体是什么?这两类变量存在哪里?

全局:全局变量的默认范围是整个.S文件,不过可以用EXPORT(或者.global)将其扩展到整个项目

局部:局部变量的生效范围是在一个宏定义内;


讯享网

无论是局部变量还是全局变量,他们都是存在内存中的,并不是存在寄存器里;

全局变量存在数据段中;局部变量存在代码段中;(这一点和C语言是一样的)

为寄存器列表定义别名RLIST

\(符号</strong></p><p data-v-2505e99a data-v-5b474d2a><span style="font-size:17px;" data-v-2505e99a>\)符号 的用法类似于 SHELL中的$符号 用法

运算符伪指令

+ ;加法 -  ;减法 *  ;乘法 /  ;触发 =  ;等于 &gt;  ;大于 &lt;  ;小于 &gt;=  ;大于等于 &lt;=  ;小于等于 /=  ;不等于 &lt;&gt; ;不等于 ROL ;循环左移 ROR ;循环右移 SHL ;左移 SHR ;右移 AND ;按位与 OR ;按位或 NOT ;按位非 EOR ;按位异或 LAND ;逻辑与 LOR  ;逻辑或 LNOT ;逻辑非 LEOR ;逻辑异或

寄存器伪指令

LDR:load date to register

ADR:

ADRL:

ADRL ;中范围寻址到寄存器

DCB:data control bytes

DCB可以用&#34;=&#34;替代

DCW:data control half word注意:以半字为单位

DCD:以字为单位

SPACE

MAP与FIELD

这两个指令可以用于定义结构体

MAP用于定义一张结构化内存表的首地址(MAP可以用 &#34;^&#34; 替代)

FIELD用于定义结构化的内存表的数据域(FIELD可以用 &#34;#&#34; 替代)

控制语句IF ELSE

循环语句WHILE WEND

下一张看看GNU风格的语法

小讯
上一篇 2025-05-04 15:22
下一篇 2025-06-16 19:53

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/155200.html