Я пишу код сборки, который можно скомпилировать:
as power.s -o power.o
возникает проблема, когда я связываю файл объекта power.o:
ld power.o -o power
Чтобы работать на 64-битной ОС (Ubuntu 14.04), я добавил .code32 в начале файла power.s, но все равно получаю ошибку:
Ошибка сегментации (сброс ядра)
 power.s:
.code32
.section .data
.section .text
.global _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
imull %ebx, %eax
movl %eax, -4(%ebp)
decl %ecx
jmp power_loop_start
end_power:
movl -4(%ebp), %eax 
movl %ebp, %esp
popl %ebp
ret
