gpt4 book ai didi

assembly - 如果 x86 jmp 跳转到其他两个连续有效地址之间的地址会发生什么?

转载 作者:行者123 更新时间:2023-12-05 08:21:54 26 4
gpt4 key购买 nike

在 x86 程序集的例程中,如果代码包含指向两个有效地址之间的有效地址的跳转,会发生什么情况?这是一个人工示例:

0x0001: mov ...
0x0005: add ...
0x0009: jmp 0x0003

此外,我如何在本地机器或在线上试验这样的东西?我检查了像 https://defuse.ca/online-x86-assembler.htm#disassembly 这样的在线 x86 编辑器, 但它不允许我放置像“0x0001”这样的指令地址。

最佳答案

没有“有效”或“无效”地址之分。每一个地址都可以跳转,如果对应的页面被映射,则执行。

那么当你在指令“之间”跳转时会发生什么?好吧,处理器不知道你打算从哪里开始和结束指令。它只是执行它看到的字节。此代码将与您预期的不同,因为 CPU 会尝试将其他一些指令的中间部分解析为操作码。

您的具体示例不够具体,我无法说明指令的结果。也许您可以提供一个完整的示例(包括机器代码),以便我给出更好的解释。

关于assembly - 如果 x86 jmp 跳转到其他两个连续有效地址之间的地址会发生什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69735867/

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