Ist Assembler Plattformunabhängig?



  • N'abend. Ich wollte mir ein Buch zu Assembler kaufen. Ich benutze hauptsächlich Linux aber komme um Windows nicht herum. Daher meine Frage. Ist der Code eigentlich gleich oder muss ich mir extra 2 Bücher kaufen?



  • Ich hatte vor dieses Buch zu kaufen. Weiß aber nicht ob das auch für Linux geeignet ist da er von einem Microsoft Assembler ausgeht
    http://www.amazon.de/Assembler-Grundlagen-PC-Programmierung-Ernst-Wolfgang-Dieterich/dp/3486200011/ref=sr_1_6?ie=UTF8&s=books&qid=1259520655&sr=8-6



  • Assembler ist der Inbegriff der Plattformabhängigkeit.
    Assemblercode kann grundsätzlich nur auf der CPU-Architektur ausgeführt werden, für die er geschrieben wurde. Für Funktionalität jenseits des Datenschubsens musst du auf OS-spezifische Funktionen zurückgreifen.

    Gibt es einen sehr guten Grund, warum du Assembler lernen möchtest? Es ist heutzutage nämlich fast in allen Situationen ausreichend, wenn man Assemblercode ausschließlich lesen kann. Und dafür brauchst du kein Buch, das kannst du dir in einem kurzen Crashkurs aneignen.



  • Anfänger1 schrieb:

    N'abend. Ich wollte mir ein Buch zu Assembler kaufen. Ich benutze hauptsächlich Linux aber komme um Windows nicht herum. Daher meine Frage. Ist der Code eigentlich gleich oder muss ich mir extra 2 Bücher kaufen?

    Kauf dir nicht ein Buch über Assembler mit einem bestimmten OS; die Schnittstellen verwendet sowieso praktisch niemand mehr direkt. Die neusten APIs mit nativem Assembler benutzen zu müssen kommt in etwa einer Todesstrafe gleich. Kauf dir ein gutes Buch über x86-32 Assembler, damit kommst du am weitesten 🙂

    MfG



  • Nanyuki schrieb:

    Assembler ist der Inbegriff der Plattformabhängigkeit.

    kommt drauf an, was du unter 'plattform' verstehst. es gibt einige hundert verschiedene chips mit arm9 bzw. arm7 cores, zwischen denen man asm-code mit wenig aufwand portieren könnte. aber ich weiss, ich zähle mal wieder erbsen, *fg*
    🙂



  • Anfänger1 schrieb:

    N'abend. Ich wollte mir ein Buch zu Assembler kaufen. Ich benutze hauptsächlich Linux aber komme um Windows nicht herum. Daher meine Frage. Ist der Code eigentlich gleich oder muss ich mir extra 2 Bücher kaufen?

    Solange du Systemaufrufe abstrahierst und die CPU identisch ist, ist der Rest des
    Maschinencodes gleich.

    Am besten du programmierst sowohl unter Linux als auch Windows auf direkter Kerneleben, so daß das OS nicht im Weg ist, dann hättest du durchaus freie Fahrt auf der CPU.



  • ;fricky schrieb:

    [...] zwischen denen man asm-code mit wenig aufwand portieren könnte. [...] 🙂

    Wenn man den Code portieren muß, dann ist er per definition NICHT plattformunabhängig...



  • loks schrieb:

    ;fricky schrieb:

    [...] zwischen denen man asm-code mit wenig aufwand portieren könnte. [...] 🙂

    Wenn man den Code portieren muß, dann ist er per definition NICHT plattformunabhängig...

    der erbsenmann wird sagen, dass es plattformunabhaengig ist wegen wenig aufwand 😉



  • loks schrieb:

    ;fricky schrieb:

    [...] zwischen denen man asm-code mit wenig aufwand portieren könnte. [...]

    Wenn man den Code portieren muß, dann ist er per definition NICHT plattformunabhängig...

    völlig richtig, rapso.
    assembler-codes z.b. die nur auf der CPU arbeiten, z.b. allgemeine datenstrukturen usw. musste natürlich nicht portieren.
    🙂



  • Dieser Thread wurde von Moderator/in rüdiger aus dem Forum Rund um die Programmierung in das Forum Assembler verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • endlich habe ich verstanden wie 'Plattformunabhängigkeit' gemeint ist
    und muss sagen Java ( J2ME ) ist definitiv nicht plattformunabhängig xD.

    Lieber Assembler und vorher wissen, als Java und sich die Exceptions zur
    Laufzeit um die Ohren schlagen lassen *lol*

    Ich sag nur "double" und moblie Phones xD



  • Danke schon mal für die ganzen Antworten!

    Eine Frage noch zu

    Anolda schrieb:

    Am besten du programmierst sowohl unter Linux als auch Windows auf direkter Kerneleben, so daß das OS nicht im Weg ist, dann hättest du durchaus freie Fahrt auf der CPU.

    Wie kann ich denn programmieren ohne ein OS zu benutzen?



  • Danke schon mal für die ganzen Antworten!

    Eine Frage noch zu

    Anolda schrieb:

    Am besten du programmierst sowohl unter Linux als auch Windows auf direkter Kerneleben, so daß das OS nicht im Weg ist, dann hättest du durchaus freie Fahrt auf der CPU.

    Wie kann ich denn programmieren ohne ein OS zu benutzen?



  • Hallo,

    ich kenn mich zwar nicht so gut aus, wie die alle hier, doch ich hatte das selbe Problem. Ich habe einen x64 PC und die meisten Tutorials/IDE gehen nur für x86-32. Was funktioniert ist FASM, auf meinen 2 PC's - ist der dann "plattformunabhängig" ?



  • heute wo das meiste ausser Mobiltelefone ja x86 ist (also die neueren Macs ebenfalls) liegt das Problem eigentlich nicht bei Assembler wegen der Plattformabhängigkeit. Code der keine Systemfunktionen (MessageBoxA oder int 21h) aufruft läuft auf einem Mac wie auf einem PC mit Linux oder WIndows oder OS/2 genau gleich. Das Problem ist nur, was will man ohne Systemfunktionen programmieren? Für einen Algorithmus zum einbauen in ein Programm sieht das anders aus. Aber plattformunabhängig muss etwas vorallem sein in dem es auf verschiedenen Betriebssystemen läuft, nicht nur auf verschiedenen CPUs. Das muss man bedenken; z.B. QT kann man auf den verschiedenen Systemen kompilieren (sogar mit anderen CPUs) und Java-Programme laufen ja sofern es die Laufzeitumgebung gibt ohne neu kompilieren. Das ist beides mit Assembler natürlich unmöglich, ausser ich wüsste nichts von einer API welche von Assembler aus aufgerufen werden kann und auf mehreren Betriebssystemen läuft 🙂

    Da man aber hauptsächlich Teile eines Programmes in Assembler schreibt und kaum mehr je ein ganzes (wenn dann nur ein kleines) erübrigt sich die Frage eigentlich solange es nicht auf einem ARM-Handy laufen soll...


Anmelden zum Antworten