Please ignore secret bonuses. Secret tests do NOT award bonus. Max hw grade is 30+2 bonus efficiency

[HOMEWORK] Homework 1: rovesciamento orizzontale di una immagine (sinistra <-> destra)

andrea.sterbini (207920 points)
749 1267 2373
in Annunci by (208k points)
edited by

ATTENZIONE: gli script che eseguono i test hanno qualche problema, ci sto lavorando.

Per favore commentate sotto se non vi tornano i risultati

AE_01_matrix_reverse 

Esercizio 3 - Flip di una immagine in formato lineare (PDF di una versione formattata meglio)

E' fornito uno stream di dati che può essere pensato come un'immagine potenzialmente infinita. Sappiamo che ogni pixel P dell'immagine è codificato in formato RGBA (Red, Green, Blue, Alpha) e ogni valore di colore R,G,B,A è codificato su 31bit di profondità. 

I valori sono quindi codificati su [0,2^31-1] . 

Sappiamo a priori quanto è lunga ciascuna riga, cioè conosciamo il numero di pixel P che compongono ciascuna riga. Il numero di pixel e' W. Non sappiamo a priori quante righe vi sono nell'immagine, potenzialmente potremmo avere anche un numero infinito di righe. Quindi, altresì, non conosciamo il numero della colonne. Sappiamo però che lo stream di righe termina quando incontriamo il valore decimale -1. 

Lo stream di dati è fornito tramite un file di testo che è posto in input al programma. Il file è formattato secondo lo schema: <valore_intero> \n 

Ad esempio il file sottostante indica: 

Ogni riga è composta da 2 pixel RGBA, ossia W=2. 

Scrivete il programma assembly MIPS che: 

  • legge il numero intero 0 <= W <= 100 
  • legge la sequenza di pixel 

I valori letti in input sono tutti valori interi seguiti da accapo in modo che li possiate leggere con la syscall 5. 

Esempio di input/output: 

Input: (commentato, nei test NON ci saranno commenti) 

2 # W 
74 # R1 1st pixel - 1st row 
235 # G1 
232 # B1 
89 # A1 
201 # R2 2nd pixel 
179 # G2 
221 # B2 
56 # A2 
62 # R1 1st pixel - 2nd row (nota, non sappiamo quante righe abbiamo) 
41 # G1
233 # B1 
134 # A1 
24 # R2 2nd pixel - 2nd row 
104 # G2 
171 # B2 
117 # A2 
-1 # end 

Da notare che il file allegato test-M00.in è privo dei commenti: 

Scrivete il programma assembly MIPS che: legge il numero intero 0 <= W < 100 legge la sequenza di pixel I valori letti in input sono tutti valori interi seguiti da accapo in modo che li possiate leggere con la syscall 5. 

Il programma deve stampare una matrice lineare come quella in ingresso ma con un ordine diverso. 

L'ordine della nuova matrice deve invertire la sequenza di ogni riga. Ossia stampare il seguente file, considerando l'esempio visto prima, deve generare la sequenza: 

201 # R2 2nd pixel della matrice adesso appare in prima posizione. 
179 # G2 
221 # B2 
56 # A2 
74 # R1 1st pixel - 1st row, viceversa il primo pixel della prima matrice è ora in ultima po 235 # G1 
232 # B1 
89 # A1 
24 # R2 2nd pixel - now 2nd row begins, 104 # G2 
171 # B2 
117 # A2 
62 # R1 1st pixel - 2nd row (nota, non sappiamo quante righe abbiamo) 
41 # G1 
233 # B1 
134 # A1 
-1

Suggerimento: Potete stampare i numeri passo passo utilizzando le system calls: 

# print int, code $v0⟵1 , $a0 prende input 

# print char , code $v0⟵11, $a0 prende input per stampare il numero e il carattere newline. Altro caso con 3 righe nel file test-M-01.in : 

3 
74 #1 
235 
232 
89 
201 #2 
179 
221 
56 
62 #3 
41 
233 
134 
24 #1 
104 
171 
117 
158 #2 
104 
91 
72 
96 #3 
177 
189 
209 
-1 

Il programma deve generare: 

62 # 3 
41 
233 
134 
201 #2 
179 
221 
56 
74 #1 
235 
232 
89 
96 #3 
177 
189 
209 
158 #2 
104 
91 
72 
24 #1 
104 
171 
117 
-1 

Sono allegati i file di input del programma e anche il file di testo atteso (expected output). Dato che avete expected output potete anche debuggare il risultato usando diff sui sistemi Unix.

Per i sistemi Windows per la comparazione è possibile usare programmi grafici appositi oppure seguire questo link che usa Powershell https://serverfault.com/questions/5598/how-do-i-diff-two text-files-in-windows-powershell 

Per eseguire i test in locale: 

