xieyudi1990
2015-02-01 23:11:09 +08:00
感觉 "new byte registers" 指的是 AL, BL, CL, DL, DIL, SIL, BPL, SPL, R8L - R15L.
意思应该是 AH BH CH DH 和 上面这些不能同时在一条指令里引用.
没玩过x86_64, 但我翻了下手册, 结合上下文应该是这个意思.
In 64-bit mode, there are limitations on accessing byte registers. An instruction cannot reference legacy high-bytes (for example: AH, BH, CH, DH) and one of the new byte registers at the same time (for example: the low byte of the RAX register). However, instructions may reference legacy low-bytes (for example: AL, BL, CL or DL) and new byte registers at the same time (for example: the low byte of the R8 register, or RBP). The architecture enforces this limitation by changing high-byte references (AH, BH, CH, DH) to low byte references (BPL, SPL, DIL, SIL: the low 8 bits for RBP, RSP, RDI and RSI) for instructions using a REX prefix.