[RISOLTO]help link e unlk

di il
5 risposte

[RISOLTO]help link e unlk

Salve, come da titolo, qualcuno di buon cuore potrebbe spiegarmi esaustivamente per bene come funzionano e a cosa servono assieme al frame pointer? dal libro di testo mio non si capisce nulla e il 21 gennaio ho l'esame di calcolatori elettronici I. I programmi li scrivo e mi funzionano ma se si tratta di usare link e unlk non so bene come fare. Grazie a chi mi aiuterà

5 Risposte

  • Re: [RISOLTO]help link e unlk

    Ciao inanzitutto buon anno
    semplicemente l' istruzione link attiva il framepoint
    mentre UNLK disattiva il framepoint
    a questo punto sorge spontanea una domanda che cosa è un framepoint?
    un framepoint è un area dello stack pointer che viene definita dall'utente che serve per passare i parametri tra 2 subroutine
    esempio
    
    ADDA.L #-2,SP 
    MOVE #X,-(SP)
    MOVE #Y,-(SP)
    JSR FAI
    ...
    ...
    ...
    A EQU 8
    B EQU 10
    C EQU 12
    FAI LINK A6,#0 ;USA A6 COME FRAMEPOINT
    MOVEM.L D0-D2,-(SP) ; SALVA SULLO STACK I REGISTRI D0,D1,D2 
    MOVE A(A6),D0 ; COPIA IL PARAMETRO X CHE STAVA SULLO STACK IN D0
    MOVE B(A6),D1 ; COPIA IL PARAMETRO Y CHE STAVA SULLO STACK IN D1
    ..... ; COMPIELE OPERAZIONI CHE VUOI
    ......
    MOVEM.L (SP)+,DO-D2 ; RIPRISTINA I VECCHI REGISTRI
    UNLK A6 ;DISTRUGGE IL FRAMEPOINT
    RTS
    
    spero di esserti stato di aiuto
  • Re: [RISOLTO]help link e unlk

    Grazie per la risposta, quindi se all'esame mi chiedono di passare tramite subroutine un valore, posso anche non usarlo il framepointer? o sono obbligato? nel senso , se mi chiedono di ordinare un arrray posso semplicemente usare una subroutine senza frame pointer? Grazie
  • Re: [RISOLTO]help link e unlk

    Allora la questione è molto semplice
    quando devi passare 3 o più parametri ti conviene usare il framepoint
    perchè se non lo usi utilizzeresti troppi registri che potrebbero esserti utili sia nella subroutine che nel programma principale.
    mentre se sono 1 o 2 parametri li puoi benissimo passare usando i registri ricordati però di non usare l'accumulatore per passare i dati perchè molte istruzioni ne fanno uso e rischieresti di perdere i dati.
    ricordati in oltre che sia le stringhe che i vettori si passano per puntatore.

    comunque all'esame, se ce la fai con il tempo, ti consiglio di utilizzare entrambe le tecniche cosi prenderesti un voto superiore.
  • Re: [RISOLTO]help link e unlk

    Grazie per i chiarimenti era quello il dubbio, con due parametri mi sembrava non propriamente utile il framepointer, ma ho chiesto per sicurezza. Grazie ancora
  • Re: [RISOLTO]help link e unlk

    Scusa la domanda, ma nell'esempio citato da te , come faccio a passare A in d0 se sullo stack avevo salvato X? :/
Devi accedere o registrarti per scrivere nel forum
5 risposte