打印

堆和栈的对齐???

[复制链接]
2921|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
areshan|  楼主 | 2010-11-13 11:40 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
想问问堆和栈为什么都是8字节的对齐方式呢????8字节对齐是不是一次读出是64位的数呢?????为什么数据有对齐这一说呢????

相关帖子

沙发
xinzha| | 2010-11-13 22:07 | 只看该作者
这你需要去了解一下risc的设计理念。

使用特权

评论回复
板凳
areshan|  楼主 | 2010-11-15 09:17 | 只看该作者
有什么关系吗???这个我还真不知道!精简指令集和对齐方式应该没有关系吧,AVR也是精简指令集,怎么就没有说堆栈的对齐要求!!! 2# xinzha

使用特权

评论回复
地板
xinzha| | 2010-11-15 10:09 | 只看该作者
RISC的一个比较基本的理念就是指令长度可预期和指令周期可预期,每条指令的长度一样,自然而然就对齐了。arm并不是真正的risc,更通用的叫法是类risc,至于avr没用过。

使用特权

评论回复
5
areshan|  楼主 | 2010-11-15 13:47 | 只看该作者
51不是精简指令集,但是指令长度和指令的周期都是固定的。个人觉得你说的不对,RISC是用CISC的20%代码来实现大部分CISC的功能,这样在成本,在芯片设计会简化。我用过的单片机还从来没有听说过指令长度和指令周期是不可预计的!!!ROM或RAM都是8位作为一个BYTE,一般指令或数据都是BYTE的整数倍。因为ARM支持8,16,32bit类型的数据所以在ARM里有数据对其这一说。这和你的RISC或CISC结构是没有关系的。 4# xinzha

使用特权

评论回复
6
xinzha| | 2010-11-15 16:38 | 只看该作者
指令周期可预期不是靠人看的,而是要cpu自己就能预期,然后才有流水线这一说,51干脆就没有流水线,它也就没有必要来预期指令周期,而在risc中除了少数几个指令之外其他的都是等长,x86是做不到这一点的。
你试试给mips或者arm一个不对齐的堆栈,看它死不死。

使用特权

评论回复
7
xinzha| | 2010-11-15 17:32 | 只看该作者
另外arm并不是所有的都是要求8字节对齐,有些也是可以四字节对齐的,当你见到PRESERVE 8就肯定是强制堆栈8字节对齐

使用特权

评论回复
8
armmage| | 2010-11-16 18:56 | 只看该作者
xinzha兄在给他普及ARM体系结构知识哦,最好楼主再去读下ARM体系结构的书,有些事不是你觉得怎么好就是怎么。

使用特权

评论回复
9
armmage| | 2010-11-16 19:56 | 只看该作者
xinzha兄在给他普及ARM体系结构知识哦,最好楼主再去读下ARM体系结构的书,有些事不是你觉得怎么好就是怎么。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

127

主题

728

帖子

0

粉丝