【问题标题】:x64 Assembly procedurex64 组装程序
【发布时间】:2013-01-01 19:22:17
【问题描述】:

假设 x64 汇编过程中的入口代码是:

push  rsi
push  r12
sub   rsp,48

现在,我如何在 PROC 的 body 中找到这些值:

1)1 参数 2)3 参数 3)5 参数 4)7 参数

如果你能帮我画出或描述堆栈,那我就更好理解了。

【问题讨论】:

  • 如果它是从某种语言(如 C)调用的,那么每个操作系统的它也会有所不同。你的平台是什么?
  • 正如 Bo Persson 所说,这取决于平台。维基百科有一篇关于 x86 calling conventions 的文章,涵盖 x64。
  • 我在 Windows 中,我的 cpu 是 intel family (core i7)

标签: assembly 64-bit procedure masm


【解决方案1】:

来自Windows x64 calling conventions

前四个整数或指针参数在RCXRDXR8R9 中从左到右传递。一旦这些寄存器被填满,其他所有内容都将在堆栈中(前四个浮点参数除外)。

由于我们看不到代码是如何被调用的,因此无法从序言中推断出参数。您需要查看调用它的代码以了解其中的内容,这两个 pushes 可能只是保存了被破坏的寄存器。

【讨论】:

    猜你喜欢
    • 2010-09-08
    • 1970-01-01
    • 2013-10-22
    • 1970-01-01
    • 2016-06-02
    • 2018-01-01
    • 2023-03-21
    • 1970-01-01
    • 2021-12-01
    相关资源
    最近更新 更多