对于x86平台来说,最重要的两个特性:
1. 兼容性是天;
2. 指令不对齐;
在x86平台,指令不兼容的东西都是邪教,采用4字节编址会造成大量指令不兼容,是邪教,会被Intel绑在火刑柱上烧死。
另外,因为取指的时候必须对齐,所以如果采用4字节编址,所有无法对齐到4字节的指令都会被强制对齐到4字节,Intel指令集里有大量的单字节、双字节、三字节的指令,这些指令都会被强制对齐到4字节,造成大量的空间浪费。以引导扇区为例,引导扇区能做到以300多字节扫描分区表、FAT表并加载文件,靠的就是紧凑指令,如果按4字节编址,引导扇区就没办法做的这么小了。
4字节编址是邪教。
--------------------
PPC/ARM/MIPS是可以这么做的。
--------------------
看来有人是没明白不对齐的空间浪费问题,假设有如下代码:
0100 89D0 MOV AX,DX 0102 40 INC AX 0103 BE00B8 MOV SI,B800
如果要跳转到0102的话,在4字节对齐的环境里,这种操作无法实现,因为0102无法被正确编址。