anfängerfragen (will assembler lernen)



  • Huhu,
    ich hab jetzt schon einige C++ und Winapi kenntnisse und möchte jetzt
    mal in Assembler einsteigen.
    Dazu habe ich einige Fragen:
    1. Was ist eine gute IDE für Assembler?
    2. mein Freund hat mir geraten x86 zu lernen
    was für versionen unterschiede gibt es da noch
    und was ist da der untershied?
    3. Laufen die Programm auch auf einem anderen Pc?
    4. Kennt wer ein gutes Assembler tutorial?
    Vielen dank
    p.s. bin noch ziemlicher Anfänger in Asm



  • Zu
    1: IMHO - gar keine. Benutz deinen Lieblingstexteditor und fertig.
    2: x86 kann man im Moment IMHO idR. praktisch noch synonym zu i386 verwenden, also im Grunde Code fuer die Intel 386-CPU.
    So weit ein guter Vorschlag von deinem Freund, solcher Code laeuft praktisch auf allen PCs.
    Der 386 hat einen festen Befehlssatz, da gibt es keine "Versionen". Es gibt allerdings einen Haufen Erweiterungen (MMX, SSE, usw.) und im Grunde 2 verschiedene Syntax (Intel und AT&T - Codebeispiele am besten selbst suchen).
    Wenn du gern frickelst, mit Linux arbeitest und vor hast, auch noch was anderes als PCs zu programmieren, bist du wohl mit der AT&T-Syntax besser bedient, sonst eher mit Intel. Die meisten Einsteiger-Tuts in den FAQ verwenden auch Intel-Syntax.
    3: Hat nichts mit der Sprache zu tun, kommt ganz auf das Programm an. DOS-Programme (egal mit welcher Sprache geschrieben) laufen auf aktuellen PCs (unter WinXP) zB. auch oft nicht mehr richtig.
    4: FAQ.



  • vielen dank für die hilfe
    1.heißt das das es für assembler nur compilier gibt?
    Welchen guten könntest du mir da Empfehlen?
    2. Was genau bedeutet intel 386? Also alle pcs unter 3,86GHZ Prozessorgeschwindigkeit?
    3. Ich habe gehört das Assembler von dem Prozessoren abhängig ist
    damit die Programme auf den jeweiligen pcs laufen.
    Gibt es da eine liste oder so welches Assembler auf welchem Prozessor läuft?



  • Nochmal zu 1:
    Nein. Assembler sind keine Compiler, sondern eben Assembler. Und es gibt auch IDE fuer Assembler. Dabei handelt es sich IMHO aber um weitestgehend nutzloses Spielzeug.
    2:
    "386" hat nichts mit der Geschwindigkeit der CPU oder gar des PCs zu tun, sondern ist eine Bezeichnung fuer eine CPU-Reihe. So hat Intel vor ~20 Jahren ihre CPU genannt. Heute heissen die Dinger eben stattdessen Pentium irgendwas.
    Google und Wikipedia sind deine Freunde, ich habe sie mal eben fuer dich bemueht - vielleicht mal ganz interessant, wenn du es genauer wissen willst. 😉
    http://de.wikipedia.org/wiki/Intel_80386
    http://de.wikipedia.org/wiki/X86

    Bei 3 ... naja...
    Im Grunde richtig, allerdings verhaelt es sich bei den meisten Architekturen (also grundlegende CPU-Klassen) wie zB. x86 (die CPU-Architektur, die in PCs verbaut wird) so, dass die zugehoerigen CPU irgendwo kompatibel zueinander sind.
    Code fuer eine 386-CPU laeuft zB. wie gesagt im Grunde auch heute noch auf allen PCs. Naeheres im Artikel ueber x86. Kurz: Das ganze ist im Grunde ein alter Standard, der stueckchenweise immer mehr erweitert wurde - zuletzt eben um so Kram wie SSE oder 64Bit.
    Worauf du mit deinem Code dabei hauptsaechlich achten solltest ist nur, dass du keine Befehlserweiterungen verwendest, die die CPU nicht unterstuetzt. Die grundlegensten Befehle funktionieren aber praktisch immer.
    Welche CPU nun genau welche Befehlserweiterungen unterstuetzt braucht dich als Programmierer im Einzelnen dabei auch gar nicht kuemmern, da entweder das Betriebssystem, oder die CPU Moeglichkeiten bieten, die zur verfuegung stehenden Erweiterungen abzufragen.
    Soweit zu Hardwareunterschieden. Zu Unterschieden bei der Programmierung fuer verschiedene betriebssysteme brauche ich dir, denke ich mal, nichts weiter erzaehlen...



  • danke
    jetzt hätte ich noch 2 fragen
    1. kannst du mir einen guten assembler für windows xp 32 empfehlen?
    2. kannst du mir bitte doch noch was über die betriebssystemunterscheidung sagen, also ob es bei linux auch laufen würde



  • 1. Achja. NASM ist ganz gut... - siehe FAQ oder google.
    Die meisten Tutorials verwenden allerdings MASM... In der NASM-Anleitung gibt es jedoch uA. einen Schnelleinstieg fuer MASM-Benutzer...
    2. Programme sind nicht nur CPU- sondern auch Systemspezifisch. Windowsprogramme laufen zB. nur in Windows (und da zT. auch nur mit bestimmten Versionen) und nicht in Linux oder DOS (irgendwelche "compatibility layer"/VMs und SchnickSchnack mal ausgeschlossen). Die Unterschiede in den Programmen bestehen hier einmal im Dateiformat der Programme und zum anderen in verwendeten Systemfunktionen.
    Wiedermal ist das aber natuerlich kein spezielles Assembler-Problem.



  • ok vielen dank


Log in to reply