|
[ 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]
Copyright (C) 2001-2025 by www.elitesecurity.org. All rights reserved.
|