Maschinencode => PureBasic

Fragen zu allen anderen Programmiersprachen.
Benutzeravatar
ZeHa
Beiträge: 4760
Registriert: 15.09.2004 23:57
Wohnort: Friedrichshafen
Kontaktdaten:

Beitrag von ZeHa »

weil der PBCompiler aus bestimmten Code-Fragmenten immer bestimmten ASM-Output erzeugen wird

Bin mir aber nicht sicher, ob man sich immer daran orientieren kann. Es kommt auch drauf an, was der Programmierer im ursprünglichen Zustand so für 'nen Code hatte. Wenn der total wirr und unlogisch ist, ist auch der ASM-Output wirr und unlogisch. Und Sachen wie Funktions-Calls und Berechnungen werden in anderen Sprachen auch nicht großartig anders in Maschinencode umgesetzt wie in PB, daher bezweifel ich wirklich, ob das Rückübersetzen SOOO viel wesentlich einfacher sein soll als in C etc.

Und was hat das mit den Libs zu tun?? Wenn sie direkt eingebunden werden, liegen sie ebenfalls in Maschinencode vor, und wenn es DLLs sind, dann sind es halt DLLs. Wie stützt das jetzt die Aussage?
Bild     Bild

ZeHa hat bisher kein Danke erhalten.
Klicke hier, wenn Du wissen möchtest, woran ihm das vorbeigeht.
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

Lib A in Maschinencode wird immer gleich aussehen.
Das es einfacher geht, ist doch einfach nur logisch. Oder haste Dir noch nie eine mit PB erstellte Exe angesehen

Da findeste z.B. pb_toolbar_id usw. :mrgreen:
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

durch den optimierungsvorgang ist diese menge an "bestimmten code-segmenten" verdammt schwindelerregend groß, weil ja unterschiedliche befehlskombinationen unterschiedlich optimiert werden.
das was ZeHa über unterschiedlichen Stil sagt, kommt noch dazu.

also, wenn du eine 57-Teraquad-Datenbank hast, wo alle möglichen code-kombinationen mit allen entsprechenden assemblerumsetzungen drinstehen, und du ein Null-Grav-Erzeuger hast, in dem die Zeit schnell genug abläuft, um die hundert Jahre rechenzeit in wenigen minuten durchzujechtern, dann kannst du den Code präzise zurückholen....

...aber immer noch ohne entsprechende variablennamen.. :p
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

Wer spricht von Präzise?
Nur PB-Syntax hab ich gesagt, das damit auch InlineASM usw. bei ist, ist ja wohl klar.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
ZeHa
Beiträge: 4760
Registriert: 15.09.2004 23:57
Wohnort: Friedrichshafen
Kontaktdaten:

Beitrag von ZeHa »

das damit auch InlineASM usw. bei ist, ist ja wohl klar.

???
Bild     Bild

ZeHa hat bisher kein Danke erhalten.
Klicke hier, wenn Du wissen möchtest, woran ihm das vorbeigeht.
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

Wenns dann so aussieht:

Code: Alles auswählen

Enumeration
  #B_EQUAL
  #B_GREATER
  #B_LESS
EndEnumeration 

Procedure Compare(A,B)
  If A=B:ProcedureReturn #B_EQUAL:EndIf
  If A>B:ProcedureReturn #B_GREATER:EndIf
  If A<B:ProcedureReturn #B_LESS:EndIf
EndProcedure


Procedure Test()





Eax=MessageBox_(00000000,"Test ?","Test",4)
 Ebx=Eax
result=Compare( Ebx,6)
If result=#B_LESS Or result=#B_GREATER: Goto  Label0:EndIf




Eax=MessageBox_(00000000,"Cool","",00000000)
Label0:
 Eax!Eax
; ERROR: POP Ebx
ProcedureReturn Eax
EndProcedure

Test()
Code ist nicht von mir :lol:
ist es immer noch PB-Syntax
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

:freak: was für ein thema
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
Zaphod
Beiträge: 2875
Registriert: 29.08.2004 00:40

Beitrag von Zaphod »

Auch die Decompiler für C/C++ produzieren nicht wirklich brauchbaren C/C++ code, also wen interessiert es?

Normalerweise ist es weniger aufwand ein Programm einfach neu zu schreiben als mit dekompiliertem code zu arbeiten.
Benutzeravatar
ZeHa
Beiträge: 4760
Registriert: 15.09.2004 23:57
Wohnort: Friedrichshafen
Kontaktdaten:

Beitrag von ZeHa »

Sorry aber ich find das ist totaler Schwachsinn. Man muß sich schon entscheiden, entweder übersetze ich den Maschinencode ZURÜCK in PB oder ich lasse ihn gleich als Maschinencode stehen. Aber wozu so einen Mischmasch? Wem bringt das was? Und vor allem: wo setzt Du da die Grenze? Wie willst Du festlegen, was letzten Endes als PB und was als ASM Code dastehen soll? Und egal wie Du die Grenze festlegst, kein Mensch wird damit zufrieden sein, weil jeder andere Ansprüche hat. Also wenn schon Maschinencode nach PB, dann auch wirklich nach PB.

Zum Thema insgesamt: denke auch, daß man mit so einem rückübersetzten Code nix anfangen kann. Allein schon eben, weil sämtliche Variablennamen und Funktionsnamen fehlen. Da wird das Verständnis schon bei 'nem 1000 Zeilen Programm 'ne üble Sache... dazu kommt übrigens, daß man sich seinen Code ja meistens in mehrere Files aufteilt - nach einer gewissen Logik natürlich. Wenn ich nun aber ein einziges PB-File habe, das aus 20.000 Zeilen besteht und in dem ich keine Chance habe, auch nur einen einzigen Variablennamen zu identifizieren - damit kann ich dann sicherlich nix anfangen. Bei Java geht das noch einigermaßen, da sind die Dateien ja schon automatisch nach Klassen getrennt. Aber auch hier wird's kein leichtes Vergnügen.
Bild     Bild

ZeHa hat bisher kein Danke erhalten.
Klicke hier, wenn Du wissen möchtest, woran ihm das vorbeigeht.
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

Was meinste wie Froh ich bin, das es keinen Sinn macht :mrgreen:
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Antworten