gpt4 book ai didi

assembly - 每个 asm 指令的大小是多少?

转载 作者:行者123 更新时间:2023-12-04 01:48:15 25 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





X86 Assembly - How to calculate instruction opcodes length in bytes [closed]


How to tell the length of an x86 instruction?

(6 个回答)


4 个月前关闭。




每个 asm 指令的大小是多少?每条指令占用多少字节? 8 字节?四个用于操作码,四个用于参数?例如,当您在 mov 中有一个操作码和 2 个参数时会发生什么?它们的内存大小是固定的还是有所不同? EIP 与此有什么关系吗,它的值总是加一,完全独立于它传递的是哪种指令?

我问这个是因为当我阅读 http://en.wikibooks.org/wiki/X86_Disassembly/Functions_and_Stack_Frames 时,我偶然发现了一个事实,即 call 指令似乎等同于 push 和 jmp 指令。

call MYFUNCTION
mov my_var, eax


push [eip + 2];
jmp MYFUNCTION;
mov my_var, eax

当我们将 [eip + 2] 压入堆栈时,我们指向什么值?在“jmp MYFUNCTION”旁边的那一行, mov my_var eax ,对吗?

ps:MSVC++ 在第一行标记错误,因为它说 eip 未定义。它适用于 eax、esp、ebp 等。我做错了什么?

最佳答案

机器指令的大小取决于处理器架构 - 有些架构具有固定大小的指令,但您显然指的是 IA-32 和 Intel 64,它们的指令长度变化很大。指令指针当然总是按处理指令的长度递增。

您可以下载IA-32 and Intel 64 manuals来自英特尔 - 它们几乎包含您可以了解的有关架构的所有信息。您可以在中找到操作码映射和指令集格式
Intel® 64 and IA-32 Architectures Software Developer’s Manual Volume 2B: Instruction Set Reference, N-Z第 623 至 768 页。

关于assembly - 每个 asm 指令的大小是多少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1399861/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com