Aktuelle Zeit: 02.12.2020 18:29

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]




Ein neues Thema erstellen Auf das Thema antworten  [ 27 Beiträge ]  Gehe zu Seite 1, 2, 3  Nächste
Autor Nachricht
 Betreff des Beitrags: Assembler-Fragen
BeitragVerfasst: 06.10.2018 19:42 
Offline

Registriert: 18.08.2017 09:35
ccode_new hat geschrieben:
Code:
;Ich finde PureBasic gut, ...
OpenConsole()
PrintN("")
EnableASM
MOV rax,l_out_str
MOV rcx,rax
CALL qword [PB_PrintN]
DisableASM
Input()
CloseConsole()
End

DataSection
  out_str: 
  !dw 0x49, 0x63, 0x68, 0x20, 0x66, 0x69, 0x6e, 0x64, 0x65, 0x20, 0x50, 0x42, 0x20, 0x67, 0x75, 0x74, 0x2c
  !dw 0x20, 0x77, 0x65, 0x69, 0x6c, 0x20, 0x65, 0x73, 0x20, 0x65, 0x69, 0x6e, 0x65, 0x6e, 0x20, 0x49, 0x6e
  !dw 0x6c, 0x69, 0x6e, 0x65, 0x2d, 0x41, 0x73, 0x73, 0x65, 0x6d, 0x62, 0x6c, 0x65, 0x72, 0x20, 0x67, 0x69
  !dw 0x62, 0x74, 0x2e, 0
EndDataSection


@ccode_new: Geiler Code
Um mein Verständnis zu ASM zu verbesssern habe ich ein paar Fragen
1. Du kopierst l_out_str in Register rax. Warum fängt es mit l_ an? Das Label heisst doch nur out_str. Warum also mit l_ ?
2. Du kopierst von rax in rcx. Dh in beiden Registern stehen beide Inhalte. Ist das notwendig zwei Register mit dem selben Inhalt zu schreiben?
3. Wie hast du herausgefunden dass man den ASM Code so schreiben muss damit es genauso funktioniert wie wenn man PrintN(..) aufruft?

__________________________________________________
Thread geteilt
Was findet ihr an PB gut ?>Assembler-Fragen
Offtopic>Allgemein
06.10.2018
RSBasic

_________________
Bild


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Was findet ihr an PB gut ?
BeitragVerfasst: 06.10.2018 20:13 
Offline

Registriert: 27.11.2016 18:13
Wohnort: Erzgebirge
Hallo ¯\_(ツ)_/¯ !

(Wichtig! Der Code muss mit EAX,... für 32bit angepasst werden.)

Zitat:
1. Du kopierst l_out_str in Register rax. Warum fängt es mit l_ an? Das Label heisst doch nur out_str. Warum also mit l_ ?


Siehe: https://www.purebasic.com/german/documentation/reference/inlinedasm.html

"Sprungmarken (Labels): Die Sprungmarken müssen in Kleinbuchstaben referenziert werden, wenn der Inline-ASM verwendet wird. Wenn Sie auf eine Sprungmarke verweisen, müssen Sie das Präfix 'l_' vor dem Namen einfügen."

Zitat:
Du kopierst von rax in rcx. Dh in beiden Registern stehen beide Inhalte. Ist das notwendig zwei Register mit dem selben Inhalt zu schreiben?


Übergibt den Rückgabewert als 1. Ganzzahl (Die Stringadresse) als "qword" - 8 Byte (64bit)

Die ersten vier Ganzzahl- oder Zeigerparameter werden in den Registern rcx, rdx, r8 und r9 übergeben.

Zitat:
3. Wie hast du herausgefunden dass man den ASM Code so schreiben muss damit es genauso funktioniert wie wenn man PrintN(..) aufruft?


PureBasic interne Funktionen werden mit "PB_" -Präfix und in [] bei Assembler angegeben.

