fbpx
Skip to main content
  1. Valerio Battaglia
  2. Ingegneria Informatica - Triennale
  3. Mercoledì, 09 Maggio 2007
  4.  Subscribe via email
e quest'ultimo lo apro io :D buon lavoro a tutti..
Comment
There are no comments made yet.
Accepted Answer Pending Moderation
faccia = 8
Comment
There are no comments made yet.
Accepted Answer Pending Moderation
allora l'indirizzo di end è: 9


è 12 in decimale
Comment
There are no comments made yet.
Accepted Answer Pending Moderation
(se partiamo da beq, end è la nona istruzione, cioè il nostro spiazzamento)


OK! :D
Comment
There are no comments made yet.
Accepted Answer Pending Moderation
no quello è un valore assoluto, a te serve lo spiazzamento. detto in soldoni sarebbe la distanza dall'istruzione che consideri all'etichetta , distanza quindi tra l'istruzione beq e l'etichetta end
Comment
There are no comments made yet.
Accepted Answer Pending Moderation
la risposta precedente era riferita a questo. :)
allora l'indirizzo di end è: 9


è 12 in decimale
Comment
There are no comments made yet.
Accepted Answer Pending Moderation
in definitiva quoto!
allora l'indirizzo di end è: 9 (in decimale) (se partiamo da beq, end è la nona istruzione, cioè il nostro spiazzamento)
dell'indirizzo di questa istruzione prendo 16 bit:
0000 0000 0000 1001 (questa dovrebbe essere la risposta alla domanda che chiede cosa ci sia nel campo immediate dopo la fase di linkaggio)
Ma andiamo avanti….

aggiungo 2 bit a destra ed estendo il segno (cioè moltiplico per 4 e ne faccio 32 bit):

00 0000 0000 0000 0000 0000 0000 1001 00

fatto questo lo sommo a pc+4:

pc: 0000 0000 0000 0000 0000 0000 0000 1100 (siamo alla terza istruzione)
pc +4= 0000 0000 0000 0000 0000 0000 0001 0000

ora faccio la somma :
0000 0000 0000 0000 0000 0000 0001 0000 (pc+4 )+
0000 0000 0000 0000 0000 0000 0010 0100

0000 0000 0000 0000 0000 0000 0011 0100 questo è l’indirizzo che prende se il salto viene effettuato
Comment
There are no comments made yet.
Accepted Answer Pending Moderation
ma domani dara' anche il codice C come guida per l'assembler?
Comment
There are no comments made yet.
Accepted Answer Pending Moderation
si il codice C lo mette sempre :wink:
Comment
There are no comments made yet.
Accepted Answer Pending Moderation
in definitiva quoto!
allora l'indirizzo di end è: 9 (in decimale) (se partiamo da beq, end è la nona istruzione, cioè il nostro spiazzamento)
dell'indirizzo di questa istruzione prendo 16 bit:
0000 0000 0000 1001 (questa dovrebbe essere la risposta alla domanda che chiede cosa ci sia nel campo immediate dopo la fase di linkaggio)
Ma andiamo avanti….

aggiungo 2 bit a destra ed estendo il segno (cioè moltiplico per 4 e ne faccio 32 bit):

00 0000 0000 0000 0000 0000 0000 1001 00

fatto questo lo sommo a pc+4:

pc: 0000 0000 0000 0000 0000 0000 0000 1100 (siamo alla terza istruzione)
pc +4= 0000 0000 0000 0000 0000 0000 0001 0000

ora faccio la somma :
0000 0000 0000 0000 0000 0000 0001 0000 (pc+4 )+
0000 0000 0000 0000 0000 0000 0010 0100

0000 0000 0000 0000 0000 0000 0011 0100 questo è l’indirizzo che prende se il salto viene effettuato


io non ho capito bene... 0000 0000 0000 0000 0000 0000 0000 1100 a cosa si riferisce? e pc+4?
Comment
There are no comments made yet.
Accepted Answer Pending Moderation
pc= istruzione corrente
pc+4= prossima istruzione
Comment
There are no comments made yet.
Accepted Answer Pending Moderation
cosa cavolo è il campo immediate?
Comment
There are no comments made yet.
Accepted Answer Pending Moderation
maken, credo proprio sia come dici, io lo spiego così (ma è equivalente al tuo ragionamento)

