Autor |
Beitrag |
MagicRain 
      
Beiträge: 154
WinXp, Win8, iOS
Delphi 7, Lazarus Pascal, Delphi 10.2 Starter, NetBeans Java
|
Verfasst: Fr 24.07.09 00:20
Joa da hast du wohl recht  aber was mach ich wenn ich was coden will was es in Delphi nicht gibt aber in assambler schon oO?
|
|
HelgeLange
      
Beiträge: 735
Erhaltene Danke: 6
Windows 7
Delphi7 - Delphi XE
|
Verfasst: Fr 24.07.09 03:19
_________________ "Ich bin bekannt für meine Ironie. Aber auf den Gedanken, im Hafen von New York eine Freiheitsstatue zu errichten, wäre selbst ich nicht gekommen." - George Bernhard Shaw
|
|
Flamefire
      
Beiträge: 1207
Erhaltene Danke: 31
Win 10
Delphi 2009 Pro, C++ (Visual Studio)
|
Verfasst: Fr 24.07.09 09:35
MagicRain hat folgendes geschrieben : | Ach.. wenn ich das xor weg nehme läuft das app nicht weil iein shit wert in edx steckt ohne es...inlineasm rockz |
ähm...
EDX=32Bit register
du schiebst buffer rein-->32bit wert
was soll da den wert verfälschen?
|
|
MagicRain 
      
Beiträge: 154
WinXp, Win8, iOS
Delphi 7, Lazarus Pascal, Delphi 10.2 Starter, NetBeans Java
|
Verfasst: Fr 24.07.09 11:01
Ich hatte nur eine frage bzw problem und wollte da gerne hilfe haben das ich kein Delphi pro bin weiß ich selber aber ihr konntet ja alles gleich ohne zu Lehnen nech man nicht schlecht! Mir hätte es gelangt einfach bei meinem Problem zu helfen und nicht ob es gut ist oder was auch immer 
|
|
BenBE
      
Beiträge: 8721
Erhaltene Danke: 191
Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
|
Verfasst: Fr 24.07.09 12:35
Beim Programmieren sollte man immer auch auf den Stil achten und nicht nur, ob es funktioniert. Ob es funktioniert und korrekt ist sind zwar wichtige Punkte, bei weitem aber nicht die einzigen ...
_________________ Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
|
|
MagicRain 
      
Beiträge: 154
WinXp, Win8, iOS
Delphi 7, Lazarus Pascal, Delphi 10.2 Starter, NetBeans Java
|
Verfasst: Fr 24.07.09 12:55
Ja das stimmt natürlich ja ich weiß wohl was ihr meint naja ihr habt ja recht....dann haben wir es ja jetzt 
|
|
Flamefire
      
Beiträge: 1207
Erhaltene Danke: 31
Win 10
Delphi 2009 Pro, C++ (Visual Studio)
|
Verfasst: Fr 24.07.09 15:25
letzte anmerkung:
MagicRain hat folgendes geschrieben : | Joa da hast du wohl recht aber was mach ich wenn ich was coden will was es in Delphi nicht gibt aber in assambler schon oO? |
Wie jetzt?
Hab bisher viele Programm reverst...es gab immer ein Delphi Äquivalent
|
|
MagicRain 
      
Beiträge: 154
WinXp, Win8, iOS
Delphi 7, Lazarus Pascal, Delphi 10.2 Starter, NetBeans Java
|
Verfasst: Fr 24.07.09 15:28
Das zeig mir mal.... 
|
|
Flamefire
      
Beiträge: 1207
Erhaltene Danke: 31
Win 10
Delphi 2009 Pro, C++ (Visual Studio)
|
Verfasst: Fr 24.07.09 15:58
andersrum:
Du hast behauptet, es gäbe etwas in ASM das delphi nicht hat
Sprich-->eine existenz behauptung
ich behaupte alles in asm geht auch in delphi
Sprich-->AllQuantifiziert
es ist einfacher ein gegenbeispiel zu finden, als alle ASM Befehle aufzuführen
Also finde einen ASM befehl zu dem ich kein Delphi äquivalent finde!
|
|
BenBE
      
