Здесь:
Starting program: /root/assembler_program/bsawp.o
вы пытаетесь запустить перемещаемый объектный файл. Не делай этого.
Вы должны сначала связать ваш объект с исполняемым файлом. Примерно так:
gcc -nostdlib -nostartfile test.s
Здесь:
Starting program: /root/assembler_program/bsawp
вы, очевидно, связали bsap.o
с исполняемым файлом. Авария происходит здесь:
(gdb) x/i $pc
=> 0x400079 <_start+1>: mov 0x12345678,%ebx
Эта инструкция пытается загрузить значение с адреса 0x12345678
в регистр. Но этот адрес не указывает на правильную ячейку памяти.
Скорее всего, вы хотели, чтобы он загрузил константу 0x12345678
, и в этом случае вам нужна инструкция:
movl $0x12345678, %ebx
С этим исправлением я получаю ожидаемое:
(gdb) run
Starting program: /tmp/a.out
[Inferior 1 (process 238270) exited with code 022]
(gdb) p/x 022
$1 = 0x12