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.
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.
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.
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
| PB-Erklärung | ASM-Zugriff | Größe |
|---|---|---|
| LOCAL n ALS BYTE | BYTE PTR [{n}] | 1 Byte |
| LOCAL n ALS WORT | WORD PTR [{n}] | 2 Bytes |
| LOCAL n ALS DWORD | DWORD PTR [{n}] | 4 Bytes |
| LOCAL und SO LANG | DWORD PTR [{n}] | 4 Bytes |
| LOCAL n AS QUAD | QWORD PTR [{n}] | 8 Byte |
| LOCAL n ALS INTEGER | WORD PTR [{n}] | 2 Bytes |
| LOCAL n ALS EINZEL | DWORD PTR [{n}] | 4 Bytes (Float) |
| LOCAL n ALS DOPPEL | QWORD PTR [{n}] | 8 Bytes (doppelt) |
| LOCAL n AS STRING | QWORD PTR [{n}] | 8 Bytes (Datenptr) |
| LOCAL n AS STRING | QWORD PTR [LEN({n})] | 8 Byte (Länge) |
| LOCAL n AS STRING | QWORD PTR [STRPTR({n})] | 8 Bytes (Datenptr) |
Der Assembler stellt integrierte Makros für die Selbstprüfung von PowerBASIC-Variablen bereit:
| Makro | Beschreibung |
|---|---|
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 |
Der Assembler unterstützt Segmentüberschreibungen für Thread-lokale Speicher- und Systemoperationen:
| Überschreiben | Zweck | Beispiel |
|---|---|---|
fs: | Windows TEB (Thread Environment Block) | mov rax, QWORD PTR fs:[0x30] |
gs: | Windows PEB / x64 TLS-Basis | mov rax, gs:[0x60] |
Der Assembler unterstützt 6 primäre Adressierungsmodi mit 21 Varianten der Operandenart:
mov eax, ebxmov eax, 42mov eax, [12345678h]mov eax, [rbp-8]mov eax, [rbx+rcx]mov eax, [rbx+rcx*4+16]mov eax, [rip+label]SehenReferenz zu Adressierungsmodifür alle Einzelheiten.
| ISA-Familie | Mnemonik | Referenz |
|---|---|---|
| x86-64-Kern (GPR) | ~400 | Grundlegende Mnemonik |
| SSE/SSE2/SSE3/SSSE3/SSE4 | ~300 | SSE-Mnemonik |
| AVX/AVX2/AVX-512/FMA | ~500 | AVX-Mnemonik |
| BMI1/BMI2 | ~16 | BMI-Mnemonik |
| AES-NI / SHA / CLMUL / CRC32 / GFNI | ~30 | Krypto-Mnemonik |
| Systemanweisungen | ~50 | System-Mnemonik |
| SGX / VMX / CET | ~50 | SGX/VMX/CET |
| MMX | ~60 | MMX-Mnemonik |
| x87-FPU | ~80 | FPU-Mnemonik |
| Cache-Kontrolle | ~20 | Cache-Mnemonik |
Der Assembler unterstützt eine Vielzahl von Anweisungen für Ausrichtung, Nullinitialisierung und strukturierte Ausnahmebehandlung (SEH). SehenRichtlinienreferenzfür alle Einzelheiten.
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.
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.
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.
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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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.