2

我一直在阅读《Assembly Language Step-By-Step》(第 3 版;Jeff Duntemann 着)。我有一个可以使用的 Linux 机器、一个 Lion 机器和一个 (PPC) Tiger 机器。我一直在 Lion 和 Linux 机器上使用 NASM 编写小型汇编程序,并且希望在 Tiger 机器上这样做。

请注意,我从没想过这会很容易。

我不太确定我应该如何更改代码以在 PPC 上工作。到目前为止,我遇到了三个expression syntax error我无法弄清楚的 s(第 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 正在消亡,弄清楚它的组装没有多大意义,但学习从来都不是一件坏事。)

4

2 回答 2

4

nasm是 x86 / x86-64 的汇编程序。您需要查看使用本机 (Mach-O ppc)as或 gcc 扩展 asm。这不仅仅是改变操作码的问题——一些指令对 ppc 也是无效的。所以你需要牢牢掌握PPC组装。

现在说权力正在消亡还为时过早。IBM POWER7 仍然是可用的“最快”通用处理器。还要考虑 Cell 架构和嵌入式市场。

于 2012-02-15T16:14:31.747 回答
2

您为 x86 (Intel i386) 编写了程序集。这是与 PowerPC(摩托罗拉)不同的架构。请参阅此处的 PowerPC 指令集

此外,您需要使用能够理解 PowerPC 指令集的汇编程序,as例如 gnu。

编辑:如果没有对指令集的基本了解(每种架构通常根本不同),您将发现不可能编写汇编。

于 2012-02-15T16:13:02.883 回答