【发布时间】:2019-02-09 20:16:10
【问题描述】:
在 Intel 32 位架构中,我可以使用 ModR/M 字节调用具有 32 位地址位置的调用。根据 Intel 手册,我需要 /2 (010B) 用于操作码扩展,00B 用于 Mod,101B 允许我进行 32 位位移。
如果我想在 64 位架构中进行远调用,以便为 64 位地址留出空间,我知道我可以 /3 (011B) 进行操作码扩展。但是,仍然只提供 32 位位移。有没有办法将目标指定为 64 位地址?
主要是,我想知道如何在给定位置的 64 位地址的情况下进行呼叫。
【问题讨论】:
-
阅读英特尔手册:felixcloutier.com/x86/CALL.html。
call far m16:64。顺便说一句,远调用的目标是 seg:offset,所以它是 80 (64+16) 或 48 (32+16) 位,而不是 64。 -
感谢您的链接。我不明白如何使用段选择器。你会帮我更多吗?你能给我除了地址部分的操作码吗?喜欢你能给我一个关于如何组装 seg、offset 和 opcode 的参考吗?
标签: assembly 64-bit x86-64 intel