Пытаюсь собрать линукс и столкнулся со следующей проблемой. Я только начинаю, поэтому моя программа относительно проста и основана на некоторых примерах, которые я нашел на linuxassembly. Он принимает первый аргумент, переданный в командную строку, и распечатывает его. Вот что у меня пока...
section .bss
test_string: resb 3
section .text
global _start
_start:
pop ebx ;argument number
pop ebx ;program name
pop ebx ;first argument
mov [test_string],ebx
mov eax,4
mov ebx,1
mov ecx,test_string
mov edx,3
int 80h
mov eax,1
mov ebx,0
int 80h
Я знаю, что это плохо написано, но, поскольку я новичок в этом, я просто хочу лучше понять, как работают инструкции/переменные сборки, прежде чем двигаться дальше. Я собираю и связываю с помощью...
nasm -f elf first.asm
ld -m elf_i386 -s -o first first.o
Затем я бегу, используя..
./first one two
Я думал, что он напечатает one
, но он выводит тарабарщину вроде Y*&
. Что я делаю не так? Мой test_string
не того типа?