AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Assembler - Register dynamisch bestimmen.
Thema durchsuchen
Ansicht
Themen-Optionen

Assembler - Register dynamisch bestimmen.

Ein Thema von markus888 · begonnen am 16. Apr 2020 · letzter Beitrag vom 22. Mai 2020
Antwort Antwort
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.372 Beiträge
 
Delphi 12 Athens
 
#1

AW: Assembler - Register dynamisch bestimmen.

  Alt 17. Apr 2020, 02:20
Und wer Cracker die Debugger nutzten ärgern wollte baute viele Int3 Aufrufe ein. Soweit ich weiß
fungierte Int3 nämlich als Breakpoint...
Ist immernoch so und ist einer der wenigen Interupts, die man im Usermode jetzt noch benutzen kann, neben der passenden Winapi MSDN-Library durchsuchenDebugBreak, welches intern auch gleich noch mit Bei Google suchenIsDebuggerPresent prüft.
z.B. als Inline-Assembler asm int 3 end; mittten im Delphi-Code (Win32). In Win64 so nicht mehr, da es dort kein Inline-Assembler gibt. (nur noch komplette Methoden)
Nur wenn kein Debugger dran hängt, dann raucht das natürlich mit einer Exception ab.

Und das MSDN-Library durchsuchenFlushInstructionCache ist für modernere CPUs, welche den Befehlscode cachen, bzw. sich die nächsten Befehle schonmal vorab kopieren.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
markus888

Registriert seit: 23. Dez 2018
46 Beiträge
 
#2

AW: Assembler - Register dynamisch bestimmen.

  Alt 17. Apr 2020, 09:27
Und das MSDN-Library durchsuchenFlushInstructionCache ist für modernere CPUs, welche den Befehlscode cachen, bzw. sich die nächsten Befehle schonmal vorab kopieren.
Wenn ich die FlushInstructionCache brauche, ist das für mich schon eher wieder uninteressant.

Ich muss ja in jeder Schleife Code ändern.
Abgesehen davon, dass FlushInstructionCache mir dann noch zusätzlich die Inhalte von Registern ändern wird, was den gesamten Overhead dann noch vergrößert.
Da wird es wohl weit effizienter sein, ich verzichte auf den Luxus.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.372 Beiträge
 
Delphi 12 Athens
 
#3

AW: Assembler - Register dynamisch bestimmen.

  Alt 17. Apr 2020, 10:24
Zitat:
muss ja in Schleife Code ändern
Da würde mir eher zu denken geben, ob da mit dem Konzept was nicht stimmen mag.

Zitat:
Da wird es wohl weit effizienter sein, ich verzichte auf den Luxus.
Dann heul aber auch nicht rum, wenn die CPU dann was anderes macht, als jetzt dort steht.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
markus888

Registriert seit: 23. Dez 2018
46 Beiträge
 
#4

AW: Assembler - Register dynamisch bestimmen.

  Alt 18. Apr 2020, 11:57
Zitat:
Da wird es wohl weit effizienter sein, ich verzichte auf den Luxus.
Dann heul aber auch nicht rum, wenn die CPU dann was anderes macht, als jetzt dort steht.
Mit verzichten meinte ich VirtualProtect, nicht dass du das falsch verstehst.
Aber wie gesagt bin ich noch in der Phase mich vertieft mit asm zu beschäftigen.
Danke jedenfalls für die guten Hinweise.
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#5

AW: Assembler - Register dynamisch bestimmen.

  Alt 18. Apr 2020, 19:26
Wenn du auf VirtualProtect verzichtest wird es zu 100% nicht funktionieren.
VirtualProtect ist auch wirklich nicht kompliziert. Du gibst die Speicheradresse an und dann welchen Zugriff (lesen/schreiben/ausführen) du brauchst.
und Codesegmente sind standardmäßig lesen + ausführen. Wenn du da was ändern willst musst du den Bereich auch noch schreibbar machen.
Und dann machst du wenn du fertig bist den Speicher wieder readonly + ausführbar wie er anfangs war (optional).
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
markus888

Registriert seit: 23. Dez 2018
46 Beiträge
 
#6

AW: Assembler - Register dynamisch bestimmen.

  Alt 19. Apr 2020, 11:47
Wenn du auf VirtualProtect verzichtest wird es zu 100% nicht funktionieren.
VirtualProtect ist auch wirklich nicht kompliziert.
Es geht nicht um kompliziert.
VirtualProtect ist ein interessanter Ansatz, dennoch ist es aus jetziger Sicht effizienter jede Konstellation zu coden.
  Mit Zitat antworten Zitat
markus888

Registriert seit: 23. Dez 2018
46 Beiträge
 
#7

AW: Assembler - Register dynamisch bestimmen.

  Alt 22. Mai 2020, 11:28
Übrigens habe ich jetzt bemerkt, dass man die ASM AVX Befehlsssätze nutzen kann, wenn man die Opcodes direkt eingibt.
Es reicht also ein simpler Übersetzer, der die Opcodes liefert.

Man muss halt ohne Unterstützung des Compilers arbeiten.
Der Code funktioniert aber problemlos.

Gibts eigentlich Aussicht darauf, dass der Compiler die AVX Befehle unterstützt.
Immerhin gibts die doch schon seit vielen Jahren. Oder ist Delphi da generell immer 10 Jahre hinten?

LG Markus
  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 16:55 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