【ARM扩展资料】数据表示

文章目录

  • 【ARM扩展资料】数据表示
    • 一、常量表达
      • 1.常数
      • 2.字符和字符串
      • 3.符号常量
      • 4.数值表达式
    • 二、指示符
      • 1.区段定义指示符
      • 2.标号属性指示符
      • 3.数据定义指示符
      • 4.地址对齐指示符

一、常量表达

1.常数

  • 十进制:由0~9数字组成,以非0数字开头

  • 十六进制:由0~9数字、A~F(a~f)字母组成,以0X(x)开头

  • 二进制:由0、1两个数字组成,以0B(b)开头

  • 八进制:由0~7数字组成,以数字0开头

ARM指令中的数值操作数称为立即数,ARM汇编语言通常在常数前使用井字符“#”表达。但是,A64汇编语言并没有要求立即数前必须有“#”字符,所以,加或者不加“#”字符均可。

2.字符和字符串

单个字符可以使用单引号,字符串使用双引号。可以使用转义符“\”,例如:\b、\t、\n、\r,依次表示退格符、制表符、换行符、回车符,对应的ASCII值依次是0x08、0x09、0x0A、0x0D。

3.符号常量

使用“.EQU”(或“.SET”)指示符把一个数值用符号表达:

.EQU  标识符, 数值表达式

也可以使用等号“=”指示符定义符号常量:

标识符 = 数值表达式

4.数值表达式

数值表达式是使用运算符连接各种常量所构成的算式。

小数点“.”代表当前地址,可用于计算字符串长度:

msg: .string  "Hello, ARMv8!\n"    // 定义字符串(以0结尾)len =.-msg // 符号常量len定义为字符串长度

二、指示符

1.区段定义指示符

区段(Section)也称为段(Segment)。GNU ARM汇编程序常用3种区段指示符:

.TEXT    // 定义一个只读的代码区段
.DATA    // 定义一个可读可写的数据区段,全局变量在此区段保存
.BSS // 定义一个可读可写、但未初始化的数据区段

程序员还可以使用区段指示符“.SECTION”自定义区段。

2.标号属性指示符

标号在定义时具有地址和类型属性,有时还需要声明具有一些特殊属性:

.GLOBAL 标号   // 将函数名或变量名声明为全局标号,使其允许外部模块调用
.EXTERN 标号   // 声明函数名或变量名来自外部模块,需要在本模块中使用

类型声明“.TPYE”指示符用于强调标识符的对象或函数属性:

.TYPE 标识符, @OBJECT  // 类型声明:该标识符是一个数据对象
.TYPE 标识符, @FUNCTION    // 类型声明:该标识符是一个函数名

3.数据定义指示符

数据定义指示符为变量申请固定长度的存储空间,一般格式:

变量名: 数据定义指示符 数值表达式1, 数值表达式2, …

数据定义指示符(AArch64):

指示符 数据类型 变量定义功能
.BYTE 8位、1个字节 字节单元,每个数据是8位、字节量
.HWORD(.SHORT) 16位、2个字节 半字单元,每个数据是16位、半字量
.WORD(.INT) 32位、4个字节 字单元,每个数据是32位、字量
.XWORD(.DWORD、.LONG、.QUAD) 64位、8个字节 双字单元,每个数据是64位、双字量
.OCTA 128位、16个字节 4字单元,每个数据是128位、4字量
.ASCII 字符串 字节单元,每个数据是8位字符
.STRING(.ASCIZ) 字符串 字节单元,每个数据是8位字符,结尾添加0

指示符“.SPACE”分配一个连续的存储空间,每个存储单元具有相同的初值:

变量名: .SPACE 存储单元数, 数值表达式

数值表达式可以省略,表示变量值默认为0。

4.地址对齐指示符

.ALIGN 数值表达式

数值表达式(例如为n)表示对齐地址的二进制低n位为0,也就是2幂次方(即2^n)字节边界。例如,数值表达式为1、2、3、4依次表示地址对齐于2、4、8、16字节边界。使用0或者NOP指令填充无用的存储单元。

在Linux平台,大多数AArch64存储器访问没有要求必须对齐边界地址,但对齐了地址边界,处理器硬件执行的速度更快、性能更高。