beq = (0x00501000 +4 - (0x00501000 +16)
bne = (0x00501000 + 40) - (0x00501000 +32)
j end = 0x00501000 +48
j while = 0x00501000 +8

stevieray
Perche nella beq e nella bnq nella somma di sinistra non ci sono preblemi ma nella somma di destra cioè 0x00501000+16 non capisco perche 16 e non 12.Cosa che accade anche 0x00501000+32, 32 invece di 28
Comment
There are no comments made yet.
Accepted Answer Pending Moderation
Inoltre solo per chiarire definitivamente, nel caso l'indirizzo di partenza sia 0x00501000 il PC+4 diventerebbe:
0000 0000 0101 0000 0001 0000 0001 0000

Grazie!
Comment
There are no comments made yet.
Accepted Answer Pending Moderation
io non ci ho capito una mazza di come si calcolano gli indirizzi!!! :cry: per chi volesse aiutarmi sono tutto orecchie!
spiegatemi bene passo passo l'esercizio che ho postato please :(
Comment
There are no comments made yet.
Accepted Answer Pending Moderation
a me non mi sembra che sia così.
per quanto riguarda l'istruzione: beq $t2, $zero, end, e assumiamo (non ho voglia di fare troppi conti) che l’indirizzo della prima istruzione sia a 0x00000000

allora l'indirizzo di end è: 9 (in decimale) (se partiamo da beq, end è la nona istruzione, cioè il nostro spiazzamento)
dell'indirizzo di questa istruzione prendo 16 bit:
0000 0000 0000 1001 (questa dovrebbe essere la risposta alla domanda che chiede cosa ci sia nel campo immediate dopo la fase di linkaggio)

Qualcuno mi conferma/smentisce???
Sinceramente non ne sono proprio convinto…


penso sia 8 e non 9..si inizia a contare il numero di istruzioni da quella successiva a quella di branch
Comment
There are no comments made yet.
Accepted Answer Pending Moderation
Perche nella beq e nella bnq nella somma di sinistra non ci sono preblemi ma nella somma di destra cioè 0x00501000+16 non capisco perche 16 e non 12.Cosa che accade anche 0x00501000+32, 32 invece di 28


perchè il riferimento è PC+4, quindi l'istruzione dopo il branch.
Comment
There are no comments made yet.
Accepted Answer Pending Moderation
a me non mi sembra che sia così.
per quanto riguarda l'istruzione: beq $t2, $zero, end, e assumiamo (non ho voglia di fare troppi conti) che l’indirizzo della prima istruzione sia a 0x00000000

allora l'indirizzo di end è: 9 (in decimale) (se partiamo da beq, end è la nona istruzione, cioè il nostro spiazzamento)
dell'indirizzo di questa istruzione prendo 16 bit:
0000 0000 0000 1001 (questa dovrebbe essere la risposta alla domanda che chiede cosa ci sia nel campo immediate dopo la fase di linkaggio)

Qualcuno mi conferma/smentisce???
Sinceramente non ne sono proprio convinto…


penso sia 8 e non 9..si inizia a contare il numero di istruzioni da quella successiva a quella di branch


vero hai ragione! :wink:
Comment
There are no comments made yet.
Accepted Answer Pending Moderation
maken, credo proprio sia come dici, io lo spiego così (ma è equivalente al tuo ragionamento)

beq = (0x00501000 +48) - (0x00501000 +16)
bne = (0x00501000 + 40) - (0x00501000 +32)
j end = 0x00501000 +48
j while = 0x00501000 +8

(numeri sommati a destra sono in decimale)
aggiungere 2 bit a destra equivale a contare 4 per ogni istruzione


sarà pure equivalente ma vi vengono due risultati diversi.
a te viene PC + 32, a Maken PC + 52.

Ad ogni modo ho trovato questa
http://homes.dsi.unimi.it/~pedersin/AER ... cchina.pdf
Comment
There are no comments made yet.
Accepted Answer Pending Moderation
penso sia 8 e non 9..si inizia a contare il numero di istruzioni da quella successiva a quella di branch


si, lo spiazzamento è 8 perchè mentre si esegue l'istruzione beq il PC è gia aggiornato (PC+4)
Comment
There are no comments made yet.
Accepted Answer Pending Moderation
ma il PC da dove iniziate a contarlo? dalla prima istruzione? quindi beq $t0, $zero, end punta già a PC+4?
Comment
There are no comments made yet.


There are no replies made for this post yet.
Be one of the first to reply to this post!