View Single Post
Old 02-24-2006, 01:29 PM   #2 (permalink)
redhead
Newbie
 
redhead's Avatar
 
Join Date: Jun 2002
Location: Denmark
Posts: 1,713
redhead is on a distinguished road
I've got a question.. why
Code:
power9 = 9*9*9*9*9;
instead of:
Code:
power9 = 59049; // floor(pow(9,5)), or 9*9*9*9*9
That would save some cyckles, but most of your intelligent compilers will automaticaly sort that out.

With a bit of optimazation, gcc will give you something like this:
Code:
.LC0:
	.string	"%u\n"
	.text
	.p2align 4,,15
.globl main
	.type	main, @function
main:
	pushl	%ebp
	movl	%esp, %ebp
	pushl	%edi
	pushl	%esi
	pushl	%ebx
	subl	$28, %esp
	andl	$-16, %esp
	.p2align 4,,15
.L2:
	movl	stdin, %ebx
	movl	$1, %eax
	movl	$1, %ecx
	movl	%eax, 8(%esp)
	leal	-13(%ebp), %edx
	movl	%ecx, 4(%esp)
	movl	%ebx, 12(%esp)
	xorl	%ebx, %ebx
	movl	%edx, (%esp)
	call	fread
	testl	%eax, %eax
	je	.L19
	.p2align 4,,15
.L5:
	movzbl	-13(%ebp), %edx
	cmpb	$10, %dl
	je	.L6
	leal	0(,%ebx,8), %ecx
	movl	stdin, %esi
	movsbl	%dl,%edi
	subl	%ebx, %ecx
	movl	$1, %edx
	leal	-48(%edi,%ecx), %ebx
	movl	%edx, 4(%esp)
	movl	$1, %ecx
	leal	-13(%ebp), %edx
	movl	%esi, 12(%esp)
	movl	%ecx, 8(%esp)
	movl	%edx, (%esp)
	call	fread
	testl	%eax, %eax
	jne	.L5
.L6:
	movl	%ebx, 4(%esp)
	movl	$59049, %esi
	movl	$954437177, %edi
	movl	$.LC0, (%esp)
	call	printf
	.p2align 4,,15
.L15:
	movl	%ebx, %eax
	xorl	%edx, %edx
	movl	stdout, %ecx
	divl	%esi
	movl	%ecx, 12(%esp)
	movl	$1, %ecx
	movl	%ecx, 4(%esp)
	movl	%edx, %ebx
	addb	$48, %al
	movb	%al, -13(%ebp)
	movl	$1, %edx
	movl	%edx, 8(%esp)
	leal	-13(%ebp), %edx
	movl	%edx, (%esp)
	call	fwrite
	movl	%esi, %eax
	mull	%edi
	shrl	%edx
	testl	%edx, %edx
	movl	%edx, %esi
	jne	.L15
	movb	$10, -13(%ebp)
	movl	stdout, %edi
	movl	$1, %esi
	movl	%esi, 8(%esp)
	movl	$1, %ebx
	leal	-13(%ebp), %eax
	movl	%ebx, 4(%esp)
	movl	%edi, 12(%esp)
	movl	%eax, (%esp)
	call	fwrite
	jmp	.L2
.L19:
	leal	-12(%ebp), %esp
	popl	%ebx
	popl	%esi
	popl	%edi
	popl	%ebp
	ret
	.size	main, .-main
Now with hand uptimazation there are a few instructions which could be eliminated, but execution time would probably be unaffected.
__________________
Don't worry Ma'am, We're university students, We know what We're doing.
-----
If you pull the pin, Mr.Grenade would no longer be your friend.
-----
01000111 01101111 00100000 01000011 00100000 00100001
redhead is offline   Reply With Quote