« Forum anonimo (sperimentale)

Dubbio su un quesito del quiz "Istruzioni Assembly MIPS 2"

5 replies
Last
In riferimento alla domanda numero 11 in cui viene chiesto "Codificare in linguaggio macchina (binario) un salto incondizionato ("j") all'indirizzo 0x00403170".

L'istruzione è composta da: 6 bit di op. code (valore 2) e 26 bit in cui inserire l'indirizzo target. Questi 26 bit vanno estesi aggiungendo 2 bit pari a 0 a destra, ottenendo quindi 28 bit; Successivamente si prendono i primi 4 bit per PC per ottenere un indirizzo a 32 bit.

La risposta corretta è: 00001000000100000000110001011100, da cui si ricava l'indirizzo di destinazione (escludendo i primi 6 bit e aggiungendone 2 a destra):

0000  0100  0000  0011  0001  0111 00+00

0          4         0        3        1        7        0           ---> HEX


Provando a risolvere l'esercizio ho riscontrato questo DUBBIO:

Utilizzando diversi convertitori (https://www.eg.bucknell.edu/~csci320/mips_web/  e http://mipsconverter.com/instruction.html?optradio=on#) viene però fornita un altra soluzione, in cui i 2 bit a 0 aggiuntivi vengono messi a sinistra invece che a destra; si ottiene quindi:

00+00 0100 0000 0011 0001 0111 0000

0            4        0       3       1       7      0            ---> HEX


La soluzione dei convertitori risulta quindi: 00001000010000000011000101110000 contente 2 in più a 0 dopo l'op.code e 2 bit in meno a 0 alla fine (avendo shiftato a sinistra anzichè a destra).


Grazie per l'attenzione




 


5 replies
  1. Re: Dubbio su un quesito del quiz "Istruzioni Assembly MIPS 2"

    La soluzione dei convertitori risulta quindi: 00001000010000000011000101110000 contente 2 bit in MENO a 0 dopo l'op.code e 2 bit in PIU a 0 alla fine (avendo shiftato a DX anzichè a SX)*.

    Mi scuso per l'errore


  2. Re: Dubbio su un quesito del quiz "Istruzioni Assembly MIPS 2"

    Lei sembra non aver capito perché si possono sottintendere a livello di bit dell'istruzione quei 2 bit a zero. Se lo avesse capito non avrebbe alcun dubbio e riderebbe di quello che ha trovato su internet. Noi non vogliamo far passare l'esame a chi non capisce. Provo quindi a non rispondere in modo piatto piatto. Invece la invito a dare - sempre in forma anonima - una motivazione scritta del perché i progettisti MIPS hanno pensato di poter sottintendere quei 2 bit a zero. Lo faccio perché questi 5 minuti dedicati a capire la aiuteranno nella vita, oltre che in questo esame. Se ha fretta, guardi sul libro, su questo trova tutto.

    Se domani sera non avrà trovato una spiegazione, lo scriva pure in questo thread - sempre in forma anonima se vuole - e, pur rattristato, le risponderemo in forma piatta piatta.

  3. Re: Dubbio su un quesito del quiz "Istruzioni Assembly MIPS 2"
    Il fatto che vengano aggiunti 2 bit a 0 credo di aver capito essere perché in mips ogni istruzione richiede 32 bit, ma le celle di memoria sono da 8 bit ciascuna e quindi ogni volta si deve andare 4 celle oltre. Il dubbio mi è sorto in seguito a quanto trovato online e per questo motivo ho preferito chiedere.

    Grazie per la risposta!

    1 reply
  4. Re: Dubbio su un quesito del quiz "Istruzioni Assembly MIPS 2"
    più che altro credo che sia perchè si possono indirizzare solo le word (4 byte) complete e non una loro sottosezione, quindi si dovrà sempre avere un indirizzo multiplo di 4, e dunque con gli ultimi 2 bit a 0, quindi essi possono essere sottointesi. inoltre credo serva pure a permettere di avere un jump assoluto, dato che così si possono avere un totale di 32 bit per l'indirizzo del jump: 4 "in prestito" dall'opcode, 26 di address effettivo e 2 sottointesi
  5. Re: Dubbio su un quesito del quiz "Istruzioni Assembly MIPS 2"

    Sperando di non aver capito male, il motivo per cui gli ultimi due bit dell’indirizzo vengono settati a 0 è legato al fatto che in questo modo l’istruzione è “allineata”, cioè sarà possibile prelevare il dato in memoria e trasmetterlo in un unico trasferimento. 

    Spero qualcuno mi corregga se ciò appena scritto è incorretto.