Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Recensione HONOR Magic 8 Lite: lo smartphone indistruttibile e instancabile
Recensione HONOR Magic 8 Lite: lo smartphone indistruttibile e instancabile
Abbiamo provato a fondo il nuovo Magic 8 Lite di HONOR, e per farlo siamo volati fino a Marrakech , dove abbiamo testato la resistenza di questo smartphone in ogni condizione possibile ed immaginabile. Il risultato? Uno smartphone praticamente indistruttibile e con un'autonomia davvero ottima. Ma c'è molto altro da sapere su Magic 8 Lite, ve lo raccontiamo in questa recensione completa.
Sony WF-1000X M6: le cuffie in-ear di riferimento migliorano ancora
Sony WF-1000X M6: le cuffie in-ear di riferimento migliorano ancora
WF-1000X M6 è la sesta generazione di auricolare in-ear sviluppata da Sony, un prodotto che punta a coniugare facilità di utilizzo con una elevata qualità di riproduzione dei contenuti audio e una cura nella riduzione del rumore ambientale che sia da riferimento
Snowflake porta l'IA dove sono i dati, anche grazie a un accordo con OpenAI
Snowflake porta l'IA dove sono i dati, anche grazie a un accordo con OpenAI
Snowflake ha presentato diverse novità per la sua piattaforma legate all'intelligenza artificiale. Quella forse più eclatante è una collaborazione con OpenAI, ma non mancano diverse nuove funzionalità che rendono la piattaforma più flessibile e in grado di rispondere meglio alle esigenze in continuo cambiamento delle aziende
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 09-09-2004, 20:30   #1
Luc@s
Senior Member
 
L'Avatar di Luc@s
 
Iscritto dal: Apr 2002
Città: Vigevano(PV)
Messaggi: 2124
[Asm/C]Asm prodotto e ottimizzazioni

questo è il sorgente C che ho compilato:
Codice:
 
/*
### Copyright (c) 2004 Luca Francesca
### This script is provided under the terms of the GNU General Public License
### (see http://www.gnu.org/licenses/gpl.html for the full license text.)
*/
#include <stdio.h>
#include <stdlib.h>
#define MASK 0x40 /* control bit 6 */

int main(int argc, char *argv[])
{
  unsigned int i = 100, tmp1 , tmp2, tmp3, tmp4;
  tmp1 = i & MASK;
  tmp2 = i ^ MASK;
  tmp3 = (i >> 2);
  tmp4 = (i << 2);
  printf("i = %d \n \
  i & MASK = %d \n \
  i ^ MASK = %d \n \
  i >> 2 = %d \n\
  i << 2 = %d\n", i, tmp1, tmp2, tmp3, tmp4);
  char c;
  scanf("%c", &c);
  return 0;
}
Questo il risultato senza opt:
Codice:
	.file	"i.c"
	.def	___main;	.scl	2;	.type	32;	.endef
	.text
	.align 32
LC0:
	.ascii "i = %d \12   i & MASK = %d \12   i ^ MASK = %d \12   i >> 1 = %d \12  i << 1 = %d\12\0"
LC1:
	.ascii "%c\0"
	.align 2
.globl _main
	.def	_main;	.scl	2;	.type	32;	.endef
_main:
	pushl	%ebp
	movl	%esp, %ebp
	subl	$40, %esp
	andl	$-16, %esp
	movl	$0, %eax
	movl	%eax, -28(%ebp)
	movl	-28(%ebp), %eax
	call	__alloca
	call	___main
	movl	$100, -4(%ebp)
	movl	-4(%ebp), %eax
	andl	$64, %eax
	movl	%eax, -8(%ebp)
	movl	-4(%ebp), %eax
	xorl	$64, %eax
	movl	%eax, -12(%ebp)
	movl	-4(%ebp), %eax
	shrl	%eax
	movl	%eax, -16(%ebp)
	movl	-4(%ebp), %eax
	addl	%eax, %eax
	movl	%eax, -20(%ebp)
	subl	$8, %esp
	pushl	-20(%ebp)
	pushl	-16(%ebp)
	pushl	-12(%ebp)
	pushl	-8(%ebp)
	pushl	-4(%ebp)
	pushl	$LC0
	call	_printf
	addl	$32, %esp
	subl	$8, %esp
	leal	-21(%ebp), %eax
	pushl	%eax
	pushl	$LC1
	call	_scanf
	addl	$16, %esp
	movl	$0, %eax
	leave
	ret
	.def	_scanf;	.scl	2;	.type	32;	.endef
	.def	_printf;	.scl	2;	.type	32;	.endef
Questo con -O3 -std=c99
Codice:
 
	.file	"i.c"
	.def	___main;	.scl	2;	.type	32;	.endef
	.text
	.align 32
LC0:
	.ascii "i = %d \12   i & MASK = %d \12   i ^ MASK = %d \12   i >> 2 = %d \12  i << 2 = %d\12\0"
