.dsy:it.
Show 150 posts per page

.dsy:it. (http://www.dsy.it/forum/)
- Architettura degli elaboratori e delle reti (http://www.dsy.it/forum/forumdisplay.php?forumid=210)
-- [architettura]comando jal (http://www.dsy.it/forum/showthread.php?threadid=12077)


Posted by karmo on 06-07-2004 14:40:

[architettura]comando jal

ciao ragazzi!
spero che voi mi possiate aiutare!!
allora il mio problema è questo:
io so che il comando jal è composto da 32 bit come tutti del resto, ma c'è una cosa che non riesco a capire!!
nel bit field 25-0 ci va il target!ma..il target è l indirizzo dell istruzione a cui salta o cosa??
per esempio...
[0x0040003c] 0x0c100017 jal 0x0040005c [Foglia] ; 31: jal Foglia

il codice in esadecimale di jal è 0x0c100017
quindi in binario diventa:
0000-1100-0001-0000-0000-0000-0001-0111
i primi sei bit (da sinistra) sono per l opcode(0x3) mentre i restanti sono x il target!
ma questo 00-0001-0000-0000-0000-0001-0111
che cosa vuol dire?
non corrisponde a nessun indirizzo del text segment o data segment!
chi mi puo' aiutare??
grazie mille a chi mi sa dare una risposta!!

__________________
"ki ha scritto queste stronzate!!??" disse il cieco toccando una grattugia!


Posted by T_M_P on 06-07-2004 16:17:

I bit [25-0] sono l'indirizzo in memoria a cui viene esteso il segno per 2 posizioni e a cui viene impostato il Program Counter già aumentato di 4 (o 1 parola). Questà è la teoria..

Nel caso pratico devi fare un estensione del segno di 00-0001-0000-0000-0000-0001-0111 (quindi 0000-0001-0000-0000-0000-0001-0111).. che però non cambia l'indirizzo...
per caso 32 bit dopo c'è qualcosa? (32 bit-> 4 parole (1 parola -> 8 bit)). Magari è già pensato aumentato di 4 parole... Anche se non dovrebbe perchè dovrebbe essere una cosa hardware, non del compilatore...


Posted by mark on 06-07-2004 16:19:

sicuro che 0x0c100017 sia il codice della jal ?

__________________
Non ti perdere di coraggio se ti tocca lavorare molto e raccogliere poco.....


Posted by T_M_P on 06-07-2004 16:20:

Originally posted by mark
sicuro che 0x0c100017 sia il codice della jal ?


Dovrebbe essere il codice della jal compreso dell'indirizzo di salto.. a quanto ho capito da quello che ha scritto..


Posted by karmo on 06-07-2004 16:28:

si esatto è il codice dell istruzione!
mentre quello alla sua sinistra è l indirizzo nel text segment!
cmq si nel bit field 25-0 ci va il target, l indirizzo dell istruzione a cui salta!
e questo bit field corrisponde a
00-0001-0000-0000-0000-0001-0111
che non corrisponde all indirizzo a cui dovrebbe saltare..o meglio..non riesco a tirarlo fuori da questi bit....

__________________
"ki ha scritto queste stronzate!!??" disse il cieco toccando una grattugia!


Posted by mark on 06-07-2004 16:30:

Re: [architettura]comando jal

concordo, ho verificato :D

suo ---> 00001100000100000000000000010111


mio ---> 00001100000100000000000000001001

__________________
Non ti perdere di coraggio se ti tocca lavorare molto e raccogliere poco.....


Posted by karmo on 06-07-2004 16:33:

cmq quello che mi compare nel mips assembler è
[0x0040003c] 0x0c100017 jal 0x0040005c [Foglia] ; 31: jal Foglia

dove Foglia è l etichetta del blocco di istruzioni a cui salta!

Foglia:
add $t0,$a0,$a1 # $a0 + $a1
add $t1,$a2,$a3 # $a2 + $a3
sub $t2,$t0,$t1 # ($a0 + $a1) - ($a2 + $a3)

che comincia a partire dall indirizzo 0x0040005c

io non ci sto capendo + nulla...il target mi sa che si riferisce a qualcos altro..e non all indirizzo a cui salta..oppure fa qualke calcolo prima di mettere l indirizzo nel campo target!BOH!

__________________
"ki ha scritto queste stronzate!!??" disse il cieco toccando una grattugia!


Posted by T_M_P on 06-07-2004 16:33:

Re: Re: [architettura]comando jal

Originally posted by mark
concordo, ho verificato :D

suo ---> 00001100000100000000000000010111


mio ---> 00001100000100000000000000001001

Quindi?


Posted by mark on 06-07-2004 16:34:

mi sa che devi sommare l'offset o BASE = 0x00400000 dal quale parte lo SPIM

__________________
Non ti perdere di coraggio se ti tocca lavorare molto e raccogliere poco.....


Posted by karmo on 06-07-2004 16:34:

scusami mark...ma ke hai fatto?

__________________
"ki ha scritto queste stronzate!!??" disse il cieco toccando una grattugia!


Posted by karmo on 06-07-2004 16:37:

mark..no...
il text segment parte da 0x00400000..
e poi nei bit
00-0001-0000-0000-0000-0001-0111
se volessi portarlo in base 10 mi vien fuori un 2^20=1048576
più 16+4+2+1=1048599....BOH!!!

__________________
"ki ha scritto queste stronzate!!??" disse il cieco toccando una grattugia!


Posted by mark on 06-07-2004 16:39:

ho corretto, andavo a memoria

__________________
Non ti perdere di coraggio se ti tocca lavorare molto e raccogliere poco.....


Posted by karmo on 06-07-2004 16:43:

come si fa a allegare un file?cosi magari se volete ve lo studiate!;P
e mi trovate la soluzione!!:D

__________________
"ki ha scritto queste stronzate!!??" disse il cieco toccando una grattugia!


Posted by superfabius on 06-07-2004 16:44:

c'e' un elenco dei capitoli da studiare per il compito di archi?


Posted by mark on 06-07-2004 16:46:

se quello è il copia e incolla della seconda colonna del programma SPIM mi viene il dubbio che l'indirizzo si riferisca a quello fisico del PC e non a quello virtuale dello SPIM

__________________
Non ti perdere di coraggio se ti tocca lavorare molto e raccogliere poco.....


Posted by karmo on 06-07-2004 16:49:

il programma è il pcspim...e la seconda colonna da sinistra indica il codice dell istruzione esadecimale.
la seconda colonna da destra invece, cioè
0x0040005c [Foglia]
indica l indirizzo nel textsegment dell istruzione, anzi etichetta a cui salta.

__________________
"ki ha scritto queste stronzate!!??" disse il cieco toccando una grattugia!


Posted by T_M_P on 06-07-2004 16:54:

Originally posted by superfabius
c'e' un elenco dei capitoli da studiare per il compito di archi?


Per fare il progettino? Direi che il CAP 3 dovrebbe bastare...


Posted by DeepBlue on 06-07-2004 17:49:

Originally posted by karmo
Foglia:
add $t0,$a0,$a1 # $a0 + $a1
add $t1,$a2,$a3 # $a2 + $a3
sub $t2,$t0,$t1 # ($a0 + $a1) - ($a2 + $a3)

che comincia a partire dall indirizzo 0x0040005c

foglia in decimale -> 4194396 / 4 = 1048599 -> in binario = 1 0000 0000 0000 0001 0111

ecco il tuo indirizzo ;)

__________________
~ get Debian! ~ get FreeBSD! ~ get OpenBSD! ~


Posted by karmo on 07-07-2004 08:32:

noooooooooo!!!
cacchio e chi si immaginava di dover allineare l indirizzo alla doppia parola....
pcspim di merdaaaaaa
grazie mille deepblue!!!!

__________________
"ki ha scritto queste stronzate!!??" disse il cieco toccando una grattugia!


All times are GMT. The time now is 19:43.
Show all 19 posts from this thread on one page

Powered by: vBulletin Version 2.3.1
Copyright © Jelsoft Enterprises Limited 2000 - 2002.