Netwide Assembler Binary Options
Was ist Nasm Der Netwide Assembler, NASM, ist ein 80x86 Assembler, der für Portabilität und Modularität entwickelt wurde. Es unterstützt eine Reihe von Objekt-Dateiformate, einschließlich Linux und NetBSD / FreeBSD a. out, ELF, COFF, Microsoft 16-Bit-OBJ und Win32. Es gibt auch einfache Binärdateien aus. Seine Syntax ist entworfen, um einfach und leicht zu verstehen, ähnlich Intel39s, aber weniger komplex. Es unterstützt Pentium, P6, MMX, 3DNow. SSE und SSE2 Opcodes, und hat Makro-Fähigkeit. WICHTIG Die Windows-Version ist etwas veraltet. Bitte folgen Sie diesem Link, um die neueste Version 0.98.39 zu erhalten. Warum diese Website NASM ist in erster Linie ein Linux-Projekt. Diese Website enthält das Installationspaket für Windows 9x / NT / 2k / XP und BeOS Release 5, zusätzliche Installationshinweise für Visual Studio Integration und BeIDE Integration und CHM Dokumentationsformat. Installieren von NASM unter Windows Wenn Sie das Win32-Archiv für NASM, nasmw-inst-XXX. exe (wobei XXX die Versionsnummer des im Archiv enthaltenen NASM bezeichnet) erhalten haben, doppelklicken Sie auf das Autoinstallationsprogramm und installieren es in seinem eigenen Verzeichnis ( Zum Beispiel C: Program FilesNASM). Das Archiv enthält zwei ausführbare Dateien: die ausführbaren NASM-Dateien nasmw. exe und die ausführbaren Dateien NDISASM ndisasm. exe und ndisasmw. exe. In jedem Fall ist die Datei, deren Name in w endet, eine ausführbare Win32-Datei, die unter Windows 95 oder Windows NT ausgeführt wird. Intel Integration in Microsoft Visual Studio 6 Seit 0.95.36 ist NASM vollständig offiziell mit Microsoft Visual Studio 6 /.NET kompatibel - Wählen Sie in Extras / Optionen / Verzeichnisse 39Show Verzeichnisse für: 39 in 39Executable files39. Fügen Sie einen neuen Pfad hinzuC: Program FilesNASMquot (oder wo Sie Nasm installiert haben) - Erstellen Sie in Ihrem Projektarbeitsbereich einen neuen Ordner 39Assembler-Dateien39. - Klicken Sie in diesem Ordner mit der rechten Maustaste und wählen Sie 39Settings.39 - Im Allgemeinen aktivieren Sie 39Always use custom build step39. - Ändern Sie im Custom Build die folgenden Einstellungen: Integration in Microsoft Visual. NET 2003/2005/2008 - Wählen Sie in Extras / Optionen / Projekte 39VC-Verzeichnisse 39 und 39 Verzeichnisse für anzeigen: 39 39Executable-Dateien39 - Sollte die Standardeinstellung sein. Drücken Sie Strg-Einfügen oder drücken Sie das Symbol 39New Line39. Wählen Sie den Pfad C: Programme FilesNASMquot (oder wo Sie Nasm installiert haben) - Erstellen Sie in Ihrem Projektarbeitsbereich einen neuen Ordner 39Assembler-Dateien39. - Klicken Sie in diesem Ordner mit der rechten Maustaste und wählen Sie 39Settings.39 - Im Allgemeinen aktivieren Sie 39Always use custom build step39. - Ändern Sie im Custom Build die folgenden Einstellungen: Befehle nasmw. exe - f win32 - Xvc - o (IntDir) (InputName).objquot (InputDir) (InputName).asm Installieren von NASM unter BeOS Sobald Sie das BeOS-Archiv für NASM erhalten haben , Nasm-beos-XXX. pkg (wobei XXX die Versionsnummer des im Archiv enthaltenen NASM angibt), doppelklicken Sie auf das Auto-Installationsprogramm und installieren es in seinem eigenen Verzeichnis. So verwenden Sie NASM in BeIDE Seit BeOS 5 wird NASM unterstützt Mit dem NASM Integration Plugin - Öffnen Sie die Option Project Settings, - fügen Sie ein neues Ziel 39.asm39 hinzu und wählen Sie tool 39nasm39. - Fügen Sie Ihre ASM-Dateien in Ihrem Projekt. - Alternativ wählen Sie. CC und wechseln zu ASM und NASM. Wie man eine einfache Assembler-Routine mit NASM zu schreiben. Bits 32 Abschnitt. bss align16 Abschnitt. data align16 Abschnitt. text align16 global myFunction myFunction: push ebp mov ebp, esp mov eax, ebp 8 // Geben Sie hier Ihren Code ein. Ebp ret END bei Verwendung von MSC, um die Prozedur zu exportieren: int cdecl myFunction (int Parameter) bei Verwendung von GCC, um die Prozedur zu exportieren: int myFunction (int-Parameter) Ansprechpartner Autor Getting NASM special edition 0.98.36 ---- --- Update rdoff - bibliothekar / archiver - allgemeine rec - docs Fixieren Sie signierte / unsigned Probleme. Fix JMP FAR Etikett und CALL FAR Etikett. Add neue Multisection-Unterstützung - Map-Dateien - fix align bug Fix sysexit, movhps / movlps reg, Reg Bugs in insns. dat quotQquot oder quotOquot Suffixe zeigen oktal Support Prescott neue Anweisungen. Cyrix XSTORE Anweisung. Außerdem wird die NASM-Dokumentation in der CHM-Version für das Windows-Paket bereitgestellt. Installation von BeOS 5. 286 KB Win32-Installation. 634 KB (C) Copyright 1999-2004 realtech VR. Alle Rechte vorbehalten. NASM ist unter LGPL. Bitte beachten Sie die Lizenz-Lizenz, die als Teil eines NASM-Vertriebs-Archivs für die Lizenzbedingungen bereitgestellt wird, unter denen Sie NASM verwenden können. Der Netwide Assembler: NASIS Der Netwide Disassembler, NDISASM Der Netwide Disassembler ist ein kleines Companion-Programm für den Netwide Assembler, NASM . Es schien eine Schande, einen x86-Assembler mit einer vollständigen Anweisungstabelle zu haben und nicht so viel Gebrauch wie möglich zu machen, also ist er ein Disassembler, der die Anweisungstabelle (und einige andere Bits des Codes) mit NASM teilt. Der Netwide Disassembler tut nichts außer, um Zerlegungen von binären Quelldateien zu erzeugen. NDISASM hat kein Verständnis von Objektdateiformaten, wie objdump. Und es wird nicht verstehen, DOS. EXE-Dateien wie Debug. Es zerlegt nur. Siehe Installationsanweisungen in Abschnitt 1.3. NDISASM, wie NASM, hat eine man-Seite, die Sie irgendwo sinnvoll einsetzen können, wenn Sie auf einem Unix-System sind. Um eine Datei zu disassemblieren, verwenden Sie in der Regel einen Befehl des Formulars NDISASM kann 16-, 32- oder 64-Bit-Code gleichermaßen leicht zerlegen, vorausgesetzt natürlich, dass Sie sich daran erinnern, zu spezifizieren, mit dem es arbeiten soll. Wenn kein Schalter - b vorhanden ist, arbeitet NDISASM standardmäßig im 16-Bit-Modus. Der Schalter - u (für USE32) ruft auch den 32-Bit-Modus auf. Zwei weitere Befehlszeilenoptionen sind - r, die die Versionsnummer des ausgeführten NDISASM melden, und - h, die eine kurze Zusammenfassung der Befehlszeilenoptionen enthält. Um eine DOS-Datei korrekt zu disassemblieren, muss ein Disassembler davon ausgehen, dass der erste Befehl in der Datei unter Adresse 0x100 geladen wird. Anstatt bei Null. NDISASM, das standardmäßig davon ausgeht, dass jede Datei, die Sie mit null beladen, über diese Informationen informiert werden muss. Mit der Option - o deklarieren Sie einen anderen Ursprung für die Datei, die Sie demontieren. Sein Argument kann in jedem der NASM numerischen Formate ausgedrückt werden: Dezimal standardmäßig, wenn es beginnt mit oder 0x oder endet in seinem hex. Wenn sie in Q ihr Oktal endet. Und wenn sie in B ihr Binär endet. Daher, um eine Datei zu zerlegen: wird den Trick tun. Angenommen, Sie dekomprimieren eine Datei, die einige Daten enthält, die kein Maschinencode sind, und enthält dann einen Maschinencode. NDISASM wird durch den Datenabschnitt treu pflügen, wo immer es möglich ist (obwohl die meisten von ihnen bizarr aussehen und einige ungewöhnliche Präfixe haben können, z. B. FS ODER AX, 0x240A) und DB-Befehle immer so oft erzeugen, wenn sie völlig verstopft sind . Dann wird es den Codeabschnitt erreichen. Angenommen, NDISASM hat gerade die Erzeugung eines seltsamen Maschinenbefehls von einem Teil des Datenabschnitts beendet, und seine Dateiposition ist nun ein Byte vor dem Beginn des Codeabschnitts. Es ist durchaus möglich, dass eine andere Fehlanweisung erzeugt wird, beginnend mit dem letzten Byte des Datenabschnitts, und dann wird die korrekte erste Anweisung im Codeabschnitt nicht gesehen, da der Ausgangspunkt darüber übersprungen wird. Das ist nicht wirklich ideal. Um dies zu vermeiden, können Sie einen Synchronisationspunkt oder sogar beliebig viele Synchronisationspunkte angeben (obwohl NDISASM intern nur 2147483647 Synchronisationspunkte behandeln kann). Die Definition eines Synchronisationspunktes ist: NDISASM garantiert, dass die Synchronisationspunkte genau während der Demontage getroffen werden. Wenn sie darüber nachdenkt, eine Anweisung zu erzeugen, die dazu führt, dass sie über einen Synchronisierungspunkt springt, wird sie diese Anweisung verwerfen und stattdessen ein db ausgeben. So wird es beginnen Demontage genau aus dem Synchronisierungspunkt, und so sehen Sie alle Anweisungen in Ihrem Code-Abschnitt. Sync-Punkte werden mit der Option - s angegeben: sie werden in Bezug auf den Ursprung des Programms und nicht die Dateiposition gemessen. Wenn Sie also nach 32 Byte einer Datei synchronisieren möchten, müssten Sie tun. Wie oben erwähnt, können Sie mehrere Synchronisierungsmarken angeben, wenn Sie es nur benötigen, indem Sie die Option - s wiederholen. Nehmen wir an, dass Sie den Bootsektor einer DOS-Diskette demontieren (vielleicht hat es einen Virus, und Sie müssen das Virus verstehen, damit Sie wissen, welche Arten von Schäden es Ihnen getan haben könnte). Normalerweise enthält dies einen JMP-Befehl, dann einige Daten, dann den Rest des Codes. Es gibt also eine sehr gute Chance, dass NDISASM fehlausgerichtet ist, wenn die Daten endet und der Code beginnt. Daher ist ein Synchronisationspunkt erforderlich. Auf der anderen Seite, warum sollten Sie den Sync-Punkt manuell angeben Was youd tun, um zu finden, wo der Sync-Punkt wäre, wäre sicher, die JMP-Anweisung zu lesen, und dann seine Zieladresse als Synchronisationspunkt zu verwenden . So kann NDISASM das auch für Sie tun. Die Antwort ist natürlich ja: Mit einem der beiden Schalter - a (für automatische Synchronisation) oder - i (für intelligente Synchronisation) wird der automatische Synchronisationsmodus aktiviert. Der Auto-Sync-Modus erzeugt automatisch einen Synchronisierungspunkt für jede vorwärts gerichtete PC-relative Sprung - oder Aufrufanweisung, die NDISASM auftritt. (Da NDISASM ein One-Pass ist, wenn es auf einen PC-relativen Sprung stößt, dessen Ziel bereits verarbeitet wurde, kann es nicht viel dagegen tun.) Nur PC-relative Sprünge werden verarbeitet, da ein absoluter Sprung entweder über ein Register erfolgt (In welchem Fall NDISASM nicht weiß, was das Register enthält) oder eine Segmentadresse einschließt (in diesem Fall ist der Zielcode nicht im selben Segment, in dem NDISASM arbeitet, und somit kann der Synchronisierungspunkt nicht überall platziert werden). Für einige Arten von Dateien, wird dieser Mechanismus automatisch setzen Sync-Punkte an allen richtigen Orten, und speichern Sie aus, um alle Synchronisierungspunkte manuell zu platzieren. Es sollte jedoch betont werden, dass der automatische Synchronisierungsmodus nicht garantiert ist, um alle Synchronisierungspunkte zu erfassen, und Sie müssen möglicherweise noch einige manuell platzieren. Der Auto-Sync-Modus hindert Sie nicht daran, manuelle Synchronisationspunkte zu deklarieren: Es fügt automatisch automatisch generierte diejenigen hinzu, die Sie bereitstellen. Es ist vollkommen möglich, - i und einige - s-Optionen angeben. Eine weitere Einschränkung mit Auto-Sync-Modus ist, dass, wenn durch einige unangenehme Fluke, etwas in Ihrem Datenteil zu einem PC-relativen Aufruf oder Sprung Anweisung zu zerlegen, NDISASM kann gehorsam einen Synchronisationspunkt an einem völlig zufälligen Ort, zum Beispiel in der Mitte einer der Anweisungen in Ihrem Codeabschnitt. So können Sie am Ende mit einer falschen Demontage, auch wenn Sie Auto-Sync verwenden. Auch hier kann ich nicht viel tun. Wenn Sie Probleme haben, müssen Sie die manuellen Synchronisationspunkte verwenden oder die Option - k verwenden (dokumentiert unten), um die Demontage des Datenbereichs zu unterdrücken. Die Option - e überspringt einen Header auf der Datei, indem die ersten N Byte ignoriert werden. Das bedeutet, dass der Header nicht auf den Demontageversatz gezählt wird, wenn Sie - e10 - o10 angeben. Wird die Zerlegung in Byte 10 in der Datei beginnen, und dies wird mit Offset 10 und nicht mit 20 angegeben. Die Option - k wird mit zwei durch Kommas getrennten numerischen Argumenten versehen, wobei der erste ein Versatz der Anordnung und der zweite eine Zahl von ist Zu überspringen. Dies zählt die übersprungenen Bytes in Richtung des Versatzes der Assembly: seine Verwendung ist es, die Zerlegung eines Datenabschnittes zu unterdrücken, der nicht alles enthält, was Sie trotzdem sehen wollten. Es sind keine Fehler bekannt. Allerdings sollten Sie finden, mit Patches, wenn möglich, an nasm-bugslists. sourceforge. net gesendet werden. Oder auf die Entwickler-Website bei nasm. us/ und gut versuchen, sie zu beheben. Fühlen Sie sich frei, Beiträge und neue Funktionen zu senden. Sie haben Recht. NASM unterstützt ARM nicht. Es gibt einen sehr einfachen Grund. Die ARM-Baugruppe hat nichts mit einer x86-Baugruppe zu tun. Eine Assembly ist mit der Hardware-Architektur verknüpft, für die sie erstellt wird. Montageanweisungen sind Mnemotechniken für den tatsächlichen Prozessorbefehlssatz, und ARM-Befehlssatz hat nichts gemeinsam mit dem Befehl x86, da ARM-Architektur nicht x86-kompatibel ist. Jeder Assemblycode, der für x86 geschrieben wurde, kann nicht auf ARM verwendet werden. Aus diesem Grund wurden höhere Sprachniveaus (zB C) entwickelt.
Comments
Post a Comment