LC1:
	.ascii "%c\0"
	.align 2
	.p2align 4,,15
.globl _main
	.def	_main;	.scl	2;	.type	32;	.endef
_main:
	pushl	%ebp
	xorl	%eax, %eax
	movl	%esp, %ebp
	pushl	%edx
	pushl	%edx
	andl	$-16, %esp
	call	__alloca
	call	___main
	pushl	%eax
	pushl	%eax
	pushl	$400
	pushl	$25
	pushl	$36
	pushl	$64
	pushl	$100
	pushl	$LC0
	call	_printf
	leal	-1(%ebp), %edx
	addl	$24, %esp
	pushl	%edx
	pushl	$LC1
	call	_scanf
	movl	%ebp, %esp
	xorl	%eax, %eax
	popl	%ebp
	ret
	.def	_scanf;	.scl	2;	.type	32;	.endef
	.def	_printf;	.scl	2;	.type	32;	.endef
La v in O3 sa gia quali valori dare a printf mentre la senza opt li prende dallo stack......questo ad una prima analisi...

Ora vorrei riflettere con voi su una cosa.......ma perche cìè questo divario di codice?

P.S: qualcuno puo postare il codice del VC++6 e del VC++.NET per confrontare l'output??
P.P.S: se volete..chiudetemi il post.....ma secondo me è molto bello vedere le diff tra compilatori
__________________
Gnu/Linux User
Luc@s è offline   Rispondi citando il messaggio o parte di esso
Old 09-09-2004, 21:01   #2
ilsensine
Senior Member
 
L'Avatar di ilsensine
 
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
Cosa ti aspettavi scusa? Che l'ottimizzatore facesse ugualmente i calcoli, anche se poteva conoscere il risultato a priori?
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al
andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12
ilsensine è offline   Rispondi citando il messaggio o parte di esso
Old 09-09-2004, 21:07   #3
Luc@s
Senior Member
 
L'Avatar di Luc@s
 
Iscritto dal: Apr 2002
Città: Vigevano(PV)
Messaggi: 2124
la mia era curiosita
Il mio PS sarebbe motlo interessante cmq, IMHO
__________________
Gnu/Linux User
Luc@s è offline   Rispondi citando il messaggio o parte di esso
Old 09-09-2004, 21:17   #4
ilsensine
Senior Member
 
L'Avatar di ilsensine
 
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
Intanto, IO ho fatto meglio di TE
Codice:
	.file	"aa.c"
	.version	"01.01"
gcc2_compiled.:
	.section	.rodata.str1.32,"ams",@progbits,1
	.align 32
.LC0:
	.string	"i = %d \n   i & MASK = %d \n   i ^ MASK = %d \n   i >> 2 = %d \n  i << 2 = %d\n"
	.section	.rodata.str1.1,"ams",@progbits,1
.LC1:
	.string	"%c"
.text
	.align 16
.globl main
	.type	 main,@function
main:
	subl	$20, %esp
	pushl	$400
	pushl	$25
	pushl	$36
	pushl	$64
	pushl	$100
	pushl	$.LC0
	call	printf
	addl	$24, %esp
	leal	19(%esp), %eax
	pushl	%eax
	pushl	$.LC1
	call	scanf
	xorl	%eax, %eax
	addl	$28, %esp
	ret
.Lfe1:
	.size	 main,.Lfe1-main
	.ident	"GCC: (GNU) 2.96 20000731 (Mandrake Linux 8.2 2.96-0.76mdk)"
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al
andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12
ilsensine è offline   Rispondi citando il messaggio o parte di esso
Old 09-09-2004, 21:53   #5
ilsensine
Senior Member
 
L'Avatar di ilsensine
 
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
...la mano magica
(mi scuso per le .string, ma non mi veniva in mente altro per riservare un pò di spazio )

Codice:
 .file "aa.c"
 .version "01.01"
gcc2_compiled.:
 .section .rodata.str1.32,"ams",@progbits,1
 .align 32
.LC0:
 .string "i = %d \n   i & MASK = %d \n   i ^ MASK = %d \n   i >> 2 = %d \n  i << 2 = %d\n"
 .section .rodata.str1.1,"ams",@progbits,1
.text
 .align 16
.globl main
 .type  main,@function
main:
  movl %esp, (zampa)
  leal zumpa, %esp
  call printf
  movl (zampa), %esp
  ret
.Lfe1:
 .size  main,.Lfe1-main
 .ident "GCC: (GNU) 2.96 20000731 (Mandrake Linux 8.2 2.96-0.76mdk)"
