我一直在阅读汇编语言循序渐进(第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正在消亡,找出它的装配没有多大意义,但学习从来都不是坏事。)
答案 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
。
编辑:如果没有对指令集的基本理解(对于每个架构通常根本不同),您将发现无法编写汇编。