凌阳教育的个人空间 https://blog.eetop.cn/204849 [收藏] [复制] [分享] [RSS]

空间首页 动态 记录 日志 相册 主题 分享 留言板 个人资料

日志

其他伪操作之一

已有 472 次阅读| 2016-1-28 15:33

(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访问凌阳教育官网


点赞

评论 (0 个评论)

facelist

您需要登录后才可以评论 登录 | 注册

  • 关注TA
  • 加好友
  • 联系TA
  • 0

    周排名
  • 0

    月排名
  • 0

    总排名
  • 0

    关注
  • 1

    粉丝
  • 0

    好友
  • 1

    获赞
  • 3

    评论
  • 3815

    访问数
关闭

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

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

GMT+8, 2024-4-27 11:57 , Processed in 0.014289 second(s), 6 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
返回顶部