aprite una finestra di comando/console e posizionatevi nella directory in cui avete messo i file: il programma program01.asm da voi sviluppato 

il simulatore Mars4_5.jar 

un file di esempio di input test-M-01.in 

il corrispondente file di output atteso test-M-01.out 

Eseguite in console il comando: 

java -jar Mars4_5.jar me nc sm ic program01.asm < test-M-01.in > my_output-M-01.txt 

in questo modo produrrete nel file my_output-M-01.txt le stampe del vostro programma confrontate il file my_output-M-01.txt con il file test-M-01.out , se sono uguali il test è superato 

Trovate i 5 casi di test su cui allenarvi in allegato

Per maggiori informazioni su come eseguire mars con input e output si veda: https://q2a.di.uniroma1.it/21689/homework-test-homework?course=annunci/architetture-20-21 Come sempre scrivere nei commenti sotto se trovate bug o incongruenze che sistemiamo.

Consegna

Consegnate SOLO il file program.asm che avete scritto, usando la pagina https://q2a.di.uniroma1.it/homeworks/delivery?homework=2

1.3k views

11 Answers

M
Mmariotti (480 points)
1 2 7
by (480 points)
Buonasera professore, ho consegnato l'homework assegnato ma, nonostante eseguendo i controlli sulla powershell tutti i risultati che ottengo coincidano con l'output atteso, sulla VM non passo neanche un test. Sto sbagliando qualcosa nella consegna?

Grazie.
andrea.sterbini (207920 points)
749 1267 2373
by (208k points)
Gli script sulla VM funzionano quando li lancio a mano ma non la prima volta che si consegna. Potresti provare a riconsegnare?
M
Mmariotti (480 points)
1 2 7
by (480 points)
Ho riconsegnato il file, purtroppo continuo a non passare neanche un test.
andrea.sterbini (207920 points)
749 1267 2373
by (208k points)
Stasera li lancio a mano
f
fabrizio_ancaiani (1790 points)
0 0 9
by (1.8k points)
Buonasera,

>Per favore commentate sotto se non vi tornano i risultati

segnalo la mia consegna di oggi, che qui ha passato 0 test (ma sul mio pc sembra tutto ok).

Grazie.
r
roxana2358 (290 points)
1 2 3
by (290 points)
Anche io non passo alcun test sulla VM, però lanciando i test sul PC i risultati sono giusti.
c
c.giannobile (660 points)
0 2 6
by (660 points)
Salve Professore,

anche il mio programma non passa alcun test, nonostante in locale sembrerebbero essere andati tutti a buon fine.

Grazie.
andrea.sterbini (207920 points)
749 1267 2373
by (208k points)
Ho lanciato i test a mano.
Afelium (770 points)
6 12 21
by (770 points)
Salve, volevo chiedere se per questo homework è richiesta la conoscenza degli heap, poichè seguendo le lezioni del mio canale (M-Z architetture degli elaboratori) non mi pare che l'argomento sia stato affrontato; nel caso mi sbagliassi, vi prego di farmelo presente
andrea.sterbini (207920 points)
749 1267 2373
by (208k points)
No, dato che ogni riga della immagine ha una lunghezza limitata non è necessario
iacopomasi (5230 points)
45 64 94
by (5.2k points)
Si, esatto vi preghiamo di avere un po' di pazienza cosi che riusciamo a trovare quello che non va. Grazie!
F
FraCristoforo_ (160 points)
0 0 1
by (160 points)
Buonasera, rispondo a questo post per segnalare che la mia consegna di oggi su q2a non passa nessun test, mentre sulla mia macchina li passa tutti.

Grazie.
andrea.sterbini (207920 points)
749 1267 2373
by (208k points)
Ho rilanciato gli script a mano
f
fabrizio.trivellini (170 points)
0 0 1
by (170 points)
Ho finalmente consegnato l'homework (per via del sito giù) ma sulla piattaforma q2a non passa nessun test, mentre sulla mia macchina li passa tutti Attenderò l'avvio manuale dei test (come nei commenti passati). grazie mille professore
plm (18850 points)
13 15 118
by (18.9k points)
Anche io ho appena consegnato (avevo consegnato già il 6) ma non passa nessun test. Aspetto che avvii manualmente i test. Grazie.
a
alessio_pannozzo (1130 points)
1 4 7
by (1.1k points)
Ho riconsegnato il file dopo aver apportato una modifica e non passa i test, mentre sul mio pc si. Attendo l'avvio manuale dei test.
andrea.sterbini (207920 points)
749 1267 2373
by (208k points)
Fatto                                            .
1
1934865 (700 points)
0 2 4
by (700 points)
ho lo stesso probema
a
a.vitale (140 points)
0 0 1
by (140 points)
Buonasera professore,

ho consegnato l'homework ora e non passa nessuno dei test. In locale sembra essere tutto ok.

Grazie