[ 4A6F76616E4B @ 11.01.2008. 22:33 ] @
Jel neko zna da prevede ovaj kod iz C programskog jezika u MIPS.


int samo_negativni(int X[], int N, int Y[]) {
int i=0, k=0 Y[0]=1;
while (i<N){
if (X<0) {
Y[k]=X;
broj=X[i-1];
k=k+1;
}
i=i+1;
}
return k;
}


[ bkaradzic @ 11.01.2008. 22:52 ] @
Zna gcc.gnu.org za MIPS. ;)
Ako imaš MIPS mašinu sa Linux-om (npr. PS2) onda imaš MIPS GCC instaliran. Ako imaš samo x86 mašinu onda kompajliraš kros kompajler za MIPS.
[ JagodaV @ 11.01.2008. 22:57 ] @
if (X<0) {
Y[k]=X;


Jesi mislio ovo da bude
Code:
 X[i]? 


Pokusacu ja veceras ako ne resis vec.
[ 4A6F76616E4B @ 11.01.2008. 23:09 ] @
Da moja greska treba umjesto Y[k]=k da je Y[k]=X

@bkaradzic

Ovo mi ne treba da se kompajlira, vec da se uradi na papiru, ovo mi je jedan od zadataka na ispitu.
[ bkaradzic @ 11.01.2008. 23:15 ] @
Ako kompajliraš kod sa -S ili -Wa,-a,-ad opcijom u GCC-u, dobijaš listing sa asemblerom.
[ 4A6F76616E4B @ 11.01.2008. 23:24 ] @
Da li trenutno nemam ni LINUX instaliran, instaliracu ovih dana pa cu kompajlirati. Dakle dobicu ono sto meni treba, a to je kod. Hvala
[ Shadowed @ 11.01.2008. 23:28 ] @
Citat:
4A6F76616E4B: Da moja greska treba umjesto Y[k]=k da je Y[k]=X[i]

Y[k]=k nigde i nemas :)
Ali jeste, umesto Y[k] = X treba Y[k] = X[i]
Isto i umesto if (X<0) treba if(X[i]<0)

OK, znam, ovo nije ono sto si trazio, al' za assembly ce se Jagoda pobrinuti ;]
[ JagodaV @ 11.01.2008. 23:35 ] @
Pa ja mislila da ne moram jer ce onaj nacin resiti?:)

Ali ako ti je za ispit, pokusaj sam resiti prvo.
[ 4A6F76616E4B @ 11.01.2008. 23:35 ] @
Citat:
Y[k]=k nigde i nemas :)
Ali jeste, umesto Y[k] = X treba Y[k] = X
Isto i umesto if (X<0) treba if(X<0)

OK, znam, ovo nije ono sto si trazio, al' za assembly ce se Jagoda pobrinuti ;]


Upravo je sve tako kako si napisao. I mene i buni to X, ne znam kako se definiše, kao ni kako se definiše ovo Y[0] koje se javlja na početku samoga koda.
[ 4A6F76616E4B @ 11.01.2008. 23:46 ] @
Citat:
Pa ja mislila da ne moram jer ce onaj nacin resiti?:)

Ali ako ti je za ispit, pokusaj sam resiti prvo.


E kada bih ja znao ne bi ovdje Vas pitao.
[ Shadowed @ 12.01.2008. 00:02 ] @
Citat:
JagodaV: Pa ja mislila da ne moram jer ce onaj nacin resiti?:)

Ma salio sam se ja, nije ovo biro za domace zadatke :) Lepo je dobio savet kako moze da uradi a moze i da se pomuci prvo malo.


@4A6F76616E4B, bez ljutnje, ali trebalo bi da prvo malo naucis, i C i asm, pa da probas sam i kad u nekom delu zapne da pitas za pomoc. Nije praksa da se na forumu ovako rade kompletne stvari (cak i u pravilniku stoji).
[ 4A6F76616E4B @ 12.01.2008. 00:14 ] @
Ok aj ovih dana cu da rijesim ovaj zadatak, bar ono sto znam, a sto se tice C-a on je OK, njega znam (dosta, dosta vise nego sto mi za ovo treba). Za vikend cu da rijesim zadatak pa onda trazim pomoc za ono sto ne znam.

I ne ljutim se, ja sam opusten covjek, hhahahahahah
[ 4A6F76616E4B @ 14.01.2008. 12:40 ] @
Kolega Željko mi je ovo uradio i detaljno objasnio, pa ako kome zatreba evo da se ima.
Hvala Željko

Y[0]=1
Y[k]=X;
broj=X[i-1];

-------------------------------
y[0]=1

to ces zapisati ovako.. y smjesteno u $12

addi $17, $0, 1 # $17=1
sw $17, 0 ($12) # y[0]=1

---------------------------------------
y[k]=x
k smjestano u $4

muli $7, $4, 4 # $7= k*4
add $8, $12, $7 # adresa od y[k]
lw $9, 0 ($8) # $9= y[k]

x smjesteno u $13
i smjesteno u $5

muli $6, $5, 4 # $9= 4*i
add $9, $13, $6 # adresa od x
lw $10, 0 ($9) # $10= x

to dvoje izjednacis, moze move, a moze add, svejedno
----------------
broj=X[i-1]

ovo dobijes prvo broj=X pa onda -4 od prve adrese

ako si dobio gore da je u $10=x
onda ce -4 biti za jednu poziciju manje,
a to ovako..
lw $11, -4 ($9) # $11= x[i-1]
da ti se trazilo x[i+1] onda bi bilo..
lw $12, 4 ($9) # $12= x[i+1]
da se trazilo x[i-2] onda bi bilo..
lw $13, -8 ($9) # $13=x[i-2]
da se trazilo x[i+2] onda bi bilo..
lw $13, 8 ($9) # $13=x[i+2]