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!
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
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 .... ....
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
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.