我如何 运行 mac 上的汇编程序?
How do I run an assembly program on mac?
我最近一直在自学 raspberry PI 上的 ARM 汇编,现在我正在使用 NASM 编译器在 MacOS X 上自学 x86 汇编。我写了一个文件名为'program1.s'的小程序。代码如下:
global start
section .text
start:
mov rax, 0xA
首先,我想问一下,这是 MacOS X 上 NASM 的正确语法吗?但我的主要问题是,我使用什么 NASM 命令来 运行 这个?
如能就这些问题中的任何一个提供帮助,我们将不胜感激。
- primecubed
以下命令可用于assemble、link,然后运行 macOS 上的汇编代码程序。
$ nasm -fmacho64 program1.s # assemble
$ ld -static program1.o -o program1 # link
$ ./program1 # run
为了前面的工作,我添加了一个 exit 系统调用的指令(否则在 运行ning 时会出现分段错误,大概来自后续的数据内存被解释为要执行的指令)。
global start
section .text
start:
mov rax, 0xA
mov rax, 0x02000001 ; System call for exit.
mov rdi, 0x0 ; An exit code of 0.
syscall
我最近一直在自学 raspberry PI 上的 ARM 汇编,现在我正在使用 NASM 编译器在 MacOS X 上自学 x86 汇编。我写了一个文件名为'program1.s'的小程序。代码如下:
global start
section .text
start:
mov rax, 0xA
首先,我想问一下,这是 MacOS X 上 NASM 的正确语法吗?但我的主要问题是,我使用什么 NASM 命令来 运行 这个?
如能就这些问题中的任何一个提供帮助,我们将不胜感激。
- primecubed
以下命令可用于assemble、link,然后运行 macOS 上的汇编代码程序。
$ nasm -fmacho64 program1.s # assemble
$ ld -static program1.o -o program1 # link
$ ./program1 # run
为了前面的工作,我添加了一个 exit 系统调用的指令(否则在 运行ning 时会出现分段错误,大概来自后续的数据内存被解释为要执行的指令)。
global start
section .text
start:
mov rax, 0xA
mov rax, 0x02000001 ; System call for exit.
mov rdi, 0x0 ; An exit code of 0.
syscall