【问题标题】:NASM: x86 to PPC - expression syntax errorNASM:x86 到 PPC - 表达式语法错误
【发布时间】: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


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

    • 我主要想知道 NASM 是否跨平台使用相同的汇编语言(现在我想起来了,这并没有多大意义)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-08-30
    • 2019-02-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多