Linux NASM: Каково значение в ebx, когда вы вызываете sys_exit? - PullRequest
1 голос
/ 13 марта 2011

В среде Linux, если я напишу код NASM следующим образом:

mov eax, 1 ; system call 1 - sys_exit
mov ebx, 0
int 0x80

... каково значение в ebx?

Ответы [ 4 ]

6 голосов
/ 13 марта 2011

Это код завершения процесса - ваш фрагмент более или менее exit(0)

См. эту ссылку для (несколько устаревшего) списка.

3 голосов
/ 14 марта 2011

% ebx - код состояния для системного вызова выхода

Это означает, что все, что хранится в % ebx , будет возвращено в операционную систему. Поэтому после выполнения вашего приложения на терминале введите следующую команду:

echo $?

напечатает код возврата вашего приложения.

Страницы 20, 21, 22 из Программирование с нуля очень хорошо объясняет это.

1 голос
/ 13 марта 2011

В общем случае интерфейс системных вызовов Linux x86 использует eax для хранения номера системного вызова, а затем следующие регистры для аргументов функций справа

  1. EBX
  2. ECX
  3. EDX
  4. еси
  5. еди

Здесь есть очень хорошая таблица системных вызовов, которая описывает большинство системных вызовов Linux:

http://bluemaster.iu.hio.no/edu/dark/lin-asm/syscalls.html

0 голосов
/ 18 марта 2011

mov eax, 1 ; - это код sys_exit

mov ebx, 0 ; значение ebx может быть 0 или 1, 0 означает нормальный выход, 1 означает ошибку.

...