NASM:x86到PPC - 表达式语法错误

时间:2012-02-15 15:57:11

标签: macos assembly nasm powerpc osx-tiger

我一直在阅读汇编语言循序渐进(第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正在消亡,找出它的装配没有多大意义,但学习从来都不是坏事。)

2 个答案:

答案 0 :(得分:4)

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

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

答案 1 :(得分:2)

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

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

编辑:如果没有对指令集的基本理解(对于每个架构通常根本不同),您将发现无法编写汇编。