Wie "einheitlich" sind assembler befehle?



  • Hallo Leute,

    ich hab vor Jahren mal bischen Assembler in der Schule gehabt. Mir fällt grad nich mehr die CPU ein, aber war glaub C64 6510 oder so was.

    Wier ist das den heute mit den ganzen unterschiedlichen CPUS? die Adressbreite variert, und wie "standardisiert" sind die befehle? Ich hab mal nen PIC programmiert aber mit C. Weinn ich nun ein ASM Block in C verwende, is der darin enthaltene ASM Code auch Plattform abhänging nehm ich an!?

    Grüße und Danke schonmal;)



  • Was genau ist jetzt der Sinn deiner Frage? Natürlich sind die Assembler Befehle von Architektur zu Architektur unterschiedlich. Selbst die Intel und die AT&T x86 Syntax unterscheiden sich relativ stark.



  • d.h. ich muss von cpu zu cpu andere schlüsselwörter verwenden? aber sowas wie "mov" wird sicher in vielen vewendet?



  • x86 (und auch x86-64) benutzten alle den Standartbefehlssatz. Es gibt noch ein paar Extensions aber ohne die sollte dein Programm auf >90% der Computer laufen.



  • Ja, unterschiedliche Architekturen verwenden unterschiedliche Befehle. Einen mov Befehl mag es schon geben, aber die Register sind anders und die Adressierungsarten. Aber so viele "wichtige" Assembler gibts nicht. Die wichtigsten sind denk ich x86 und ARM.



  • 90% der Computer

    Naja, was zaehlst du alles zu Computer? Also selbst das Handy ist im Vergleich zu einem 386er schon ein Hochleistungscomputer. Unter diesem Gesichtspunkt stimmt deine Aussage nicht mehr.



  • 🙄

    Er wollte eine allgemeine Antwort oder soll ich lieber sagen: Assembler Befehle sind überhaupt nicht einheitlich und du brauchst gar nicht erst mit Assembler anfangen. Der Standartbefehlssatz von x86 funktioniert nur auf 4% der erhältlichen CPUs wenn man Handys, Fernseher und Toaster dazu zählt.



  • Ok, X86 und ARM sind also plattformen auf denen sich es lohnt mal bischen mit Assembler anzufangen (Neugier:) 😉

    Wie sieht es mit der PIC architektur aus?



  • PIC kenne ich (noch) nicht, ich sitze gerade an AVR.

    Die Assemblerbefehle sind auch wieder anders - aber nirgends so wie beim 6502.
    x86 ist wegen der ca 190 Befehle gruselig (die kann man kaum alle im Kopf
    behalten und ist dauernd am blättern), 6502 hat (glaube ich) um die 45 (da
    geht's von der Idee direkt in den Editor).

    Es gibt halt unterschiedliche Prozessoren mit genauso unterschiedlichem
    Aufbau - klar unterscheiden sich da auch die Assemblerbefehle.

    Die nächste Abstraktion obendrüber ist dann C.



  • Scheppertreiber schrieb:

    Die Assemblerbefehle sind auch wieder anders - aber nirgends so wie beim 6502.
    x86 ist wegen der ca 190 Befehle gruselig (die kann man kaum alle im Kopf
    behalten und ist dauernd am blättern)

    Von der Nutzung des kompletten Befehlssatzumfangs sollte man bei x86 auch absehen. Einige davon (vor allem eben eher selten genutzte, aber auch die recht komplexen) werden in einen großen Batzen Macro-Ops dekodiert, deren Abarbeitung dann natürlich auch entsprechend dauernd. Andere Instruktionen hingegen werden in zwei oder auch nur eine Macro-Op dekodiert, bei AMD nennt sich das dann "DirectPath".


Anmelden zum Antworten