如何在不同的操作系统和体系结构上运行相同的汇编程序?

这是一个简单的 NASM 64 位 linux 汇编程序:

_exit:
    mov rax, 60
    mov rdi, 0
    syscall

我的电脑是 AMD(x86_64 64 位),我知道这个汇编程序也可以在 INTEL 64 位处理器上运行。

但我有以下这些问题!

  • 该程序是否可以在具有MIPS 64 位ARM 64 位架构的( linux ) 计算机上运行?
  • 当汇编代码使用不同的操作系统时,是否只有系统调用发生变化?

回答

该程序是否可以在具有 MIPS 64 位和 ARM 64 位架构的 (linux) 计算机上运行?

不。MIPS 和ARM有完全不同的指令集。这类似于尝试使用 .NET VM 运行 JVM 字节码。它只是不兼容。

当汇编代码使用不同的操作系统时,是否只有系统调用发生变化?

否。例如,调用约定不同。例如,Windows 使用 RCX、RDX、R8 和 R9 来传递 int 参数,SystemV(例如 Linux)为此使用 RDI、RSI、RDX、RCX、R8、R9。
来源


以上是如何在不同的操作系统和体系结构上运行相同的汇编程序?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>