Lun 18 Marzo, 18:31:26 - 2019

Autore Topic: Funzioni Proposte a lezione  (Letto 105 volte)

0 Utenti e 1 Visitatore stanno visualizzando questo topic.

Offline sebastianArboleda

  • Studente
  • *
  • Post: 1
  • FeedBack: +1/-0
    • Mostra profilo
Funzioni Proposte a lezione
« il: Mer 13 Marzo, 20:27:37 - 2019 »
Salve professori e compagni, vi condivido le mie soluzione per la funzione is_LittleEndian() proposto dal professore Demetrescu, e il Merge scritto in assembly proposto dal proffessore Coppa

int is_little_endian(){
    int *x;
    x = calloc(1,sizeof(int));
    *x = 0xF0000001;
    char *c;
    c  = (char*) x;
    int ris = (*c == 0x1);
    free(x);
    return ris;
}

.globl merge
merge:
    pushl %esi
    pushl %edi
    pushl %ebx
    movl 16(%esp), %eax          # eax = a
    movl 20(%esp), %ebx          # ebx = b
    movl 24(%esp), %ecx          # ecx = c
    xorl %esi, %esi              # esi = i = 0
    xorl %edi, %edi              # edi = j = 0
L0:                              # while(i<na && j<nb)
    cmpl 28(%esp), %esi          # i-na>0
    jg E0
    cmpl 32(%esp), %edi          # j-nb>0
    jg E0
    movl (%eax, %esi, 4), %edx   # if(a<=b)
    cmpl (%ebx, %edi, 4), %edx
    jg L1
    movl %edx, (%ecx)
    incl %esi
    addl $4, %ecx
    jmp L0
L1:
    movl (%ebx, %edi, 4), %edx
    movl %edx, (%ecx)
    incl %edi
    addl $4, %ecx
    jmp L0
E0:
    cmpl 28(%esp), %esi          # i-na>0
    jg E1
    movl (%eax, %esi, 4), %edx
    movl %edx, (%ecx)
    incl %esi
    addl $4, %ecx
    jmp E0
E1:
    cmpl 32(%esp), %edi          # j-nb<0
    jg E2
    movl (%ebx, %edi, 4), %edx
    movl %edx, (%ecx)
    incl %edi
    addl $4, %ecx
    jmp E1
E2:
    popl %ebx
    popl %edi
    popl %esi
    ret

Offline lupin

  • Prof
  • Direttore di Dipartimento
  • ******
  • Post: 2791
  • FeedBack: +340/-14
    • Mostra profilo
Re:Funzioni Proposte a lezione
« Risposta #1 il: Gio 14 Marzo, 17:42:27 - 2019 »
Molto bene per entrambi. Il primo di può semplificare un bel po'. Complimenti per il secondo che è abbastanza rognoso.  :sisi:

Nota: usa il tag [ code ] o il pulsante # sulla navbar del forum per il codice
« Ultima modifica: Gio 14 Marzo, 17:48:27 - 2019 da lupin »
Camil Demetrescu

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