Beiträge: 8721
Erhaltene Danke: 191
Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
|
Verfasst: Fr 24.07.09 21:46
Flamefire hat folgendes geschrieben : | andersrum:
Du hast behauptet, es gäbe etwas in ASM das delphi nicht hat
Sprich-->eine existenz behauptung
ich behaupte alles in asm geht auch in delphi
Sprich-->AllQuantifiziert |
k, dann schreib mir mal bitte folgende Funktionalitäten in Delphi:
- asm RDTSC end;
- asm CPUID end;
- asm RDMSR; WRMSR end;
Flamefire hat folgendes geschrieben : | es ist einfacher ein gegenbeispiel zu finden, als alle ASM Befehle aufzuführen
Also finde einen ASM befehl zu dem ich kein Delphi äquivalent finde! |
Weil aller guten Dinge 3 sind:
- asm IRET end;
- asm CLI end;
- asm STI end;
Und dazu hab ich jetzt grad nicht das Handbuch "Assembler Ge-Packt", was links neben mir steht bemüht. Hätte ich das getan, wären hier sicherlich noch ein paar mehr Sachen aufgeführt ...
_________________ Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
|
|
MagicRain 
      
Beiträge: 154
WinXp, Win8, iOS
Delphi 7, Lazarus Pascal, Delphi 10.2 Starter, NetBeans Java
|
Verfasst: Fr 24.07.09 22:01
Tja da bin ich dann ja mal sehr gespannt oh ja  Dann zeig mal was du kannst aber du machst das ja in paar sekunden fertig nech?
|
|
Flamefire
      
Beiträge: 1207
Erhaltene Danke: 31
Win 10
Delphi 2009 Pro, C++ (Visual Studio)
|
Verfasst: Fr 24.07.09 23:02
ach komm magicrain. als wüsstest du was die instruktionen machen
nein ok. RDTSC sollte meiner meinung nach irgendwie richtung QueryPerformanceCounter gehen
aber gut ich gebe zu, bei diesen instruktionen finde ich grade nichts in delphi.
Allerdings 2 dinge: z.B. IRET usw. wird vermutlich in keinem delphi programm gebraucht. denke da eher an verwendung in treibern o.ä. die man dann eh in asm schreiben wird, oder?
2) ist es möglich, dass es möglichkeiten dafür auch in delphi gibt, aber halt etwas anders. in diesem fall geht es vermutlich 1:1 nicht (müsste zu lange suchen um es sicher zu sagen) vl ist es auch so wie der TEST befehl, der ohne den folgenden Jump auch nicht in delphi zu übersetzen ist.
trotzdem bleibt dabei: ein normales programm, dass man als asm vorliegen hat, kann man zu 99% in pure Delphi übersetzen.
|
|
MagicRain 
      
Beiträge: 154
WinXp, Win8, iOS
Delphi 7, Lazarus Pascal, Delphi 10.2 Starter, NetBeans Java
|
Verfasst: Sa 25.07.09 04:31
bla bla bla.....mach mal weiter auf dicke hose du held...ich halt mich da jetzt raus muss ich mir net geben...
|
|
elundril
      
Beiträge: 3747
Erhaltene Danke: 123
Windows Vista, Ubuntu
Delphi 7 PE "Codename: Aurora", Eclipse Ganymede
|
Verfasst: Sa 25.07.09 07:16
BenBE hat folgendes geschrieben : |
- asm RDTSC end;
|
Instruction RDTSC returns the TSC in EDX:EAX. => Imho Äquivalent zu GetTickCount oder?
_________________ This Signature-Space is intentionally left blank.
Bei Beschwerden, bitte den Beschwerdebutton (gekennzeichnet mit PN) verwenden.
|
|
BenBE
      
