macos - 如何在 Mac 上运行汇编程序?

标签 macos assembly x86 x86-64

我最近一直在树莓派上自学 ARM 汇编,现在我正在使用 NASM 编译器在 MacOS X 上自学 x86 汇编。我编写了一个文件名为“program1.s”的小程序。代码如下:

global start

section .text
start:
    mov rax, 0xA

首先,我想问一下,这是 MacOS X 上 NASM 的正确语法吗?但我的主要问题是,我应该使用什么 NASM 命令来运行它?

任何有关这些问题的帮助将不胜感激。

  • primecubed

最佳答案

以下命令可用于在 macOS 上汇编、链接然后运行汇编代码程序。

$ nasm -fmacho64 program1.s         # assemble
$ ld -static program1.o -o program1 # link
$ ./program1                        # run

为了使前面的工作正常,我添加了用于exit系统调用的指令(否则运行时会出现段错误,可能是因为内存中的后续数据被解释为要执行的指令)。

global start

section .text
start:
    mov rax, 0xA
    mov rax, 0x02000001  ; System call for exit.
    mov rdi, 0x0         ; An exit code of 0.
    syscall

关于macos - 如何在 Mac 上运行汇编程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64958460/

相关文章:

c - 为什么 CPU 在字边界上访问内存?

assembly - 了解汇编中的符号和溢出标志

assembly - 在 x86 NASM 汇编语言中离开函数时,堆栈是否会自动弹出?

java - 如何让java程序在Mac OS X上读取CCID卡?

ios - 外部附件框架蓝牙对。 connectedAccessories 每次计数 0

MacOSX/ cocoa : how to change the desktop content view/how to draw directly on the desktop background?

带有 APFS : Copy-On-Write in Terminal 的 macOS

c++ - cout 没有输出但 printf 有

assembly - EQU 与 DC.B.有什么不同?

assembly - 如何获取 VESA BIOS 信息