在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
芯片精品文章合集(500篇!) 创芯人才网--重磅上线啦!
查看: 1369|回复: 0

[资料] 其他伪操作之一

[复制链接]
发表于 2016-1-28 15:47:29 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x

(1)
CODE16CODE32

CODE16伪操作告诉汇编编译器后面的指令序列为16位的Thumb指令;CODE32伪操作告诉汇编编译器后面的指令序列为32位的ARM指令

语法格式

CODE16

CODE32

使用说明

当汇编源程序中同时包含ARM指令个Thumb指令时,使用CODE16伪操作告诉汇编编译器后面的指令序列为16位的Thumb指令;使用CODE32伪操作告诉汇编编译器后面的指令序列为32位的ARM指令。但是,CODE16伪操作和CODE32伪操作只是告诉编译器后面指令的类型,该伪操作本身并不进行程序状态的切换。

示例32   CODE16CODE32伪操作举例。

在下面的例子中,程序先在ARM状态下执行,然后通过BX指令切换到Thumb状态,并跳转到相应的Thumb指令处执行。在Thumb程序入口处,用CODE16为操作表示下面的指令为Thumb指令。

AREA     ChangeStateCODEREADONLY

CODE32                                           ;指示下面的指令为ARM指令

LDR              R0=start+1

BX                R0                               ;切换到Thumb状态,并跳转到start处执行

CODE16                                           ;指示下面的指令为Thumb指令

start MOV      R1#10

(2)
EQU

EQU伪操作为数字常量、基于寄存器的值和程序中的标号(基于PC的值)定义一个字符名称。

语法格式

name EQU expr{type}

其中:expr为基于寄存器的地址值、程序中的标号、32位的地址常量或32位的常量;nameEQU伪操作为expr顶一顶 字符名称;当expr32位常量时,可使用type指示expr表示的数据类型。type有下面3种取值:

CODE16        表明该地址为Thumb指令

CODE32        表明该地址为ARM指令

DATA            表明该地址为数据区。

使用说明

EQU伪操作的作用类似于C语言中的#define,用于为一个常量定义字符名称。EQU可用“*”代替。

示例33   EQU伪操作举例。

X            EQU       10                         ;定义X符号的值为10

Y            EQU       label+100              ;定义Y符号的值(label+100

Z            EQU       0x10CODE32     ;定义Z符号值为绝对地址值0x100,而且该处为


ARM指令

reg          EQU       0xE01FFC080              ;定义寄存器reg,地址为0xE01FFC080

这里的寄存器是除ARM中的寄存器以外的寄存器,例如外设中的寄存器,因为I/O与存储器是同一编址的。

凌阳教育,专注嵌入式人才培养多年,完善的培养方案,强大的师资,合理的课程安排,成功从小白蜕变为嵌入式工程师。想了解凌阳教育,或者获得更多嵌入式学习资料的免费下载,请点击www.sunplusedu.com访问凌阳教育官网

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /1 下一条


小黑屋| 手机版| 关于我们| 联系我们| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2025-1-10 20:41 , Processed in 0.015216 second(s), 7 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表