Beiträge: 8721
Erhaltene Danke: 191
Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
|
Verfasst: Sa 25.07.09 11:41
Flamefire hat folgendes geschrieben : | ach komm magicrain. als wüsstest du was die instruktionen machen  |
Dafür gibt's Dokumentation
elundril hat folgendes geschrieben : | BenBE hat folgendes geschrieben : |
- asm RDTSC end;
|
Instruction RDTSC returns the TSC in EDX:EAX. => Imho Äquivalent zu GetTickCount oder? |
Nope. GetTickCount liefert einen völlig anderen Wert. Mit Zeitmessung hat's aber was zu tun
Flamefire hat folgendes geschrieben : | nein ok. RDTSC sollte meiner meinung nach irgendwie richtung QueryPerformanceCounter gehen |
Was denkst Du, was QueryPerformanceCounter intern aufruft
In Delphi kannst Du somit die Funktion nur nutzen, weil sie einmal in ASM geschrieben wurde.
Flamefire hat folgendes geschrieben : | aber gut ich gebe zu, bei diesen instruktionen finde ich grade nichts in delphi. |
Stammen alle aus der Kernel-Mode-Programmierung. Sicherlich, das war etwas gemein, Kernel-Mode-Programmierung von ASM anzuführen, für etwas, was in Delphi nicht geht; prinzipiell (und das hat uall@ogc gezeigt) gehen Kernel-Mode-Geschichten aber auch mit Delphi, wenn man weiß, was man tut.
Flamefire hat folgendes geschrieben : | Allerdings 2 dinge: z.B. IRET usw. wird vermutlich in keinem delphi programm gebraucht. denke da eher an verwendung in treibern o.ä. die man dann eh in asm schreiben wird, oder? |
Treiber werden üblicherweise in C implementiert, wobei nur da, wo's notwendig ist mal eben ein paar Zeilen mit ASM gehackt werden. Schau Dir die Sources vom Linux-Kernel an: Das ist nahezu ausschließlich C-Code.
Flamefire hat folgendes geschrieben : | 2) ist es möglich, dass es möglichkeiten dafür auch in delphi gibt, aber halt etwas anders. |
Die uallCollection wäre eine davon. Erfordert aber ein wenig Wissen darüber, was man tut.
Flamefire hat folgendes geschrieben : | in diesem fall geht es vermutlich 1:1 nicht (müsste zu lange suchen um es sicher zu sagen) |
Keiner der genannten Befehle kann in Delphi übersetzt werden, da die ersten 3 Befehle auf Spezialregister der CPU zugreifen (Das TSC ist nur ein weiteres MSR - Model Specific Register). Bei den letzten 3 Befehlen handelt es sich um Befehle zur Interrupt-Steuerung - auch das ein Bereich, für den es in Delphi keine Umsetzung gibt. Vergleichbar wären hier noch Critical Sections, die jedoch intern über Sprünge in den Kernel-Mode bzw. Interrupt-Sperren implementiert sind.
Flamefire hat folgendes geschrieben : | vl ist es auch so wie der TEST befehl, der ohne den folgenden Jump auch nicht in delphi zu übersetzen ist. |
Der Test-Befehl ist ohne Probleme in Delphi übersetzbar: Var1-Var2. Wichtig ist hier für eine konkrete Übersetzung aber der Kontext. Und um es vorwegzunehmen: TEST geht auch ohne Sprungbefehle zu nutzen:
Delphi-Quelltext 1: 2: 3: 4: 5:
| asm TEST EAX, EAX SETZ AL MOVZX, EAX, AL end; |
Die Übersetzung wäre in diesem Fall:
Delphi-Quelltext
Wobei Delphi diesen Code nie generieren würde ...
Flamefire hat folgendes geschrieben : | trotzdem bleibt dabei: ein normales programm, dass man als asm vorliegen hat, kann man zu 99% in pure Delphi übersetzen. |
Dagegen hat auch niemand was gesagt. Ich hab nur deinen "ASM ist echte Teilmenge von Delphi"-Ausspruch widerlegt ...
@Flamefire: Pass auf beim Klugscheißen; das könnte jemand besser beherrschen 
_________________ Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
|
|
Flamefire
      