【汇编语言】【ARM扩展资料】数据表示相关推荐

  1. 【汇编语言】【ARM扩展资料】汇编语言开发

    [ARM扩展资料]汇编语言开发 文章目录 [ARM扩展资料]汇编语言开发 一.指令格式 1.典型的A64指令格式 2.加减法的简单指令示例: 二.语句格式 1.汇编语言语句的通用格式: 三.显示程序 ...

  2. 【汇编语言】【ARM扩展资料】数据寻址

    [ARM扩展资料]数据寻址 文章目录 [ARM扩展资料]数据寻址 一.寄存器寻址 1. 寄存器移位寻址 2. 寄存器扩展寻址 二.存储器寻址 1. 寄存器间接寻址 2. 带立即数偏移量的寄存器间接寻址 ...

  3. 【汇编语言】【ARM扩展资料】硬件组成

    [ARM扩展资料]硬件组成 文章目录 [ARM扩展资料]硬件组成 一.ARM处理器 1. ARM体系结构 2. Cortex系列处理器 3. ARMv8-A处理器 二.结构基础 1. 异常 2. 执行 ...

  4. 30本pdf完整版的经典Linux学习和开发教程和资料下载 android arm java 资料大全

    史上最牛的Linux内核学习方法论   点击下载 我的arm_linux移植笔记   点击下载 S3C2440完全开发流程   点击下载 Linux系统命令及其使用详解完整版   点击下载 Linux ...

  5. 30本pdf完整版的经典Linux学习和开发教程和资料下载 android arm java 资料大全...

    史上最牛的Linux内核学习方法论 点击下载 我的arm_linux移植笔记 点击下载 S3C2440完全开发流程 点击下载 Linux系统命令及其使用详解完整版 点击下载 Linux主要shell命 ...

  6. 汇编语言--ARM汇编

    ARM汇编指令总结 目的 总结目的是为了看懂ARM返汇编程序含义.如果是抱着来看这篇blog的盆友,希望可以帮到你们:如果有错误,请多指出.谢谢! # ARM指令的一般格式 arm指令字长为固定的32 ...

  7. 汇编语言符号扩展指令及应用示例

    1. 什么是符号扩展?为什么要用符号扩展? 所谓符号扩展,就是将数据的表示大小加倍,数值仍保持不变,即将符号位扩展到同样大小的寄存器空间中去,由两部分构成一个比原值表示大一倍的数.正数必须要0扩展,负 ...

  8. Windows环境下32位汇编语言程序设计 相关资料

    Windows环境下32位汇编语言程序设计.pdf:https://474b.com/file/15153148-465076702 <Windows环境下32位汇编语言程序设计>随书光盘 ...

  9. ARM扩展嵌入式与物联网产品阵容,推全新Cortex-A32处理器

    ZD至顶网服务器频道 02月24日 新闻消息:ARM针对下一代嵌入式产品推出ARM Cortex-A32,为超高能效应用处理器系列再添新成员.Cortex-A32处理器采用ARMv8-A架构,赋予功耗 ...

最新文章

  1. Unsupported major.minor version (jdk版本错误)解决方案
  2. [coursera machine learning] Week 1
  3. CentOS linux7 设置开机启动服务
  4. 【记录】一些平时留意过的
  5. Dapr牵手.NET学习笔记:用docker-compose部署服务
  6. 网站压力测试工具webbench 安装与使用
  7. 容器入门(8) - 镜像签名
  8. 大数据之-Hadoop完全分布式_rsync案例_差量分发_只把有差异文件进行更新同步到其他服务器---大数据之hadoop工作笔记0032
  9. TCL多媒体2010年净盈余9.83亿港币
  10. 普元BPS:唯一零错误的流程平台
  11. 快速在指定文件夹打开命令行
  12. OMRON欧姆龙Sysmac Studio软件--ESI文件的安装
  13. 读取SAE J1939协议数据流
  14. 【Java】java离线安装包
  15. Ubuntu使用总结二
  16. html 苹果微信录音js,基于JS开发微信网页录音功能的实例代码
  17. 腾讯 X5 不能加载内核
  18. JVM - 垃圾回收相关算法
  19. html手机号输入框,手机号输入框自动格式化为344
  20. Android手势操作

热门文章

  1. 简单叙述tcp/ip的工作原理和主要的协议_802.11协议精读3:CSMA/CD与CSMA/CA
  2. 权限丢失_应用好深圳RFID智能档案密集架,杜绝档案丢失!
  3. list 查找_趣味图解算法之二分查找
  4. linux 内存性能评估,内存性能评估工具vmstat/free/smem使用与解读
  5. win10 linux子系统开启桌面显示
  6. 苹果怎么删除通讯录联系人_苹果手机通讯录怎么恢复?这才是正确的打开方式!...
  7. w10 Sentinel的下载和安装
  8. mysql 不认的字符串_mysql 判断字符串是否为其他字符串的子集
  9. 建模步骤_UG1847建模机械零件,零基础可读详细图文步骤
  10. redis 设置不过期_面试时 Redis 内存淘汰总被问,但是总答不好,怎么解决?