Il simulatore LEGv8 sbaglia il Branch and Link

Il simulatore LEGv8 sbaglia il Branch and Link

di ALBERTO CARINI -
Numero di risposte: 0

Il simulatore LEGv8 al momento sbaglia le istruzioni BL. Il LR viene erroneamente caricato con l'indirizzo di destinazione invece che con quello di partenza+4.

Di seguito viene riportata un codice che simula il comportamento corretto del BL con tre istruzioni: 

BL lb1

lb1: ADDI lr, lr, #8

B myfun

MOV x0, xzr

ADDI x0, x0, #1

myfun:

MOV x1, xzr

BR lr


Le prime tre istruzioni implementano il funzionamento corretto del BL.