Einzelnen Beitrag anzeigen

Benutzerbild von skyobserver
skyobserver

Registriert seit: 18. Mai 2005
Ort: Ense
114 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#1

Assembler-Opcodes in Delphi 7 verwenden

  Alt 4. Jun 2005, 21:25
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:
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;
DD definiert ein DWORD das der Compiler unverändert speichert.
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...
  Mit Zitat antworten Zitat