Mar 25 Giugno, 11:36:47 - 2019

Autore Topic: Soluzioni esercizi per casa  (Letto 182 volte)

0 Utenti e 1 Visitatore stanno visualizzando questo topic.

Offline Heinzeen

  • Studente
  • *
  • Post: 4
  • FeedBack: +3/-0
    • Mostra profilo
Soluzioni esercizi per casa
« il: Dom 17 Marzo, 12:35:17 - 2019 »
Salve, queste sono le mie soluzioni per gli esercizi che ci ha lasciato il prof. Coppa a lezione.
1)Big/little endian:

Codice: [Seleziona]
.globl is_little_endian
is_little_endian:
subl $4, %esp
movl $0xDEADBEEF, (%esp)
cmpb $0xEF, (%esp)
je E
movl $0, %eax
addl $4, %esp
ret
E: movl $1, %eax
addl $4, %esp
ret

2) Merge:

Codice: [Seleziona]
.globl merge
merge: pushl %ebx
pushl %edi
pushl %esi

movl 16(%esp), %eax #a in eax
movl 20(%esp), %ebx #b in ebx
movl 24(%esp), %ecx #c in ecx
movl $0, %edx #i=0 in edx
movl $0, %edi #j=0 in edi
movl $0, %esi #k=0 in esi

#primo while

L: cmpl %edx, 28(%esp)
jle F
cmpl %edi, 32(%esp)
jle F

pushl %esi #libero esi
movl (%eax, %edx, 4), %esi
cmpl (%ebx, %edi, 4), %esi
popl %esi #riprendo esi
jg H

pushl %edi #libero edi
movl (%eax, %edx, 4), %edi
movl %edi, (%ecx, %esi, 4)
popl %edi #riprendo edi
incl %edx
jmp I

H: pushl %edx #libero edx
movl (%ebx, %edi, 4), %edx
movl %edx, (%ecx, %esi, 4)
popl %edx #riprendo edx
incl %edi

I: incl %esi
jmp L

#ultimi due while

F: cmpl %edx, 28(%esp)
jle G
pushl %edi #libero edi
movl (%eax, %edx, 4), %edi
movl %edi, (%ecx, %esi, 4)
popl %edi #riprendo edi
incl %edx
incl %esi
jmp F

G: cmpl %edi, 32(%esp)
jle E
pushl %edx #libero edx
movl (%ebx, %edi, 4), %edx
movl %edx, (%ecx, %esi, 4)
popl %edx #riprendo edx
incl %edi
incl %esi
jmp G

E: popl %esi
popl %edi
popl %ebx
ret

Volevo inoltre rispondere al prof. Demetrescu, che ci ha citato un gioiello del mondo del cinema, con un passo storico di un film altrettanto importante: https://www.youtube.com/watch?v=B6-coj9oHr8. Colgo l'occasione per augurarle buona fortuna e buona guarigione :) .
Ad maiora semper!

Offline lupin

  • Prof
  • Direttore di Dipartimento
  • ******
  • Post: 2804
  • FeedBack: +340/-14
    • Mostra profilo
Re:Soluzioni esercizi per casa
« Risposta #1 il: Mer 20 Marzo, 06:50:59 - 2019 »
Citazione
Volevo inoltre rispondere al prof. Demetrescu, che ci ha citato un gioiello del mondo del cinema, con un passo storico di un film altrettanto importante: https://www.youtube.com/watch?v=B6-coj9oHr8. Colgo l'occasione per augurarle buona fortuna e buona guarigione :) .

grazie! Epico quel passaggio de Il Gladiatore  8)
Camil Demetrescu

"If you think education is expensive, try ignorance" (Robert Orben)

Offline lupin

  • Prof
  • Direttore di Dipartimento
  • ******
  • Post: 2804
  • FeedBack: +340/-14
    • Mostra profilo
Re:Soluzioni esercizi per casa
« Risposta #2 il: Mer 20 Marzo, 06:53:01 - 2019 »
is_little_endian lo puoi fare con poche righe asm (assemlby), prova a semplificarlo  ;)
Camil Demetrescu

"If you think education is expensive, try ignorance" (Robert Orben)

Offline Heinzeen

  • Studente
  • *
  • Post: 4
  • FeedBack: +3/-0
    • Mostra profilo
Re:Soluzioni esercizi per casa
« Risposta #3 il: Mer 20 Marzo, 21:05:01 - 2019 »
Forse coś va meglio:
Codice: [Seleziona]
.globl is_little_endian
is_little_endian:
movl $0x00BEEF01, -4(%esp)
movzbl -4(%esp), %eax
ret

Mi risparmio il controllo del valore se metto dei valori "migliori" nel primo e nel quarto byte :sisi:
« Ultima modifica: Mer 20 Marzo, 21:40:13 - 2019 da Heinzeen »
Ad maiora semper!