Assembler Verständnisfrage



  • Hallo, Ich beschäftige mich gerade mit NASM, und frage mich warum die Assemblersprache nur mit Intelprozessoren funktioniert. Warum nicht auch mit AMD? Ist doch alles x84, und müsste von daher auch den selben Befehlssatz haben, oder nicht?



  • Die Befehlssätze sind weitgehend identisch, es gibt kleine Unterschiede, die NASM aber auch behandeln kann. Guck Dir mal

    http://www.nasm.us/xdoc/2.10.07/html/nasmdocb.html

    an. In der rechten Spalte stehen die Prozessoren, mit denen der Befehl eingeführt wurde. Ansonsten hast Du recht: Wo jemand von "Intel", "IA32" oder "IA64" spricht, meint er meistens auch "AMD" (und umgekehrt).

    viele grüße
    ralph



  • Achso, heißt das dann man kann NASM doch auf AMD Prozessoren benutzen?
    Das mit den unterschiedlichen Befehlen find ich etwas komisch. Die Befehle die sich da wirklich unterscheiden dürften bei der Softwareprogrammierung ja kaum je zum Einsatz kommen, weil man dann die Kompatibilität mit einem Prozessortyp verlieren würde.



  • climits schrieb:

    Achso, heißt das dann man kann NASM doch auf AMD Prozessoren benutzen?

    Ja.

    Das mit den unterschiedlichen Befehlen find ich etwas komisch. Die Befehle die sich da wirklich unterscheiden dürften bei der Softwareprogrammierung ja kaum je zum Einsatz kommen, weil man dann die Kompatibilität mit einem Prozessortyp verlieren würde.

    Wenn es wirklich darauf ankommt (selten), dann bastelt man unterschiedliche Programme, die je nach Prozessortyp geladen werden. GCC z.B. bietet die Option an, Code für unterschiedliche Prozessoren herzustellen.

    http://gcc.gnu.org/onlinedocs/gcc/i386-and-x86_002d64-Options.html#i386-and-x86_002d64-Options

    So etwas könnte man z.B. auch machen, um die neuen AES-Instruktionen zu nutzen.

    Das Programm, das den Prozessortyp mithilfe der CPUID-Instruktion erkennt und dementsprechend handelt, bastelt man am besten in Assembler. Der Aufwand ist aber meistens größer als der Nutzen. Viel häufiger werden unpassende Prozessoren einfach ausgeschlossen: versuche mal Windows XP auf einem Pentium II zu installieren (mit Windows 2000 klappt das noch).

    viele grüße
    ralph



  • Wieder was dazugelernt, vielen Dank Ralph!


Anmelden zum Antworten