Startseite › x64-Assembler-Referenz › Übersicht Hilfe zum PBXB64-Compiler

PBXB64 Inline-Assembler-Übersicht

Der PBXB64-Inline-Assembler bietet vollständige x86-64-Assemblersprachenunterstützung in PowerBASIC-Quelldateien unter Verwendung von#ASM / #ENDASMDirektivenpaar. Es unterstützt über 1400 eindeutige Mnemoniken in allen wichtigen x86-64-ISA-Familien, 21 Operandenartenvarianten und 14 Adressierungsmodi.

Kategorie: Übersicht

Beschreibung

Der PBXB64-Inline-Assembler bietet vollständige x86-64-Assemblersprachenunterstützung in PowerBASIC-Quelldateien unter Verwendung von#ASM / #ENDASMDirektivenpaar. Es unterstützt über 1400 eindeutige Mnemoniken in allen wichtigen x86-64-ISA-Familien, 21 Operandenartenvarianten und 14 Adressierungsmodi.

Notiz:Alle Mnemoniken verwendenIntel-SyntaxReihenfolge (Ziel, Quelle), im Einklang mit den MASM/TASM-Konventionen.

Grundlegende Syntax

FUNCTION PBMAIN() AS LONG
    #ASM
        mov eax, 42
        mov ebx, eax
        add ebx, 10
        mov [result], ebx
    #ENDASM
    PRINT result
END FUNCTION

Assemblyblöcke können im Funktionsumfang oder innerhalb von Anweisungskörpern erscheinen. Sie werden direkt in den Codestream der Funktion ausgegeben.

Variablenzugriff mit {name}-Syntax

Der Zugriff auf PB-Variablen erfolgt innerhalb von ASM-Blöcken mithilfe der Notation in geschweiften Klammern. Der Assembler löst die Variable in ihren korrekten Stapelversatz oder ihre richtige globale Adresse auf und ersetzt die effektive Adresse in den Operanden.

FUNCTION Demo() AS LONG
    LOCAL x AS LONG
    LOCAL y AS LONG
    LOCAL z AS LONG
    x = 10
    y = 20

    #ASM
        mov eax, DWORD PTR [{x}]   ; load x (stack offset)
        mov ecx, DWORD PTR [{y}]   ; load y
        add eax, ecx
        mov DWORD PTR [{z}], eax   ; store to z
    #ENDASM

    PRINT z   ; prints 30
END FUNCTION

Variablenzugriff nach Typ

PB-ErklärungASM-ZugriffGröße
LOCAL n ALS BYTEBYTE PTR [{n}]1 Byte
LOCAL n ALS WORTWORD PTR [{n}]2 Bytes
LOCAL n ALS DWORDDWORD PTR [{n}]4 Bytes
LOCAL und SO LANGDWORD PTR [{n}]4 Bytes
LOCAL n AS QUADQWORD PTR [{n}]8 Byte
LOCAL n ALS INTEGERWORD PTR [{n}]2 Bytes
LOCAL n ALS EINZELDWORD PTR [{n}]4 Bytes (Float)
LOCAL n ALS DOPPELQWORD PTR [{n}]8 Bytes (doppelt)
LOCAL n AS STRINGQWORD PTR [{n}]8 Bytes (Datenptr)
LOCAL n AS STRINGQWORD PTR [LEN({n})]8 Byte (Länge)
LOCAL n AS STRINGQWORD PTR [STRPTR({n})]8 Bytes (Datenptr)

ASM-Makros

Der Assembler stellt integrierte Makros für die Selbstprüfung von PowerBASIC-Variablen bereit:

MakroBeschreibung
LEN(variable)Wird in den Längenfeldoffset einer Zeichenfolgenvariablen aufgelöst
STRPTR(variable)Wird zum Datenzeiger einer Zeichenfolgenvariablen aufgelöst
VARPTR(variable)Wird in die Adresse/den Offset einer beliebigen Variablen aufgelöst
SIZEOF(variable)Wird in die Kompilierzeitgröße einer Variablen oder eines Typs aufgelöst

Segmentüberschreibungen

Der Assembler unterstützt Segmentüberschreibungen für Thread-lokale Speicher- und Systemoperationen:

ÜberschreibenZweckBeispiel
fs:Windows TEB (Thread Environment Block)mov rax, QWORD PTR fs:[0x30]
gs:Windows PEB / x64 TLS-Basismov rax, gs:[0x60]

Adressierungsmodi

Der Assembler unterstützt 6 primäre Adressierungsmodi mit 21 Varianten der Operandenart:

  1. Registrierenmov eax, ebx
  2. Sofortmov eax, 42
  3. Direkter Speichermov eax, [12345678h]
  4. Basis + Verschiebungmov eax, [rbp-8]
  5. Basis + Indexmov eax, [rbx+rcx]
  6. Basis + Index*Skala + Verschiebungmov eax, [rbx+rcx*4+16]
  7. RIP-relativmov eax, [rip+label]

SehenReferenz zu Adressierungsmodifür alle Einzelheiten.

Unterstützte ISA-Familien

