XLAT, XLATB
表格查询翻译
stableVMJITAOTinstruction
编码
| 操作码 | 指令 | Op/En | 64 位 | 兼容/传统 | 说明 |
|---|---|---|---|---|---|
D7 | XLAT m8 | ZO | 有效 | 有效 | 设定 AL 到内存字节 DS: [(E)BX + 未签名 AL]. |
D7 | XLATB | ZO | 有效 | 有效 | 设定 AL 到内存字节 DS: [(E)BX + 未签名 AL]. |
REX.W + D7 | XLATB | ZO | 有效 | 不可编码 | 设定 AL 为内存字节 [RBX + 未签名 AL]. |
实测开销
正在从 arch-data 加载实测数据...
说明
在内存中的表格中定位一个字节条目,使用 AL 寄存器的内容作为表格索引,然后将表格条目的内容复制回 AL 寄存器. AL寄存器中的索引作为无符号整数处理. XLAT 和 XLATB 指令从 DS:EBX 或 DS:BX 注册器(取决于指令的地址大小属性,分别为 32 或 16 ) 获得内存中的表基地址. (DS段可能会被覆盖,并带有一段覆盖前缀. )
在组装码级别上,允许此指令的两种形式:"explient-操作数"形式和"nooperand"形式. 显式-操作数形式(与XLAT mnemonic一起指定)允许以符号明确指定表格的基址. 提供这种明确的操作数表格是为了提供文件;然而,请注意,这种表格所提供的文件可能具有误导性。 也就是说,符号不必指定正确的基址. 基址总是由DS:(E)BX登记器指定,在XLAT指令执行前必须正确加载.
No-操作数形式(XLATB)提供了XLAT指令的"短形式". 在此,处理器还假设DS:(E)BX登记册中包含表格的基本地址.
在64位模式中,操作类似于遗留模式或兼容模式. AL用于指定表格索引(操作数大小固定为8位). 然而,RBX被用于指定表格的基址. 参见本节开头的汇总图,用于编码数据和限制.
行动
IF AddressSize = 16
THEN
AL := (DS:BX + ZeroExtend(AL));
ELSE IF (AddressSize = 32)
AL := (DS:EBX + ZeroExtend(AL)); FI;
ELSE (AddressSize = 64)
AL := (RBX + ZeroExtend(AL));
FI;受影响的旗帜
None.
异常
保护模式
#GP(0) | 如果 内存操作数 的有效地址位于 CS,DS,ES,FS 或 GS 区段限制之外,如果 DS,ES,FS,或 GS 注册簿中包含 NULL 段选择子. |
#SS(0) | 如果 内存操作数 有效地址在 SS 段限制之外. #PF(fault-code) 如果 页面错误 发生. |
#UD | 如果使用 LOCK 前缀 。 |
实地址模式
#GP | 如果内存操作数的有效地址在CS,DS,ES,FS或GS段限制之外. |
#SS | 如果 内存操作数 的有效地址在 SS 段限制之外。 |
#UD | 如果使用 LOCK 前缀 。 |
虚拟 8086 模式
#GP(0) | 如果内存操作数的有效地址在CS,DS,ES,FS或GS段限制之外. |
#SS(0) | 如果 内存操作数 有效地址在 SS 段限制之外. #PF(fault-code) 如果 页面错误 发生. |
#UD | 如果使用 LOCK 前缀 。 |
兼容模式
| 与保护模式中的例外相同. |
64 位模式
#SS(0) | 如果引用SS部分的内存地址是非冠状的. |
#GP(0) | 如果内存地址是非冠状的. #PF(fault-code) 如果发生 页面错误. |
#UD | 如果使用 LOCK 前缀 。 |