Uczę się asemblera x86 w środowisku Linux. Napisałem prosty program jednak zwraca on segmentation fault. Już za długo szukam miejsca gdzie odwołuję się do nieprzydzielonej pamięci dlatego proszę Was o pomoc.
Program szuka największej liczby
.section data.
data_items:
.long 3,67,34,222,45,76,45,43,444,99,0
.section .text
.globl _start
_start:
movl $0, %edi
movl data_items(,%edi,4), %eax # przy wykonywaniu tego daje seg. fault-a
movl %eax, %ebx
start_loop:
cmpl $0, %eax
je loop_exit
incl %edi
movl data_items(,%edi,4), %eax
cmpl %ebx, %eax
jle start_loop
movl %eax, %ebx
jmp start_loop
loop_exit:
movl $1, %eax
int $0x80