如何在不同的操作系统和体系结构上运行相同的汇编程序?
这是一个简单的 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。
来源