社区
汇编语言
帖子详情
请教熟悉arm汇编的高手,关于ATPCS
影子LEON
2010-08-05 11:05:26
在看ATPCS的时候发现说子函数的数据栈必须是8字节对齐,这是为什么?
有人说如果在该子函数中不再调用其他子函数的时候不需要保证数据栈8字节对齐,这又是为什么?
...全文
97
3
打赏
收藏
请教熟悉arm汇编的高手,关于ATPCS
在看ATPCS的时候发现说子函数的数据栈必须是8字节对齐,这是为什么? 有人说如果在该子函数中不再调用其他子函数的时候不需要保证数据栈8字节对齐,这又是为什么?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
3 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
hicaru000000
2010-08-05
打赏
举报
回复
对齐的作用和原因:各个硬件平台对存储空间的处理上有很大的不同。一些平台对某些特定类型的数据只能从某些特定地址开始存取。其他平台可能没有这种情况,但是最常见的是如果不按照适合其平台要求对数据存放进行对齐,会在存取效率上带来损失。比如有些平台每次读都是从偶地址开始,如果一个int型(假设为32 位系统)如果存放在偶地址开始的地方,那么一个读周期就可以读出,而如果存放在奇地址开始的地方,就可能会需要2个读周期,并对两次读出的结果的高低字节进行拼凑才能得到该int数据。显然在读取效率上下降很多。这也是空间和时间的博弈。
dongjiutiao
2010-08-05
打赏
举报
回复
对其是为了提高效率,不对其效率低。应该是这样
goodider
2010-08-05
打赏
举报
回复
效率问题。很多事需要平衡才能达到最佳。
ARM
中断向量表的简单分析
一般编写
arm
的裸机程序的时候,创建中断向量表就把它放在0x00000000~0x0000001c中,一般都放在这个位置上。但是中断向量表也可以放在0xffff0000~0xffff001c中,知道这是怎么设置的么?开始看到的时候真的有点奇怪,...
ARM
Linux 中断向量表建立流程
一般编写
arm
的裸机程序的时候,创建中断向量表就把它放在0x00000000~0x0000001c中,一般都放在这个位置上。但是中断向量表也可以放在0xffff0000~0xffff001c中,知道这是怎么设置的么?开始看到的时候真的有点奇怪,...
ARM
经典300问
-- 作者:白开水 -- 发布时间:2007-07-13 14:02:53 --
ARM
经典300问 第1章 体系结构 第1问: Q:请问在初始化CPU堆栈的时候一开始在执行mov r0, LR这句指令时处理器是什么模式 ...
经典
ARM
300问
第1 章 体系结构 ...Q:
请教
:MOV 中的8 位图立即数,是怎么一回事 0xF0000001 是怎么来的 A:是循环右移,就是一个0—255 之间的数左移或右移偶数位的来的,也就是这个数除以4 一直除, 直到在0-255 的范围内它是
ARM
Linux外部中断处理过程
ARM
Linux外部中断处理过程http://www.linuxforum.net/forum/showflat.php?Cat=&Board=linuxK&Number=652682&page=12&view=collapsed&sb=7&o=all&fpart=1&vc=1作者:muxiaowei 整理:Nathan.Yu 最近在学习
arm
linux...
汇编语言
21,459
社区成员
41,601
社区内容
发帖
与我相关
我的任务
汇编语言
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
复制链接
扫一扫
分享
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章