fbpx
Skip to main content

Linux Avanzato 2008-2009

  • COM_EASYSOCIAL_GUEST_NAME
  • Avatar di COM_EASYSOCIAL_GUEST_NAME
  • Visitatori
  • Visitatori
16 Anni 7 Mesi fa #95490 da COM_EASYSOCIAL_GUEST_NAME
Risposta da COM_EASYSOCIAL_GUEST_NAME al topic Linux Avanzato 2008-2009


3) Scrivere un programma nel linguaggio assemblativo x86 con sintassi AT&T che esamina il contenuto di due variabili globali dato1 e dato2 da 32 bit e scrive 1 nel registro %eax se dato1 e' l'immagine speculare di dato2, 0 altrimenti.


che ne dite ?
.section	.rodata

.dato1:	.long	0x00000004
.dato2:	.long	0xa0000000

.LC0:
	.string	"%x\n"
.LC01:
	.string	"bit %x\n"
.LC1:
	.string	"ERRORE !\n"
.LC2:
	.string	"OK!\n"
.LC3:
	.string	"Run numero %d\n"
	.text
.globl main
	.type	main, @function
main:

	leal	4(%esp), %ecx
	andl	$-16, %esp
	pushl	-4(%ecx)
	pushl	%ebp
	movl	%esp, %ebp
	pushl	%ecx
	subl	$36, %esp
/*
 Copio le due variabili in %esi e %edi
 Annullo %ebx che uso come contatore
*/
	movl	.dato1, %esi
	movl	.dato2, %edi
	xorl	%ebx, %ebx
ciclo:
/*
 Stampo il valore di %esi e %edi
*/
	movl	$.LC0, (%esp)
	movl	%esi, 4(%esp)
	call	printf
	movl	%edi, 4(%esp)
	call	printf
/*
 Ruoto verso sinistra %edi di 1 bit
 e stampo il nuovo valore
*/
	roll	$1, %edi
	movl	%edi, 4(%esp)
	call	printf
/*
 Salvo il valore di %esi e %edi
*/
	pushl	%edi
	pushl	%esi
/*
 Prendo il bit meno significativo di %esi
 e lo stampo
*/
	andl	$0x00000001, %esi	
	subl	$12, %esp
	movl	%esi, 4(%esp)
	movl	$.LC01, (%esp)
	call	printf
	addl	$12, %esp
/*
 Prendo il bit meno significativo di %edi
 e lo stampo
*/
	andl	$0x00000001, %edi
	subl	$12, %esp
	movl	%edi, 4(%esp)
	movl	$.LC01, (%esp)
	call	printf
	addl	$12, %esp
/*
 Confronto i due bit ed esco su errore
 se non corrispondono
*/
	cmpl	%esi, %edi
	jnz	errore
/*
 Ripristino %esi e %edi
*/
	popl	%esi
	popl	%edi
/*
 Shifto a destra %esi e lo stampo
*/
	shrl	$1, %esi
	subl	$12, %esp
	movl	%esi, 4(%esp)
	movl	$.LC0, (%esp)
	call	printf
	addl	$12, %esp
/*
 Incremento il contatore ed esco con
 sucesso se vale 32, sennò ciclo
*/
	addl	$1, %ebx
	subl	$12, %esp
	movl	%ebx, 4(%esp)
	movl	$.LC3, (%esp)
	call	printf
	addl	$12, %esp
	cmpl	$32, %ebx
	je	ok
	jmp	ciclo
ok:	
	movl	$.LC2, (%esp)
	call	printf
	movl	$1, %eax
	jmp	esci
errore:
	popl	%esi
	popl	%edi
	movl	$.LC1, (%esp)
	call	printf
	movl	$0, %eax
esci:
	addl	$36, %esp
	popl	%ecx
	popl	%ebp
	leal	-4(%ecx), %esp
	ret
	.size	main, .-main
	.ident	"GCC: (Debian 4.3.2-1.1) 4.3.2"
	.section	.note.GNU-stack,"",@progbits

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • COM_EASYSOCIAL_GUEST_NAME
  • Avatar di COM_EASYSOCIAL_GUEST_NAME
  • Visitatori
  • Visitatori
16 Anni 7 Mesi fa #95491 da COM_EASYSOCIAL_GUEST_NAME
Risposta da COM_EASYSOCIAL_GUEST_NAME al topic Linux Avanzato 2008-2009
Non si capisce, in quanto sono stati fatti solo 5 nomi, persone che, testuali parole, "saranno premiate". Gli altri si vedrà, in quanto:
- per il programma da correggere di giovedì, il termine ultimo è diventato improvvisamente le 18 del giovedì, poi forse le 24 del giovedì, mentre inizialmente era le 14 del venerdì. Ma la cosa è molto confusa, e probabilmente verranno "premiati" solo i primi 2 che hanno inviato la soluzione;
- la patch assegnata martedì andava bene solo se accompagnata da sperimentazioni e da stampe di prova. Una patch funzionante accompagnata da un readme illustrativo dettagliato ma senza stampe di prova non porterà ad "essere premiati". Il limite per l'invio delle stampe di prova e' ormai scaduto, anche se si inviano solo queste e la patch era stata già inviata.

La stessa entità del "premio", che dovrebbe al 99% consistere nell'esonero dalla seconda prova, ieri non è stata mai esplicitamente specificata da lui.

Insomma, non si è smentito nel suo modo di fare.

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • COM_EASYSOCIAL_GUEST_NAME
  • Avatar di COM_EASYSOCIAL_GUEST_NAME
  • Visitatori
  • Visitatori
16 Anni 7 Mesi fa #95492 da COM_EASYSOCIAL_GUEST_NAME
Risposta da COM_EASYSOCIAL_GUEST_NAME al topic Linux Avanzato 2008-2009
A proposito, ma avete capito voi dove sarà il test?
Che vuol dire T5+T6 PP2?

Si prega Accedi o Crea un account a partecipare alla conversazione.

Di più
16 Anni 7 Mesi fa #95494 da Stefano Annunziato

A proposito, ma avete capito voi dove sarà il test?
Che vuol dire T5+T6 PP2?


Credo sia T5 T6 SoGeNe.

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • COM_EASYSOCIAL_GUEST_NAME
  • Avatar di COM_EASYSOCIAL_GUEST_NAME
  • Visitatori
  • Visitatori
16 Anni 7 Mesi fa #95509 da COM_EASYSOCIAL_GUEST_NAME
Risposta da COM_EASYSOCIAL_GUEST_NAME al topic Linux Avanzato 2008-2009
Sì anch'io credo così...ma chi ci dice che non sia aule 5 e 6 PP2?

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • COM_EASYSOCIAL_GUEST_NAME
  • Avatar di COM_EASYSOCIAL_GUEST_NAME
  • Visitatori
  • Visitatori
16 Anni 7 Mesi fa #95514 da COM_EASYSOCIAL_GUEST_NAME
Risposta da COM_EASYSOCIAL_GUEST_NAME al topic Linux Avanzato 2008-2009

Sì anch'io credo così...ma chi ci dice che non sia aule 5 e 6 PP2?

Io...perchè l'ho chiesto ieri dopo la lezione al prof! :)
si è sbagliato a scrivere...è in T5/T6 a sogene

Si prega Accedi o Crea un account a partecipare alla conversazione.