(Die verwendete Funktion muss aber schon vorher bekanntgegeben werden. (Daher bei mir: PrintN("") )

Anbei: Variablen werden so in Assembler angegeben: [v_DeineVariable] (Also mit v_ -Präfix)

_________________
Betriebssysteme: MX Linux 19 / Windows 10 / Mac OS 10.15.7 / Android 7.0 ;)

Manchmal muß das Rad neu erfunden werden.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Was findet ihr an PB gut ?
BeitragVerfasst: 06.10.2018 20:39 
Offline

Registriert: 18.08.2017 09:35
Danke für deine Hilfe sehr nett von dir :)
Du sag mal kann man auch den Aufruf von OpenWindow manipulieren? Ich hab mal weil mich das total interessiert den Compiler Parameter /COMMENTED ausprobiert.
Folgender Code:
Code:
; If OpenWindow(0, 0, 0, 1000, 500, "Mein Fenster", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
  SUB    rsp,8
  PUSH   qword 13107201
  MOV    rax,_S1
  PUSH   rax
  PUSH   qword 500
  MOV    r9,qword 1000
  MOV    r8,qword 0
  MOV    rdx,qword 0
  MOV    rcx,qword 0
  SUB    rsp,32
  CALL   PB_OpenWindow2
  ADD    rsp,64
  AND    rax,rax
  JE    _EndIf2


Da wird PB_OpenWindow2 ausgeführt und meine Werte übergeben. Besteht die Möglichkeit die Parameter von PB_OpenWindow2 zu ändern? Du fragst dich bestimt warum soll ich das tun wollen, ich möchte den Class name ändern wenn es möglich ist.
Standartmäßig ist WindowClass_0 als Class name aber mir gehts nicht darum wegen Purebasic im Classname sondern mich stört es wenn jedes von PB erstellte Fenster den selben Class name hat. Im anderen Code greife ich mit API FindWindow zu und muss immer über den Titel das Fenster finden aber möchte lieber über den Class name.
Wie auch immer, ist es möglich die ASM Funktion PB_OpenWindow2 zu manipulieren? Kommt man überhaupt an den ASM Code von PB_OpenWindow2 ? Der Code muss doch bekannt sein weil alles an fasm.exe übergeben wird oder?

_________________
Bild


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Was findet ihr an PB gut ?
BeitragVerfasst: 06.10.2018 21:12 
Offline
Benutzeravatar

Registriert: 30.03.2010 15:24
¯\_(ツ)_/¯ hat geschrieben:
Danke für deine Hilfe sehr nett von dir :)
Wie auch immer, ist es möglich die ASM Funktion PB_OpenWindow2 zu manipulieren? Kommt man überhaupt an den ASM Code von PB_OpenWindow2 ? Der Code muss doch bekannt sein weil alles an fasm.exe übergeben wird oder?

Nicht wirklich der Code ist nämlich schon kompiliert als Statische Library.

_________________
PureBasic 5.46 LTS (Windows x86/x64) | windows 10 x64 Oktober failure


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Was findet ihr an PB gut ?
BeitragVerfasst: 06.10.2018 21:17 
Offline

Registriert: 27.11.2016 18:13
Wohnort: Erzgebirge
Kann bitte jemand die letzten (und diesen, und evtl. folgende) Beiträge in einen separaten Thread verlagern.

Das ganze passt hier nicht zum Thema.

ICH HABE KEINE AHNUNG OB MAN DEN WINDOWS-KLASSENNAME NACHTRÄGLICH ÄNDERN KANN,
ABER AN DIE ASM-INFORMATION VON "CALL PB_OpenWindow2" KOMMT MAN (soweit ich informiert bin) NICHT.
(Steht alles in /PureLibraries/Window)

Du könntest ja Windows-Api direkt verwenden.
RSBasic (oder jemand anderes) hilft dir da bestimmt weiter.

Dieser Beitrag sollte auch schon weiterhelfen: https://www.purebasic.fr/german/viewtopic.php?f=3&t=25771

_________________
Betriebssysteme: MX Linux 19 / Windows 10 / Mac OS 10.15.7 / Android 7.0 ;)

Manchmal muß das Rad neu erfunden werden.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Was findet ihr an PB gut ?
BeitragVerfasst: 06.10.2018 21:18 
Offline

