quelqu'un peut-il s'il vous plaît expliquer ce que ce programme est en train de faire?programme sur l'Assemblée
.= torg + 1000
main:
mov pc, sp
tst –(sp)
mov #list1, -(sp)
jsr pc, mystery
mov r0, res1
tst (sp)+
mov #list2, -(sp)
jsr pc, mystery
mov r0, res2
tst (sp)+
halt
mystery:
mov r1, -(sp)
mov r4, -(sp)
mov r5, -(sp)
clr r0
mov 10(sp), r4
mov r4, r5
loop:
mov r4, r1
jsr pc, next
mov r1, r4
beq return
mov r5, r1
jsr pc, next
jsr pc, next
mov r1, r5
beq return
cmp r4, r5
beq setret
br loop
setret:
inc r0
return:
mov (sp)+, r5
mov (sp)+, r4
mov (sp)+, r1
rts pc
next:
tst r1
beq abort
mov (r1), r1
abort:
rts pc
.= torg + 3000
list1: .word 3006, 3000, 3002, 3004, 0
res1: .word -1
.= torg + 3020
list2: .word 3030, 3026, 0, 3024, 3022
res2: .word -1
Je ne comprends pas cet extrait, merci d'avance pour tout le monde
mystery:
mov r1, -(sp)
mov r4, -(sp)
mov r5, -(sp)
clr r0
mov 10(sp), r4
mov r4, r5
expliquer s'il vous plaît dans cette rangée mov # list1, - (sp) puis-je envoyer un pointeur vers list1 ou toutes les valeurs de list1? – lego69
@lego: juste le pointeur, c'est-à-dire la valeur de l'étiquette 'list1'. Pour le processeur, c'est juste un nombre comme un autre. – Potatoswatter
et une question: pourquoi avons-nous besoin de lignes r1 mov, - (sp) mov r4, - (sp) mov r5, - (sp) nous n'avons pas utilisé ces registres – lego69