El problema es que al ensamblar con:
Código
gcc -nostartfiles -g -o power power.s
Me da estos errores:
Código:
power.s: Assembler messages:
power.s:10: Error: operand type mismatch for `push'
power.s:17: Error: operand type mismatch for `pop'
power.s:24: Error: operand type mismatch for `push'
power.s:45: Error: operand type mismatch for `pop'
power.s:10: Error: operand type mismatch for `push'
power.s:17: Error: operand type mismatch for `pop'
power.s:24: Error: operand type mismatch for `push'
power.s:45: Error: operand type mismatch for `pop'
Si pongo pushb, pushw, pushl o pushq no se soluciona el problema.
A ver si me podéis ayudar.
Este es mi programa fuente:
Código
.section .data .section .text .globl _start _start: push $3 push $2 call power add $8, %esp push %eax push $2 push $5 call power add $8, %esp pop %ebx add %eax, %ebx mov $1, %eax int $0x80 .type power, @function power: push %ebp mov %esp, %ebp sub $4, %esp mov 8(%ebp), %ebx mov 12(%ebp), %ecx mov %ebx, -4(%ebp) power_loop_start: cmp $1, %ecx je end_power mov -4(%ebp), %eax imul %ebx, %eax mov %eax,-4(%ebp) dec %ecx jmp power_loop_start end_power: mov -4(%ebp), %eax mov %ebp, %esp pop %ebp ret