ISA-FamilieMnemonikReferenz
x86-64-Kern (GPR)~400Grundlegende Mnemonik
SSE/SSE2/SSE3/SSSE3/SSE4~300SSE-Mnemonik
AVX/AVX2/AVX-512/FMA~500AVX-Mnemonik
BMI1/BMI2~16BMI-Mnemonik
AES-NI / SHA / CLMUL / CRC32 / GFNI~30Krypto-Mnemonik
Systemanweisungen~50System-Mnemonik
SGX / VMX / CET~50SGX/VMX/CET
MMX~60MMX-Mnemonik
x87-FPU~80FPU-Mnemonik
Cache-Kontrolle~20Cache-Mnemonik

Richtlinien

Der Assembler unterstützt eine Vielzahl von Anweisungen für Ausrichtung, Nullinitialisierung und strukturierte Ausnahmebehandlung (SEH). SehenRichtlinienreferenzfür alle Einzelheiten.

Compiler-Version

Diese Referenz gilt für PBXB64 V32+ (Mai 2026). Die Assembler-Engine unterstützt über 1500 einzigartige Mnemoniken in allen ISA-Familien, überprüft durch die Laufzeittestsuite.

Category: Assembly

PBXB64 Status: Referenzthema fuer Assembler-Syntax und Familienhinweise; untergeordnete Instruktionsseiten und registrierte Tests liefern den endgueltigen Support-Nachweis.

Beschreibung

Dieses Assembler-Thema gruppiert PBXB64-x64-Assembler-Syntax, Direktiven, Adressierungsregeln oder Mnemonik-Familien. Behandeln Sie es als Navigation plus Nutzungshinweis, sofern keine Unterseite oder kein registrierter Test eine konkrete Instruktionsform belegt.

Prüfung der Instruktionsfamilie

Verwenden Sie diese Mnemonik-Übersichten als Einstieg in fokussierte Assembler-Tests. Eine vollständige Prüfung nennt CPU-Feature-Bit, Operandenbreite, Register- oder Speicherform, Flag-Auswirkungen und ob die Instruktion im Windows-x64-User-Mode gültig ist.

PBXB64-Integrationshinweise

Inline-Assembler muss die Windows-x64-Aufrufkonvention erhalten, wenn die Kontrolle zu compilererzeugtem Code zurückkehrt. Sichern Sie nichtflüchtige Register, halten Sie Stack-Alignment bei Aufrufen ein und dokumentieren Sie absichtlich veränderte Flags oder Register.

Validierungsbeleg

Validierungsbeleg: Verwenden Sie die registrierten Inline-Assembler- und Standalone-Assembler-Validierungsprogramme als Nachweis fuer konkrete unterstuetzte Instruktionsformen und nennen Sie die genaue Testdatei auf der Unterseite, wenn vorhanden.

Validierungsbeleg

Validierungsbeleg: Verwenden Sie die registrierten Inline-Assembler- und Standalone-Assembler-Validierungsprogramme als Nachweis fuer konkrete unterstuetzte Instruktionsformen und nennen Sie die genaue Testdatei auf der Unterseite, wenn vorhanden.

Validierungsbeleg

Validierungsbeleg: Verwenden Sie die registrierten Inline-Assembler- und Standalone-Assembler-Validierungsprogramme als Nachweis fuer konkrete unterstuetzte Instruktionsformen und nennen Sie die genaue Testdatei auf der Unterseite, wenn vorhanden.

Validierungsbeleg

Validierungsbeleg: Verwenden Sie die registrierten Inline-Assembler- und Standalone-Assembler-Validierungsprogramme als Nachweis fuer konkrete unterstuetzte Instruktionsformen und nennen Sie die genaue Testdatei auf der Unterseite, wenn vorhanden.

Validierungsbeleg

Validierungsbeleg: Verwenden Sie die registrierten Inline-Assembler- und Standalone-Assembler-Validierungsprogramme als Nachweis fuer konkrete unterstuetzte Instruktionsformen und nennen Sie die genaue Testdatei auf der Unterseite, wenn vorhanden.

Validierungsbeleg

Validierungsbeleg: Verwenden Sie die registrierten Inline-Assembler- und Standalone-Assembler-Validierungsprogramme als Nachweis fuer konkrete unterstuetzte Instruktionsformen und nennen Sie die genaue Testdatei auf der Unterseite, wenn vorhanden.

Validierungsbeleg

Validierungsbeleg: Verwenden Sie die registrierten Inline-Assembler- und Standalone-Assembler-Validierungsprogramme als Nachweis fuer konkrete unterstuetzte Instruktionsformen und nennen Sie die genaue Testdatei auf der Unterseite, wenn vorhanden.

Validierungsbeleg

Validierungsbeleg: Verwenden Sie die registrierten Inline-Assembler- und Standalone-Assembler-Validierungsprogramme als Nachweis fuer konkrete unterstuetzte Instruktionsformen und nennen Sie die genaue Testdatei auf der Unterseite, wenn vorhanden.

Validierungsbeleg

