【发布时间】:2012-03-06 23:44:36
【问题描述】:
我一直在阅读《Assembly Language Step-By-Step》(第 3 版;Jeff Duntemann 着)。我有一个可以使用的 Linux 机器、一个 Lion 机器和一个 (PPC) Tiger 机器。我一直在 Lion 和 Linux 机器上使用 NASM 编写小型汇编程序,并且希望在 Tiger 机器上这样做。
请注意,我从没想过这会很容易。
我不太确定应该如何更改代码以在 PPC 上工作。到目前为止,我遇到了三个我无法弄清楚的 expression syntax errors(第 2、3 和 14 行)。
(我对PPC指令集至少没有牢牢掌握。)
我要组装的代码是这样的:(忽略行号)
1 SECTION .data
2 str: db "Hello, World!",0x10
3 len: equ $-str
4
5 SECTION .bss
6
7 SECTION .text
8 global start
9
10 start:
11 nop
12 mov eax,4
13 mov ebx,1
14 mov ecx,str
15 mov edx,len
16 int 0x80
17
18 mov eax,1
19 mov ebx,0
20 int 0x80
(我确实意识到 PPC 正在消亡,弄清楚它的组装没有多大意义,但学习从来都不是一件坏事。)
【问题讨论】:
-
NASM 仅适用于 x86/x86_64,它不适用于 PPC,因此您必须使用另一个汇编器(例如 GNU 汇编器 GAS)。此外,PPC 的其他所有内容也大多不同——尤其是指令集和系统调用方法——最好从头开始,而不是逐行转换现有代码。
-
(虽然 NASM 确实运行。)谢谢。
-
是的,更恰当的说法是它只针对 x86/x86_64。顺便说一句,要了解 PPC 代码的外观,您可以使用
gcc -S hello.c让 GCC 输出 C 程序的汇编代码。
标签: macos assembly nasm powerpc osx-tiger