Group: cn.comp.programm · Group Profile
Author: buzzardbuzzard Date: Feb 28, 2008 22:28
On Fri, 29 Feb 2008 02:05:48 +0800, 风中纸页 126.com> wrote:
>
>Last time, Fat WANG Cong gmail.com> says:
>
>
>>On Wed, 27 Feb 2008 21:58:05 +0800,snnn wrote:
>>
>>> NewBlue 写道:
>>>> 32位计算机,C/C++里面 int long ulong int*(包括其他指针) 都是四字节。
>>>>
>>>> short是二字节。这二字节会不会因为对齐而实际上使用四字节呢?
>>>>
>>>>
>>> 具体情况具体而定。
>>> struct中,会因为对齐而增加空间的使用。而相同类型的变量组成的数组不会。 局部变量在栈上的
>>分布一般也会对齐。
>>
>>数组元素之间不会有“空洞”。;-)
>>
>>你提到的入栈的东西一般也会对齐,没错,因为对齐可以提高存却效率。而且对于risc
>>机器,访问未对齐的地址是非法的。
>
>对于ARM这种东东,一直要求必须要对齐地址,我也一直小心翼翼的使用。
>但我一直想弄明白到底未对齐到底会出现什么错误。是否可以举一个例子来明白的讲一下。:)
呵呵好像说是会有不可预测的错误,不过用C去写,一般编译器都给你解决掉了,产生了一堆晦涩的汇编而已。
自己可以拿汇编去恶搞一下看看。
至于为什么要对齐,这个和处理器的设计有关系。呵呵因为基本上arm的指令opcode是等长32位。地址对齐,对于处理器
设计要简单一些。如果要知道详细细节,哈哈回去翻书去,我是在那个《计算机体系结构:软硬件接口》看的
|