Validierungsbeleg: Verwenden Sie die registrierten Inline-Assembler- und Standalone-Assembler-Validierungsprogramme als Nachweis fuer konkrete unterstuetzte Instruktionsformen und nennen Sie die genaue Testdatei auf der Unterseite, wenn vorhanden.

Validierungsbeleg

Validierungsbeleg: Verwenden Sie die registrierten Inline-Assembler- und Standalone-Assembler-Validierungsprogramme als Nachweis fuer konkrete unterstuetzte Instruktionsformen und nennen Sie die genaue Testdatei auf der Unterseite, wenn vorhanden.

Validierungsbeleg

Validierungsbeleg: Verwenden Sie die registrierten Inline-Assembler- und Standalone-Assembler-Validierungsprogramme als Nachweis fuer konkrete unterstuetzte Instruktionsformen und nennen Sie die genaue Testdatei auf der Unterseite, wenn vorhanden.

Validierungsbeleg

Validierungsbeleg: Verwenden Sie die registrierten Inline-Assembler- und Standalone-Assembler-Validierungsprogramme als Nachweis fuer konkrete unterstuetzte Instruktionsformen und nennen Sie die genaue Testdatei auf der Unterseite, wenn vorhanden.

Validierungsbeleg

Validierungsbeleg: Verwenden Sie die registrierten Inline-Assembler- und Standalone-Assembler-Validierungsprogramme als Nachweis fuer konkrete unterstuetzte Instruktionsformen und nennen Sie die genaue Testdatei auf der Unterseite, wenn vorhanden.

Validierungsbeleg

Validierungsbeleg: Verwenden Sie die registrierten Inline-Assembler- und Standalone-Assembler-Validierungsprogramme als Nachweis fuer konkrete unterstuetzte Instruktionsformen und nennen Sie die genaue Testdatei auf der Unterseite, wenn vorhanden.

Validierungsbeleg

Validierungsbeleg: Verwenden Sie die registrierten Inline-Assembler- und Standalone-Assembler-Validierungsprogramme als Nachweis fuer konkrete unterstuetzte Instruktionsformen und nennen Sie die genaue Testdatei auf der Unterseite, wenn vorhanden.

Validierungsbeleg

Validierungsbeleg: Verwenden Sie die registrierten Inline-Assembler- und Standalone-Assembler-Validierungsprogramme als Nachweis fuer konkrete unterstuetzte Instruktionsformen und nennen Sie die genaue Testdatei auf der Unterseite, wenn vorhanden.

Validierungsbeleg

Validierungsbeleg: Verwenden Sie die registrierten Inline-Assembler- und Standalone-Assembler-Validierungsprogramme als Nachweis fuer konkrete unterstuetzte Instruktionsformen und nennen Sie die genaue Testdatei auf der Unterseite, wenn vorhanden.

Validierungsbeleg

Validierungsbeleg: Verwenden Sie die registrierten Inline-Assembler- und Standalone-Assembler-Validierungsprogramme als Nachweis fuer konkrete unterstuetzte Instruktionsformen und nennen Sie die genaue Testdatei auf der Unterseite, wenn vorhanden.

Validierungsbeleg

Validierungsbeleg: Verwenden Sie die registrierten Inline-Assembler- und Standalone-Assembler-Validierungsprogramme als Nachweis fuer konkrete unterstuetzte Instruktionsformen und nennen Sie die genaue Testdatei auf der Unterseite, wenn vorhanden.

Validierungsbeleg

Validierungsbeleg: Verwenden Sie die registrierten Inline-Assembler- und Standalone-Assembler-Validierungsprogramme als Nachweis fuer konkrete unterstuetzte Instruktionsformen und nennen Sie die genaue Testdatei auf der Unterseite, wenn vorhanden.

Validierungsbeleg

Validierungsbeleg: Verwenden Sie die registrierten Inline-Assembler- und Standalone-Assembler-Validierungsprogramme als Nachweis fuer konkrete unterstuetzte Instruktionsformen und nennen Sie die genaue Testdatei auf der Unterseite, wenn vorhanden.

Validierungsbeleg

Validierungsbeleg: Verwenden Sie die registrierten Inline-Assembler- und Standalone-Assembler-Validierungsprogramme als Nachweis fuer konkrete unterstuetzte Instruktionsformen und nennen Sie die genaue Testdatei auf der Unterseite, wenn vorhanden.

Validierungsbeleg

Validierungsbeleg: Verwenden Sie die registrierten Inline-Assembler- und Standalone-Assembler-Validierungsprogramme als Nachweis fuer konkrete unterstuetzte Instruktionsformen und nennen Sie die genaue Testdatei auf der Unterseite, wenn vorhanden.

Validierungsbeleg

Validierungsbeleg: Verwenden Sie die registrierten Inline-Assembler- und Standalone-Assembler-Validierungsprogramme als Nachweis fuer konkrete unterstuetzte Instruktionsformen und nennen Sie die genaue Testdatei auf der Unterseite, wenn vorhanden.

Typisches x86-64-Stack-Layout mit RSP- und RBP-Referenzen.

Typisches x86-64-Stack-Layout mit RSP- und RBP-Referenzen.