AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi 2 zeilen asm code der in delphi code umgewandelt werden soll
Thema durchsuchen
Ansicht
Themen-Optionen

2 zeilen asm code der in delphi code umgewandelt werden soll

Ein Thema von DOCa Cola · begonnen am 28. Jun 2009 · letzter Beitrag vom 29. Jun 2009
Antwort Antwort
DOCa Cola

Registriert seit: 27. Feb 2006
5 Beiträge
 
#1

2 zeilen asm code der in delphi code umgewandelt werden soll

  Alt 28. Jun 2009, 22:05
ich habe versuch folgenden asm code in delphi nachzubauen, nur ich komme nicht so ganz darauf, wie ich den in der hochsprache umsetzen soll.
der linke wert ist ein long bzw integer bei dem diverse bit flags gesetzt sind. anhand dieses vergleichs soll dann eben code ausgeführt werden oder nicht. das der vergleich in der asm version nur mit dem ersten byte erfolgt ist wohl ganz einfach eine compiler optimierung
Code:
TEST BYTE PTR DS:[ECX+1D4], 0C0
JE *adresse*
ich habe versucht es in delphi so umzusetzen:
if (m_objType and $c0) = $c0 then aber ich denke mein code ist eine falsche "übersetzung", da er sich anders verhält. wenn m_objType zum beispiel mit $0AE0189A gefüllt ist (der asm code vergleicht hier also mit 9A), führt der asm code oben den sprung nicht durch - also der code wird ausgeführt - während meine umsetzung den code überspringt (da das ergebnis von if false ist)
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.648 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: 2 zeilen asm code der in delphi code umgewandelt werden

  Alt 28. Jun 2009, 22:08
Crosspost inkl. Antwort... (keine Geduld... und dann nichtmal den Crosspost angeben... )
http://www.delphi-forum.de/viewtopic.php?p=569146
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
DOCa Cola

Registriert seit: 27. Feb 2006
5 Beiträge
 
#3

Re: 2 zeilen asm code der in delphi code umgewandelt werden

  Alt 28. Jun 2009, 22:10
stimmt, jetzt weis ich was ich vergessen habe. danke für deine mühe
  Mit Zitat antworten Zitat
Satty67

Registriert seit: 24. Feb 2007
Ort: Baden
1.566 Beiträge
 
Delphi 2007 Professional
 
#4

Re: 2 zeilen asm code der in delphi code umgewandelt werden

  Alt 28. Jun 2009, 22:15
Assembler ist jetzt gar nicht meine Stärke, würde es aber eher so umsetzen
if (m_objType and 255) = $c0 then
  Mit Zitat antworten Zitat
DOCa Cola

Registriert seit: 27. Feb 2006
5 Beiträge
 
#5

Re: 2 zeilen asm code der in delphi code umgewandelt werden

  Alt 28. Jun 2009, 22:24
Zitat von Satty67:
Assembler ist jetzt gar nicht meine Stärke, würde es aber eher so umsetzen
if (m_objType and 255) = $c0 then
ja, stimmt. das scheint auch so zu funktionieren wie der code den ich geschrieben habe, nur leider nicht wie der beschriebene assembly code...
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.648 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: 2 zeilen asm code der in delphi code umgewandelt werden

  Alt 28. Jun 2009, 22:38
Naja, was heißt nicht wie der Assemblercode... der Ablauf ist eben unterschiedlich...
Delphi:
Delphi-Quellcode:
if Bitsgesetzt then
begin
  // Bits gesetzt
end
else
begin
  // Bits nicht gesetzt
end;
Assembler:
Code:
test ... // Bits gesetzt?
je Sprungziel
... // Bits nicht gesetzt
Sprungziel:
... // Bits gesetzt
Das heißt wie ich im DF schon geschrieben habe: Die Logik ist eben genau umgekehrt, deshalb der Hinweis auf <> statt = ...
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
DOCa Cola

Registriert seit: 27. Feb 2006
5 Beiträge
 
#7

Re: 2 zeilen asm code der in delphi code umgewandelt werden

  Alt 29. Jun 2009, 00:25
so, die lösung ist das man die werte auf diese weise verwendet, dann generiert delphi auch ähnlichen asm code
if (m_objType and $c0) > 0 then trotzdem vielen dank für die unterstützung!
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.648 Beiträge
 
Delphi 11 Alexandria
 
#8

Re: 2 zeilen asm code der in delphi code umgewandelt werden

  Alt 29. Jun 2009, 00:27
Damit prüfst du, ob eines der angegebenen Bits gesetzt ist. Nicht, ob alle gesetzt sind.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
DOCa Cola

Registriert seit: 27. Feb 2006
5 Beiträge
 
#9

Re: 2 zeilen asm code der in delphi code umgewandelt werden

  Alt 29. Jun 2009, 00:29
ja, das scheint der asm code oben auch zu machen, da lag mein (denk)fehler, aber da wir anscheinend alle zu wenig asm kenntnisse haben ist das niemandem aufgefallen
  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 18:39 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