Registriert: 18.08.2017 09:35
Danke _JON_
1. Eine statische Library kann man bestimt auch disassemblieren und den String "WindowClass_0" ändern oder?
2. Kann man den geänderten ASM Code wieder zu eine statische Library machen und die statische Library im PB Ordner einfügen und ersetzen?
3. Ist das diese statische Library die du meinst? C:\Program Files\PureBasic\PureLibraries\Window
4. Ist die statische Library analog zur obj-Datei die man beim bekommt wenn man einen ASM Code kompiliert?

_________________
Bild


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Was findet ihr an PB gut ?
BeitragVerfasst: 06.10.2018 21:23 
Offline

Registriert: 27.11.2016 18:13
Wohnort: Erzgebirge
Bei 1. endet deine PureBasic-Lizenz.

Das dürfte illegal sein. (wenn du es irgendwie schaffen solltest)

(Kann das bitte auch mit verschoben werden.)

_________________
Betriebssysteme: MX Linux 19 / Windows 10 / Mac OS 10.15.7 / Android 7.0 ;)

Manchmal muß das Rad neu erfunden werden.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Assembler-Fragen
BeitragVerfasst: 06.10.2018 21:23 
Offline
Admin

Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
ccode_new hat geschrieben:
Kann bitte jemand die letzten (und diesen, und evtl. folgende) Beiträge in einen separaten Thread verlagern.

Erledigt

\\Edit:
ccode_new hat geschrieben:
(Kann das bitte auch mit verschoben werden.)

Ebenfalls erledigt. :D

_________________
BildBildBildBild BildBild


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Assembler-Fragen
BeitragVerfasst: 06.10.2018 21:30 
Offline
Benutzeravatar

Registriert: 30.03.2010 15:24
1-2 - So einfach wird das sich nicht machen lassen.
3 - Ja, das sollte die lib sein (mit PB's "Verschlüsselung" :lol: )
4 - Eine statische Library ist ein Paket aus mehreren obj_Dateinen.

_________________
PureBasic 5.46 LTS (Windows x86/x64) | windows 10 x64 Oktober failure


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Assembler-Fragen
BeitragVerfasst: 06.10.2018 22:53 
Offline
Admin

Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
@¯\_(ツ)_/¯
Benutze einfach den Code von ts-soft und edel, der im von ccode_new verlinkten Thread vorhanden ist.
Du kannst mit einem Macro so umbiegen, dass du den Funktionsnamen OpenWindow() in allen deinen Projekten nicht ändern musst.
Ansonsten besteht auch noch die Möglichkeit, den Klassennamen mit einem Hook (SetWindowsHookEx_() mit #WH_CBT und CBTProc-Callback mit #HCBT_CREATEWND) zu ändern. Das kannst du aber nur in deiner privaten Umgebung tun.
Oder du benutzt einen Hex-Editor und ersetzt in der Library-Datei "...\PureLibraries\Window" alle Zeichenketten "W i n d o w C l a s s _" durch deinen eigenen Klassennamen. Das geht zwar, aber dann hätten alle deine Fenster wieder denselben Klassennamen.
Oder du schreibst ein kleines Tool, um den Klassennamen deiner Executable-Datei nach der Kompilierung automatisiert zu ändern.
Ich finde die CreateWindow_()-Variante eher am besten.

_________________
BildBildBildBild BildBild


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 27 Beiträge ]  Gehe zu Seite 1, 2, 3  Nächste

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 23 Gäste


Sie dürfen keine neuen Themen in diesem Forum erstellen.
Sie dürfen keine Antworten zu Themen in diesem Forum erstellen.
Sie dürfen Ihre Beiträge in diesem Forum nicht ändern.
Sie dürfen Ihre Beiträge in diesem Forum nicht löschen.

Suche nach:
Gehe zu:  

 


Powered by phpBB © 2008 phpBB Group | Deutsche Übersetzung durch phpBB.de
subSilver+ theme by Canver Software, sponsor Sanal Modifiye