NASM: от x86 до PPC - ошибка синтаксиса выражения - PullRequest
2 голосов
/ 15 февраля 2012

Я читал пошаговый язык ассемблера (3-е издание; Джефф Дюнтеманн).У меня есть коробка Linux, коробка Lion и машина (PPC) Tiger, которую я могу использовать.Я писал небольшие программы для сборки с NASM на машинах Lion и Linux, и хотел бы сделать это на Tiger.

Имейте в виду, я никогда не ожидал, что это будет легко.

Я не совсем уверен, как мне следует изменить код для работы на PPC.Я до сих пор сталкивался с тремя expression syntax error с (строки 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

(я понимаю, что КПП умирает, и в этом нет особого смыславыяснение его сборки, но обучение никогда не бывает плохим.)

Ответы [ 2 ]

4 голосов
/ 15 февраля 2012

nasm - это ассемблер для x86 / x86-64. Вам нужно посмотреть на использование нативного (Mach-O ppc) as или расширенного ассемблера gcc. Дело не только в изменении кодов операций - некоторые директивы также будут недействительными для ppc. Таким образом, вам понадобится твердое понимание сборки КПП.

Также преждевременно говорить, что power умирает. IBM POWER7 по-прежнему остается самым быстрым из доступных процессоров общего назначения. Также рассмотрим архитектуру Cell и встроенные рынки.

2 голосов
/ 15 февраля 2012

Вы написали сборку для x86 (Intel i386).Это другая архитектура, чем PowerPC (Motorola).См. Набор команд PowerPC здесь.

Кроме того, вам необходимо использовать ассемблер, который понимает набор команд PowerPC, например, gnu as.

Редактировать: без базовыхпонимание набора команд (который часто принципиально различен для каждой архитектуры) вы найдете невозможным для написания ассемблера.

...