ASM Adresse einer lokalen Variable

Für allgemeine Fragen zur Programmierung mit PureBasic.
Benutzeravatar
CSHW89
Beiträge: 489
Registriert: 14.12.2008 12:22

ASM Adresse einer lokalen Variable

Beitrag von CSHW89 »

Hallo zusammen,

mal ne kurze Frage an die ASM-Cracks hier. Gibt es eine Möglichkeit die Adresse einer lokalen Variable zu bestimmen, ohne eine weitere Variable definieren zu müssen? Mal als Code ausgedrückt:

Code: Alles auswählen

Procedure test()
  Protected address.i
  Protected mySpecialVariable.i
  address = @mySpecialVariable
  ! mov esi, dword [p.v_address]
EndProcedure
Kann ich hier irgendwie auf die Variable "address" verzichten?

Vielen Dank und Grüße
Kevin
Bild Bild Bild
http://www.jasik.de - Windows Hilfe Seite
padawan hat geschrieben:Ich liebe diese von hinten über die Brust ins Auge Lösungen
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8807
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Re: ASM Adresse einer lokalen Variable

Beitrag von NicTheQuick »

Geht das nicht einfach mit dem normalen Assembler?

Code: Alles auswählen

Procedure test()
  Protected mySpecialVariable.i
  EnableASM 
  MOV esi, mySpecialVariable
  DisableASM 
EndProcedure

test()
Edit: Ich glaube das war Unsinn. Mit F5 sehe ich dann nur ein komplett leeren MessageRequester ohne Aussagekraft. /:-> Aber ich lass es mal stehen. Bin ja kein ASM-Crack. In Discord geht's diesbezüglich aber grad ziemlich rund.
Benutzeravatar
Mijikai
Beiträge: 754
Registriert: 25.09.2016 01:42

Re: ASM Adresse einer lokalen Variable

Beitrag von Mijikai »

Wird mit lea geladen:

Code: Alles auswählen

;x64!

Procedure.i dummy()
  Protected value.i
  Debug @value
  !lea rax,[p.v_value];<- oder !lea eax,[p.v_value] für x86!
  ProcedureReturn  
EndProcedure

Debug dummy()
Antworten