Beiträge: 1207
Erhaltene Danke: 31
Win 10
Delphi 2009 Pro, C++ (Visual Studio)
|
Verfasst: Sa 25.07.09 14:46
ja gut zugegeben...ich hab halt dünnschiss und du legst ne richtig fette wurst xD
Zitat: | Was denkst Du, was QueryPerformanceCounter intern aufruft |
ich weiß
darum hatte ich es geschrieben.
und auch wnn in QueryPerformanceCounter intern ein asm befehl steckt: aufruf von QueryPerformanceCounter ist delphi, oder? alos gilt das ganze
dann bei dem thema gleich mal:
ich hatte TEST EAX,xxx
JE z
immer übersetzt mit if (EAX AND xxx=0) dann springe
ist es denn echt eine subtraktion?
denn:
TEST EAX,2
JE z
springt ja nicht (nur) bei EAX=2 sonder auch bei eax=3,7 usw
Zitat: | Dagegen hat auch niemand was gesagt. Ich hab nur deinen "ASM ist echte Teilmenge von Delphi"-Ausspruch widerlegt |
Ich habe nicht gesagt, dass es eine echte Teilmenge ist.
Ich habe gemeint sie sind gleichwertig. Denn Alles was in Delphi geht geht auch in ASM-->Delphi ist Teilmenge von ASM
Trivialerweise wahr, da Delphi "in ASM compiliert wird"
und ich habe behauptet, dass alles was in ASM geht auch in Delphi geht: ASM ist Teilmenge von Delphi
Wäre das war gilt: ASM=Delphi
dummerweise stimmt der 2. Teil halt doch nicht.
Ich habe die CPU spezifischen Befehle nicht bedacht.
|
|
BenBE
      
Beiträge: 8721
Erhaltene Danke: 191
Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
|
Verfasst: Sa 25.07.09 15:02
Ach, es fängt ja schon bei Dingen wie IN und OUT an. TP konnte die damals auch in Pascal-Syntax; Delphi kann die nicht mehr. (In TP7 waren die einfach als Array eingemappt). Und IN\OUT hat nicht vordergründig was mit der CPU zu tun, sondern eher mit Hardware-Steuerung.
_________________ Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
|
|
MagicRain 
      
Beiträge: 154
WinXp, Win8, iOS
Delphi 7, Lazarus Pascal, Delphi 10.2 Starter, NetBeans Java
|
Verfasst: Sa 25.07.09 16:07
Da hab ich auch ne frage zu und zwar folgender code...
CMP EAX,10
JNZ bla:
Wenn ich sowas in einen Loop packen möchte gibt es da noch andere möglichkeiten das zu verwürklichen auzer GOTO label...end exit oder oO ? Ach und das ich noch nicht so gut in Delphi bin weiß ich selber ich komm hier her um noch was zu lernen oder das mir jemand bei meinen fehlern hilft. Bis jetzt war das auch immer der fall bis auf jetzt wo ich dafür das ich anfänger und kein PROFI bin angemacht werde. Finde ich irgendwie schade dafür sollte ein Forum eig auch da sein...können ja net alle solche PROFIS sein nech...
Mfg
|
|
BenBE
      
Beiträge: 8721
Erhaltene Danke: 191
Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
|
Verfasst: Sa 25.07.09 16:15
_________________ Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
|
|
MagicRain 
      
Beiträge: 154
WinXp, Win8, iOS
Delphi 7, Lazarus Pascal, Delphi 10.2 Starter, NetBeans Java
|
Verfasst: Sa 25.07.09 16:31
Das ist schon richtig B! ich mach halt ziemlich oft sachen mit ASM und ja mischen ist wohl nicht so gut das stimmt schon aber wenn ich sachen habe die ich nicht besser weiß umzusetzen sehe ich da keine möglichkeit das anders zu machen mein Delphi-Basic wissen reicht wohl aber noch nicht aus. Aber deswegen komme ich ja hier her und frage euch wenn ich ein problem habe oder nicht mehr weiter weiß um als resultat was zu lernen...
Quelltext 1: 2: 3: 4: 5: 6: 7: 8:
| Da hab ich auch ne frage zu und zwar folgender code...
CMP EAX,10 JNZ bla:
Wenn ich sowas in einen Loop packen möchte gibt es da noch andere möglichkeiten das zu verwürklichen auzer GOTO label...
Ja. | Ja und wie  wie kommt man auf sowas ? :S ich hab echt keine ahnung...
|
|
|