Здравствуйте, я вообщем тут изучаю ассемблер (nasm), в процессе обучения наткнулся на такую ошибку что не могу получить аргументы при вызове своей программы.
Вот текст (test.asm):
; section .data
; s : db "test"
section .text
global _start
_start:
pop rcx ; число аргументов
pop rcx ; имя программы
pop rcx ; первый параметр
; mov rcx, s
mov rax, 4 ; sys_write
mov rbx, 1 ; stdout
; в rcx содержится первый входной параметр
mov rdx, 4 ; длина строки, ставлю например 4
int 80h
mov rax, 1 ; sys_exit
mov rbx, 0 ; код завершения
int 80h
Компилирую так:
$ nasm -f elf64 test.asm
$ ld -s -o test test.o
Запускаю:
$ ./test one two three four five six seven
$
- Результат как видите пусто. Во всех туториалах (ну например http://leto.net/writing/nasm.php) описывается что аргументы программы можно получить через стек, но вот у меня ничего не выходит. Что я делаю не так?
ЗЫ:
$ uname -a
Linux debian.site 2.6.22-3-amd64 #1 SMP Sun Nov 4 18:18:09 UTC 2007 x86_64 GNU/Linux