Hello, I have some problem in a assembly language program. May some one help me with some direction how jump to somewhere inside the block assembly code? I just want to JUMP somewher inside Code using Instruction "JMPI". syntax: JMPI cc, segment_Adresse (where to go). I use to get the current address and add the number of Instruction after jump instruction to Reach There (request Position) but how I don't know. I'm Using XC164-16for Infineon Thanks! Bitte ich brauche hilfe in diesem Bereich ziel ist die aktuelle position addresse zu ermitteln und daher die gewünschte position rechnen. aber wie? keine idée Danke!
Gast
#2451594
Bei x86 lässt sich die "aktuelle position adresse" ermitteln, indem man einen call durchführt und an der Zieladresse des calls die Rücksprungadresse vom Stack holt.
Vielen dank Gunnar,
hast du vielleicht konkrete bsp dafür z.b meine code sieht ungefähr so
aus:
mov r2,#xxxxH ; mit aktuelle adresse laden ( wo er hin
soll)
start:
jmpi cc_uc, [r2] ; cc_uc: unconditional ([r2] ist die
addresse)
jmpr cc_uc start
Passed:
bset r1.1 ; der programm soll hier hin (aber wie erkennt er
das?)
RET
Gast
#2451859
für x86: call Delta: Delta: pop eax Nun enthält eax die Adresse der Sprungmarke Delta. Gehe ich richtig in der Annahme dass du Assembler-Code suchst, um die aktuelle Adresse (IP, Instruction Pointer) zu erhalten? Oder habe ich dich falsch verstanden? ...theoretisch kann ich auch englisch ;)
Vielen Dank Günnar, du hast es richtig verstanden, ein label setzen und die adresse der laben in ein bestimmte register reinladen(fertig). label: mov r1, #label ; gesucht adresse .... ....
Gast
#2457128
Achtung, da gibt es einen Unterschied: Deine Version wird vom Linker statisch übersetzt, d.h. die Adresse des Labels "Label" wird fest einprogrammiert. Nach dem Compilen entsteht bei dir eine einzelne Instruktion "mov r1, IMMEDIATE32". Damit ist die compilte Version von dir adress-gebunden. Mein Beispiel ergibt nach dem Compilen zwei von der Adresse unabhängige Instruktionen, die überall funktionieren. Abgesehen davon dass wir über Äpfel (x86) und Birnen (Infineon) reden... Grüße
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.