Windows Assembly Language?
Guten Tag,
In letzter Zeit sehe ich mir immer wieder Codeschnipsel an, in denen der Code höherer Programmiersprachen mit ihrem Assembly-Pendant verglichen wird. Ich habe schon ein wenig Erfahrung mit C-Programmierung, ansonsten nur mit Webdevelopment. Assemblersprache reizt mich schon ein wenig, vor allem die Nähe zur Hardware. Ich habe mal eine kurze Zeit unter Ubuntu Linux mit NASM experimentiert, woran ich auch Freude hatte. Nun suche ich einen gescheiten Assembler für Windows. Ja, ich kenne den MASM und habe ein wenig in den Docs gelesen. So blöd das auch klingen mag - der meiner Meinung nach zu vollgepackte Funktionsumfang gefällt mir einfach nicht, ebenso Schlüsselwörter wie includelib. Unter Linux hat die Ausgabe von Texten in der Standardausgabe mit einfachen Syscalls funktioniert. Ich bin also auf der Suche nach einem Assembler, der alle notwendigen und wichtigen Operationen zur Verfügung stellt, vielleicht sowas wie der GNU-Assembler mit Intel-Syntax.
LG Heinzfred
2 Antworten
Ein Assembler hat zuallererst die Aufgabe, die Instruktionen der CPU übersetzen zu können. Von syscalls weiß er nichts - diese können ja mit den Instruktionen der CPU dargestellt werden.
Und da ist, wo Bibliotheken ins Spiel kommen - code, den bereits jemand anderes geschrieben hat, dass du das nicht selbst nochmal machen musst.
Aber das Einbinden dieser ist auch weniger die Aufgabe des Assemblers, sondern eines Linkers, womit Codeteile, die unabhängig voneinander sind, zusammengebunden werden können. Alternativ kannst du natürlich auch in Assembly geschriebenen Quellcode Teil deines Programms machen, das ist wo ein "include" ins Spiel kommt.
Meiner Meinung nach macht Assembly lernen mehr Sinn, wenn du dich *nicht* mit syscalls abgeben musst - schließlich willst du ja Assembly lernen, und nicht die syscalls vom Betriebssystem. Und wo geht das? Auf und mit Microcontrollern z.B. - deren Prozessoren sind meist leichter zu programmieren als die Desktop CPUs, wegen deren im Allgemeinen übersichtlicheren Instruktionssatzes. Auch liegt dann zwischen deinem Programm und der Hardware des Gerätes kein Betriebssystem, welches dich effektiv davon abhält, direkt die Hardware ansprechen zu können.
Sorry für die späte Rückmeldung, aber ich danke dir für die hilfreiche Antwort! Mikrocontroller klingt gut, damit werde ich mich mal beschäftigen.
Warum nicht NASM?
Ich mag die ARM cortex ASM Syntax bzw. den ARM Thumb instructionset(load store Architektur).
Falls dich Hardware nahe Programmierung interessiert, kann ich dir das nur empfehlen, zum Beispiel auf einem STM32 Board.