sexta-feira, 1 de outubro de 2010

complexidade para calcular 2**3 + 5**2 comparação asm vs python

uma comparação de complexidade entre asm e python para para fazer um simples calculo

#o propósito deste código é para mostrar como funciona uma função
#mas resolvi fazer uma comparação entre o tamanho do código entre python e asm
#utilizando o gasm para calcular 2**3 + 5**2
.section .data
.section .text
.globl _start
_start:
pushl $3
pushl $2
call power
addl $8, %esp
pushl %eax
pushl $2
pushl $5
call power
addl $8, %esp
popl %ebx
addl %eax, %ebx
movl $1, %eax
int $0x80

.type power, @function
power:
pushl %ebp
movl %esp, %ebp
subl $4, %esp
movl 8(%ebp), %ebx
movl 12(%ebp), %ecx
movl %ebx, -4(%ebp)
power_loop_start:
cmpl $1, %ecx
je end_power
movl -4(%ebp), %eax
imul %ebx, %eax


movl %eax, -4(%ebp)
decl %ecx
jmp power_loop_start

end_power:
movl -4(%ebp), %eax
movl %ebp, %esp
popl %ebp
ret

teste realizado no linux.

salve o código em um arquivo chamado teste.as
compile o código
as teste.as -o teste.o
depois é preciso linkar
ld teste.o -o teste
e então execute o programa
não imprimirá na tela o valor 33, portanto para obter o resultado é necessário usar echo $? .


em python vc só precisa entrar no interpretador e calcular 2**3 + 5**2 e retornará 33 como resultado.

então da pra notar o nível de dificuldade de programação entre python e asm.

Nenhum comentário:

Postar um comentário