![]() |
Assembler-Opcodes in Delphi 7 verwenden
Ich versuche gerade eine Funktion zu schreiben die überprüft, ob CPU und Betriebssystem
die Ausführung von SSE3-Befehlen erlauben. Laut Intel Referenz führt man einfach einen SSE3 Befehl in einem TRY/EXCEPT-Block aus, um zu sehen ob das System eine Exception auslöst und eine ungültige Anweisung bemängelt. Leider kennt Delphi7 die Mnemonics des SSE3-Befehlssatz noch nicht. Es müsste aber möglich sein die Anweisung direkt als Opcode einzugeben:
Delphi-Quellcode:
DD definiert ein DWORD das der Compiler unverändert speichert.
function SSE3: Boolean;
begin try asm DD 0660FD0C0h; //ADDSUBPD XMM0, XMM0 (Ist das korrekt umgesetzt?) end; Result := True; //SSE3 wird untersützt except Result := False; //Keine SSE3 Unterstützung end; end; 66 0F D0 ist der Opcode für ADDSUBPD, C0 ist der Opcode für die Operanden XMM0, XMM0 Weiß einer ob das richtig ist/funktioniert? Unsicher bin ich bei der Reihenfolge der Bytes (Intel Speicherformat). Wenn ich vier einzelne BYTE (DB) oder ein DWORD (DD) angebe gibt es keinen Fehler (der Opcode scheint auch rückwärts für den Prozessor sinnvollzu sein). Wenn ich zwei WORD definiere gibt es eine Schutzverletzung. Bin dankbar für jeden Hinweis... |
Re: Assembler-Opcodes in Delphi 7 verwenden
So:
Delphi-Quellcode:
asm
DB $06, $60, $FD0, $C0; end; |
Re: Assembler-Opcodes in Delphi 7 verwenden
Danke erstmal...
Zitat:
Meintest du das:
Delphi-Quellcode:
So wirds auch von Delphi angenommen:
asm
DB $66, $0F $D0, $C0; end;
Delphi-Quellcode:
Hauptsache die Bytes werden in der richtigen Reihenfolge gespeichert...
asm
DB 066h //Die erste "0" muß davor gestellt werden damit DB 00Fh //Delphi den Wert als Hexwert akzeptiert DB 0D0h //Ist aber nur zwingend erforderlich wenn der DB 0COh //Hexwert mit einem Buchstaben (A-F) beginnt end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:10 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz