众所周知,许多 CPU 架构(ARM、PPC)不能读取奇数地址,但如果强制也会产生异常,还有一些可以,但速度稍慢。(x86)
但是是否有任何 CPU 只能处理完整的 32 位(甚至更大!)字?即它不能寻址 16 位字?也许是amd64?
我正在尝试编写一个可移植但快速的 C malloc 类分配器,并希望正确对齐我的内存访问。目前我的目标是 ARM、i386 和 amd64,我可以查找这些特性,但我认为保持警惕会很好。
我想提出我的问题的具体方法是;
是否有 CPU 从地址 0x2 读取 16 位(假设为了论证,通常 0 附近的地址范围是有效的,我知道有些 CPU 不使用第一页)会产生总线错误,其中 CPU =任何 MIPS、ARM、x86、amd64、68k、88000、SH、OpenRISC、Sparc、PPC、Cell/SPE?
(顺便说一下,我是从 C 程序员的角度来看这整件事。所以我假设 C 编译器给了我所有正常的 C 类型,比如 char、uint32_t 等)