Salti condizionati fuori range!

di il
6 risposte

Salti condizionati fuori range!

Nelle istruzioni di salto condizionato come bnq e bne vengono dedicati 16 bit per indicare l'indirizzo a cui saltare. Esiste qualche "trucco" per saltare ad un indirizzo più lontano?

6 Risposte

  • Re: Salti condizionati fuori range!

    Si negando la condiziene
    esempio:
    dobbiamo saltare ad una label lontana se $t0 <> $t1
    beq $t0,$t1,altre_condizioni #se $t0=$t1 allora vediamo altre condizioni di azione
    j esegui #eseguiamo ciò che dobbiamo
    

    spero di esserti stato di aiuto
  • Re: Salti condizionati fuori range!

    smalldragon ha scritto:


    si negando la condiziene
    esempio:
    dobbiamo saltare ad una label lontana se $t0 <> $t1
    beq $t0,$t1,altre_condizioni #se $t0=$t1 allora vediamo altre condizioni di azione
    j esegui #eseguiamo ciò che dobbiamo
    

    spero di esserti stato di aiuto
    Scusami ma non mi è molto chiaro, se i registri sono uguali salto ad un istruzione di salto incondizionato?
  • Re: Salti condizionati fuori range!

    Allora il discorso e molto semplice
    se io devo fare una condizione di equita beq e mi occorre una label lontana fuori range
    devo impostare i confronti in maniera tale che non sia la condizione che mi serve a compiere i salti nel range.
    per far ciò devo negarla affinchè io possa utilizzare i salti incondizionati che vanno anche fuori dal range.
  • Re: Salti condizionati fuori range!

    smalldragon ha scritto:


    allora il discorso e molto semplice
    se io devo fare una condizione di equita beq e mi occorre una label lontana fuori range
    devo impostare i confronti in maniera tale che non sia la condizione che mi serve a compiere i salti nel range.
    per far ciò devo negarla affinchè io possa utilizzare i salti incondizionati che vanno anche fuori dal range.
    Ah quindi imposto una condizione inversa rispetto a quella che mi serve nella realtà sfruttando l'istruzione di salto incondizionato che si presenterà dopo il confronto. Ma non funzionerebbe allora fare un confronto in cui se verificato mi permetta di saltare ad un'istruzione di salto incondizionato che mi fa saltare all'istruzione fuori range desiderata? Non so se mi spiego
  • Re: Salti condizionati fuori range!

    ezio1400 ha scritto:


    Ah quindi imposto una condizione inversa rispetto a quella che mi serve nella realtà sfruttando l'istruzione di salto incondizionato che si presenterà dopo il confronto.
    esatto perchè solo i salti incondizionati non hanno range.

    ezio1400 ha scritto:


    Ma non funzionerebbe allora fare un confronto in cui se verificato mi permetta di saltare ad un'istruzione di salto incondizionato che mi fa saltare all'istruzione fuori range desiderata? Non so se mi spiego
    in teoria si ma cosi dovresti impiegare 2 salti per via della label fuori range che avresti
    esempio
    metodo di salto a label fuori range con condizione diretta
    
    confronti:
    beq $t1,$t2,salta
    ......... # altro codice
    j confronti 
    salta:
    j label fuori range
    
    mentre tramite condizione inversa << vedi post precedenti per esempio >>
    la label fuori range verrebbe eseguita prima rispetto alla tecnica su citata(con condizione diretta)
    ergo quando usi la tecnica su citata hai bisogno di più codice e seppur in maniera limitatissima riduci la velocità di esecuzione.
    poi c'è un problema di chiarezza,visiva, in quanto le tecniche di condizione inversa si comprendono meglio perchè si fa un confronto alla volta.
    comunque sono molto rari i casi in cui si utilizzano label fuori range.
    specialmente nei programmi universitari.
  • Re: Salti condizionati fuori range!

    Ok , grazie . Era stato accennato questo discorso nel mio corso universitario ma non l'avevo ben capito. Ora è chiaro. Grazie infinite
Devi accedere o registrarti per scrivere nel forum
6 risposte