.data
  .string "                                                                                                                                "
  .string "                                                                                                                                "
  .string "                                                                                                                                "
  .string "                                                                                                                                "
  .string "                                                                                                                                "
  .string "                                                                                                                                "
  .string "                                                                                                                                "
  .string "                                                                                                                                "
  .string "                                                                                                                                "
  .string "                                                                                                                                "
  .string "                                                                                                                                "
  .string "                                                                                                                                "
  .string "                                                                                                                                "
  .string "                                                                                                                                "
  .string "                                                                                                                                "
  .string "                                                                                                                                "
  .string "                                                                                                                                "
  .string "                                                                                                                                "
  .string "                                                                                                                                "
  .string "                                                                                                                                "
  .string "                                                                                                                                "
  .string "                                                                                                                                "
  .string "                                                                                                                                "
  .string "                                                                                                                                "
zumpa:
  .long .LC0
  .long 100
  .long 64
  .long 36
  .long 25
  .long 400
zampa:
  .long 0
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al
andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12
ilsensine è offline   Rispondi citando il messaggio o parte di esso
Old 09-09-2004, 21:57   #6
VICIUS
Senior Member
 
L'Avatar di VICIUS
 
Iscritto dal: Oct 2001
Messaggi: 11471
questa è la versione del 3.5
Codice:
	.file	"a.c"
	.section	.rodata.str1.1,"aMS",@progbits,1
.LC0:
	.string	"i = %d \n   i & MASK = %d \n   i ^ MASK = %d \n   i >> 2 = %d \n  i << 2 = %d\n"
.LC1:
	.string	"%c"
	.text
	.align 4
.globl main
	.type	main, @function
main:
	pushl	%ebp
	movl	%esp, %ebp
	pushl	%eax
	pushl	$400
	pushl	$25
	pushl	$36
	pushl	$64
	pushl	$100
	pushl	$.LC0
	call	printf
	leal	-1(%ebp), %eax
	pushl	%eax
	pushl	$.LC1
	call	scanf
	xorl	%eax, %eax
	leave
	ret
	.size	main, .-main
	.ident	"GCC: (GNU) 3.5.0 20040724 (experimental) (Debian 3.5-0pre1)"
	.section	.note.GNU-stack,"",@progbits
ciao
VICIUS è offline   Rispondi citando il messaggio o parte di esso
Old 09-09-2004, 22:07   #7
ilsensine
Senior Member
 
L'Avatar di ilsensine
 
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
Battetemi questa
(oops mi ero scordato la scanf )
Codice:
fmt: .string "%c\0i = %d \n   i & MASK = %d \n   i ^ MASK = %d \n   i >> 2 = %d \n  i << 2 = %d\n"
.globl main
main:
  movl %esp, (zampa)
  leal zumpa, %esp
  call  printf
  leal zompa, %esp
  call scanf
  movl (zampa), %esp
  ret
.data
zampa:
  .zero 4096
zumpa:
  .long fmt+3
  .long 100
  .long 64
  .long 36
  .long 25
  .long 400
zompa:
  .long fmt
  .long zampa+4
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al
andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12

Ultima modifica di ilsensine : 09-09-2004 alle 22:12.
ilsensine è offline   Rispondi citando il messaggio o parte di esso
Old 09-09-2004, 22:32   #8
VICIUS
Senior Member
 
L'Avatar di VICIUS
 
Iscritto dal: Oct 2001
Messaggi: 11471
Quote:
Originariamente inviato da ilsensine
Battetemi questa
(oops mi ero scordato la scanf )
[...]
che opzione hai usato ? -fuse-zompa-labels ? ma se volessi provare anche io ilsecc dove lo posso scaricare ?

ciao
VICIUS è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Recensione HONOR Magic 8 Lite: lo smartphone indistruttibile e instancabile Recensione HONOR Magic 8 Lite: lo smartphone ind...
Sony WF-1000X M6: le cuffie in-ear di riferimento migliorano ancora Sony WF-1000X M6: le cuffie in-ear di riferiment...
Snowflake porta l'IA dove sono i dati, anche grazie a un accordo con OpenAI Snowflake porta l'IA dove sono i dati, anche gra...
Sistema Mesh Roamii BE Pro: il Wi-Fi 7 secondo MSI Sistema Mesh Roamii BE Pro: il Wi-Fi 7 secondo M...
Recensione HUAWEI Mate X7: un foldable ottimo, ma restano i soliti problemi Recensione HUAWEI Mate X7: un foldable ottimo, m...
Hyundai: spunta un'elettrica estremament...
Una connessione diretta con AWS European...
La Toyota Yaris avrà una versione...
Minori sessualizzati da Grok: l'UE mette...
NIO stabilisce il nuovo record di scambi...
Dell Private Cloud sempre più ape...
Ennesimo incidente per la guida autonoma...
Dopo le maniglie, è il turno dei ...
Addio incendi incontrollati? Svolt dice ...
WINDTRE si mette in proprio: vender&agra...
The Mandalorian & Grogu: il trailer ...
OpenClaw sotto attacco: i malware infost...
Resident Evil Requiem: pre-load dal 25 f...
Vaticano, la Messa si traduce in 60 ling...
Kia prepara il facelift della Kia EV5: n...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 05:18.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v