浅谈ARM 汇编里的 literal pools(文字池)
来源:互联网 发布:你好万维网 知乎 编辑:程序博客网 时间:2024/05/16 14:04
1)ARM汇编中 literal pool (文字池)本质是什么
中文说明:
literal pool的本质就是ARM汇编语言代码节中的一块用来存放常量数据而非可执行代码的内存块。
英文说明:
Literal pools are areas of constant data in a code section。
(出自ARM官方文档《ARM Compiler armcc User Guide》)
2) 使用literal pool (文字池)的原因
当想要在一条指令中使用一个 4字节长度的常量数据(这个数据可以是内存地址,也可以是数字常量)
的时候,由于ARM指 令集是定长的(ARM指令4字节或Thumb指令2字节),所以就无法把这个4字节
的常量数据编码在一条编译后的指令中。此时,ARM编译器(编译C源程序)/汇编器(编译汇编程序)
就会在代码节中分配一块内存,并把这个4字节的数据常量保存于此,之后,再使用一条指令把这个4
字节的数字常量加载到寄存器中参与运算。
在C源代码中,文字池的分配是由编译器在编译时自行安排的,在进行汇编程序设计时,开发者可以自
己进行文字池的分配,如果开发者没有进行文字池的安排,那么汇编器就会代劳。
3)实际例子:
图1是在编译一个C函数时,编译器自动进行文字池分配的具体例子。
图1
4)文字池的替代方案
文字池不是必须的,图2就是使用MOVW和MOVT取代文字池的使用的具体示例。
图2
5)文字池的使用原则
在大多数时候,使用文字池可以提高程序性能,不过在特定情况下,使用不使用文字池(亦即使用文字池
的替代方案)才是最理想的。
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
网络安全图书馆 为您提供免费学习网络安全技术的平台
- 浅谈ARM 汇编里的 literal pools(文字池)
- Literal pools(文字池)(ARM 汇编)
- arm汇编中的literal pools .
- 初识文字池(literal pools)
- 浅谈ARM 汇编中的标号(Labels)
- 谈谈C99的新特征:复合文字(compound literal)和伸缩型数组
- ARM(CM3)的汇编指令
- ARM(CM3)的汇编指令
- (二)ARM的汇编指令
- ARM汇编的几个问题
- ARM汇编的几个问题
- ARM汇编的必知必会
- ARM 汇编的必知必会
- ARM的汇编学习
- arm 体系的汇编
- ARM的汇编指令
- ARM汇编(一)
- TYPE POOLS 的用法...
- Lucene.Net 介绍
- Android Java中的static与final关键字的作用
- Best Time to Buy and Sell Stock III
- 自己的
- win2003安装IIS后的网站设置
- 浅谈ARM 汇编里的 literal pools(文字池)
- 从“假如有以下几种价格10,20,50,请你代码实现将他们排序输出”看设计模式中的策略模式
- 如果磁盘空间使用率大于60%就执行某个网页
- js中的函数参数个数问题(重载问题)
- 解决ViewPager双层嵌套的滑动问题
- cocos2dx 3.0 mac环境安装
- C语言读写BMP文件
- cocos2d-x中锚点设置及定位方式
- yii 日历分秒显示