Hallo zusammen, ich möchte mit assembler befehle eine Konstante 0x12345678 im general purpose register GPR5 speichern. kann mir da jemand ein tip geben wie ich das machen kann?
GPR ist doch nur die Zusammenfassung aller Arbeitsregister (ohne FPR). Die heissen doch dann R0, R1... Ohne genaue Kenntnis des Assemblers würde ich mal li R5, 0x12345678 tippen. Vielleicht hilft das ja: http://www.ibm.com/developerworks/library/l-powasm1/index.html
ok danke das funktioniert. ich will eigentlich eine C funktion (fcn1) aus einem assembler code aufrufen. .extern fcn1 fcn2: # save register hier ... # call the C extern funktion: dies funktioniert auch gut bl fcn1 li 11, 0 addi 11, 11, fcn1 mtspr 9, 11 bcctrl 0x0,0,0 #resave the register hier ... ... # und return blr ich bekomme die Fehlermeldung beim compilieren/assemblieren: " unsupported relocation against fcn1" Hat Jemand eine Idee wie man das lösen kann? Ich möchte den instruction "bcctrl" damit ich mit dem Count Reigister branchen kann und nicht relative branch mit dem "bl" Danke
.equ FUNC_ADDR 0x10000 # jump address is in r3 lis r3,FUNC_ADDR@h ori r3,r3,FUNC_ADDR@l # save into counter reg mtctr r3 # jump into given address bctrl
super danke. was bedeuten dann die @h und @l in FUNC_ADDR@h und FUNC_ADDR@l. besten dank
warrun macht man eigentlich die teilung (high/low)? gibts in ppc kein Befehl um eine 32bit konstante in Register zu laden? sowie hier z.B. (die gibt aber eine compiler fehler "unsupported relocation against FUNC_ADDR") .equ FUNC_ADDR 0x10000 lis r3,FUNC_ADDR Danke
Bei einer 32 Bit Inbstruktion kann man keine 32 Bit immediate Data laden. Es gehen ja einige Bits für opcode und Operanden Register drauf. Daher ist ein load immediate ein 16 bit half word.
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.