2012-02-15 7 views
1

Я читал язык сборки Step-by-Step (3-е издание, Jeff Duntemann). У меня есть ящик Linux, ящик для льва и машина для тигра (PPC), которую я могу использовать. Я писал небольшие сборочные программы с NASM на машинах Lion и Linux и хотел бы сделать это на Tiger.NASM: x86 to PPC - ошибка синтаксиса выражения

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

Я не совсем уверен, как мне изменить код для работы с PPC. Я до сих пор встречался с тремя expression syntax error (строки 2, 3 и 14), которые я не могу понять.

(я не имею твердое понимание инструкции КПП, установленной в меньшей мере.)

код Я пытаюсь собрать такой: (игнорировать номера строк)

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 

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

+1

NASM предназначен только для x86/x86_64, он не будет работать с PPC, поэтому вам придется использовать другой ассемблер (например, GAS-сборщик GAS). Кроме того, в основном все остальное также отличается для PPC - набора команд и метода syscall, в частности - вам лучше начать с нуля, а не преобразовывать существующий код по строкам. – user786653

+0

(Хотя NASM действительно работает.) Спасибо. –

+1

Да, было бы правильнее сказать, что это только * цели * x86/x86_64. BTW, чтобы понять, как выглядит код PPC, вы можете использовать 'gcc -S hello.c', чтобы GCC выводил ассемблерный код программы на C. – user786653

ответ

2

nasm является ассемблером для x86/x86-64. Вы должны посмотреть на использование native (Mach-O ppc) as или gcc расширенный asm. Речь идет не только об изменении кодов операций - некоторые директивы также будут недействительными для ppc. Так что вам будет нужно твердо держаться на сборке PPC.

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

1

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

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

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

+0

Мне было интересно узнать, использовал ли NASM один и тот же язык ассемблера на разных платформах (это не имеет особого смысла, теперь я думаю об этом). –

 Смежные вопросы

  • Нет связанных вопросов^_^