AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Assembler-Opcodes in Delphi 7 verwenden
Thema durchsuchen
Ansicht
Themen-Optionen

Assembler-Opcodes in Delphi 7 verwenden

Ein Thema von skyobserver · begonnen am 4. Jun 2005 · letzter Beitrag vom 4. Jun 2005
Antwort Antwort
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, 20: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
Dax
(Gast)

n/a Beiträge
 
#2

Re: Assembler-Opcodes in Delphi 7 verwenden

  Alt 4. Jun 2005, 20:46
So:
Delphi-Quellcode:
asm
  DB $06, $60, $FD0, $C0;
end;
  Mit Zitat antworten Zitat
Benutzerbild von skyobserver
skyobserver

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

Re: Assembler-Opcodes in Delphi 7 verwenden

  Alt 4. Jun 2005, 21:39
Danke erstmal...
Zitat:
DB $06, $60, $FD0, $C0;
Wieso sind da drei Nibbles in deinem dritten Datenwort?

Meintest du das:
Delphi-Quellcode:
asm
  DB $66, $0F $D0, $C0;
end;
So wirds auch von Delphi angenommen:
Delphi-Quellcode:
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;
Hauptsache die Bytes werden in der richtigen Reihenfolge gespeichert...
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:22 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz