AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi ASM - Compiler erstellt überflüssigen Code?
Thema durchsuchen
Ansicht
Themen-Optionen

ASM - Compiler erstellt überflüssigen Code?

Ein Thema von dizzy · begonnen am 25. Feb 2005 · letzter Beitrag vom 25. Feb 2005
Antwort Antwort
Seite 2 von 2     12   
jbg

Registriert seit: 12. Jun 2002
3.483 Beiträge
 
Delphi 10.1 Berlin Professional
 
#11

Re: ASM - Compiler erstellt überflüssigen Code?

  Alt 25. Feb 2005, 15:08
Zitat von Dax:
Ich bastele schon ein paar Wochen an einer Möglichkeit, Schreibrechte auf's Codesegment zu bekommen, bis jetzt hatte ich keinen Erfolg
Das ist doch das die leichteste Übung: VirtualProtect + WriteProcessMemory.
  Mit Zitat antworten Zitat
Dax
(Gast)

n/a Beiträge
 
#12

Re: ASM - Compiler erstellt überflüssigen Code?

  Alt 25. Feb 2005, 15:09
Die Kombination hab' ich noch nicht ausprobiert, weil VirtualProtect bei mir aus irgendeinem Grund immer fehlschlug.. Hab' wohl falsche Parameter übergeben

// Edit

@dizzy: Ein CALL ist ein pushen des nächsten EIPs auf den Stack und ein JMP in die angegeben Adresse. Probier mal mit meiner Funktion von oben rum, da dürfte ein Vorteil bemerkbar sein.
  Mit Zitat antworten Zitat
Benutzerbild von retnyg
retnyg

Registriert seit: 12. Feb 2005
193 Beiträge
 
#13

Re: ASM - Compiler erstellt überflüssigen Code?

  Alt 25. Feb 2005, 15:12
Zitat von jbg:
Zitat von retnyg:
vielleicht verwendet er in seinem source 3 variablen vom typ byte ?
Vielleicht, aber Variablen liegen nicht im CodeSegment (Readable, not Writable, Executable), sondern im Datensegment (Readable, Writeable, not Executable). Denn was bringt einem eine nicht beschreibbare Variable? Das kann höchstens eine Konstante sein, und die liegt gewiss nicht an dieser Stelle, sondern vereint bei allen anderen Konstanten.
hmm ich habe aber schon festgestellt dass delphi an den code einer prozedur pointer auf die variablen, welche in dieser vorkommen, anhängt
  Mit Zitat antworten Zitat
Dax
(Gast)

n/a Beiträge
 
#14

Re: ASM - Compiler erstellt überflüssigen Code?

  Alt 25. Feb 2005, 15:14
Das könnte ein Hint für den Debugger sein, damit er die Variablen für die Watches und den Evaluater/Modifier findet. Wenns das nicht ist, sind diese Bytes nur für Alignment zu gebrauchen.
  Mit Zitat antworten Zitat
jbg

Registriert seit: 12. Jun 2002
3.483 Beiträge
 
Delphi 10.1 Berlin Professional
 
#15

Re: ASM - Compiler erstellt überflüssigen Code?

  Alt 25. Feb 2005, 15:17
Zitat von retnyg:
hmm ich habe aber schon festgestellt dass delphi an den code einer prozedur pointer auf die variablen, welche in dieser vorkommen, anhängt
Wäre mir neu. Beispiel? (=Beweis)
  Mit Zitat antworten Zitat
jbg

Registriert seit: 12. Jun 2002
3.483 Beiträge
 
Delphi 10.1 Berlin Professional
 
#16

Re: ASM - Compiler erstellt überflüssigen Code?

  Alt 25. Feb 2005, 15:22
Zitat von dizzy:
Also tatsächlich wirklich Alignment... ist ja nen Dingen! Hat das wirklich merkbaren Einfluss auf die Geschwindigkeit?
Ja, denn es macht einen rießen Unterschied, ob man zwei Speicherzugriffe braucht, um den nächsten Befehl zu laden, oder nur einen. Wenn die nächste Anweisung auf Adresse $0001 liegt, denn muss zuerst das DWORD von $0000-$0003 gelesen werden und dann $0004-0007. Daraus muss dann noch von $0001-$0004 das DWORD ermittelt werden. Und das geschieht auch, wenn man nur einen 1 Byte Befehl hat, da der L1/2-Cache eben auf DWORD oder sogar auf QWORD ausgelegt ist.

[EDIT]
Ich hoffe ich erzähle hier jetzt keinen Stuss. Das ist jetzt auch schon eine Weile her, das ich das gelernt und ausprobiert habe.
  Mit Zitat antworten Zitat
Benutzerbild von retnyg
retnyg

Registriert seit: 12. Feb 2005
193 Beiträge
 
#17

Re: ASM - Compiler erstellt überflüssigen Code?

  Alt 25. Feb 2005, 15:27
beweis: der wert den MOV an dieser Stelle in EDX schreibt ist die markierte position, welche dem string 'test' hardcoded entspricht.
Miniaturansicht angehängter Grafiken
cpu2_971.gif  
  Mit Zitat antworten Zitat
Benutzerbild von dizzy
dizzy

Registriert seit: 26. Nov 2003
Ort: Lünen
1.932 Beiträge
 
Delphi 7 Enterprise
 
#18

Re: ASM - Compiler erstellt überflüssigen Code?

  Alt 25. Feb 2005, 15:40
Also ließe sich (imho) folgernd feststellen:

Delphi ist so genial, dass es Code so ausrichtet, dass er möglichst performant ausgeführt wird. Die dafür nötigen Paddings nutzt er zudem für potentielle Debug-Infos, was die Sache ganz schön schlau erscheinen lässt .

Kommt das hin?
Fabian K.
INSERT INTO HandVonFreundin SELECT * FROM Himmel
  Mit Zitat antworten Zitat
NicoDE
(Gast)

n/a Beiträge
 
#19

Re: ASM - Compiler erstellt überflüssigen Code?

  Alt 25. Feb 2005, 17:24
Zitat von dizzy:
[...] Die dafür nötigen Paddings nutzt er zudem für potentielle Debug-Infos, was die Sache ganz schön schlau erscheinen lässt .
Das möchte ich bezweifeln (ohne Compiler-Quelltext habe ich keine Beweise) - ich vermute es handelt um Datenschrott aus dem Compile-Prozess. ('anderere' Compiler schreiben dort teilweise Breakpoints (int3), 0x00 oder 0x90 (nop) hin)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 08:44 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