LINUX.ORG.RU

Нумерация системных функций в ассемблере

 ,


0

1

Привет всем,

Занялся изучением ассемблера (зачем не спрашивайте :)) и встретился с нумерацией системных функций.

Понятно, что: movl $4, %eax - вывод, где $4 системная функция вывода, поигравшись еще выяснилось, что $3 - ввода. Читаю это:

http://ru.wikibooks.org/wiki/Ассемблер_в_Linux_для_программистов_C#.D0.92.D0....

Но к сожалению адекватного разъяснения этих функций нет, или даже мелкого тейбла. Может кто-нибудь располагает соответствующей литературой?

Спасибо



Последнее исправление: Klymedy (всего исправлений: 1)

разъяснение /usr/include/asm*/unistd*.h?

man :) man 2 write, man 2 dup3, man etc/

anonymous
()

В ассемблере нет системных функций.

anonymous
()

Читаешь, например, вот это. Или ищешь другое по "linux x86 syscall list".

Потом читаешь man 2 read, man 2 write и так далее. Порядок передачи параметров берёшь из мана, про порядок регистров ты уже должен знать, судя по вопросу. Если ещё вопросы — ищешь linux x86 calling convention.

d ★★★★
()

Там же отличные комментарии: сначала в аккумулятор поместили номер нужного сисвызова, потом в другой регистр загнали номер файлового дескриптора. Как сказал аноним, можно в include'ах посмотреть, какому сисвызову какой номер соответствует.

Anon
()
Ответ на: комментарий от Anon

Да теперь понял, я думал, что эти функции как библиотеки ассемблера, а оказывается это реальные фунции предоставляемые ядром.

maxylopes
() автор топика
Ответ на: комментарий от maxylopes

Только учти что у разных платформ номера системных вызовов отличаются. Даже у x86 и x86-64.

true_admin ★★★★★
()
Ответ на: комментарий от Anon

Как сказал аноним, можно в include'ах посмотреть, какому сисвызову какой номер соответствует.

Можно не смотреть, а инклудить и писать __NR_write вместо 4.

const86 ★★★★★
()

Вызов системных функций на ассемблере это, в наше время, большое «нинужно». На C вызывай, а «математику» пиши на ассемблере.

Ну и x86 ассемблер сейчас тоже не очень актуален. Лучше изучай ассемблер ARM-а, он значительно больше востребован. Поставь qemu эмулятор ARM-а и тренируйся.

dvl36
()
Ответ на: комментарий от dvl36

Спасибо за совет. Это, так для себя, что бы представление иметь. Изучением арма и займусь. :)

maxylopes
() автор топика
Ответ на: комментарий от const86

Да но откуда мне знать что такое __NR_write, все таки прочесть и заучить на пямять числа проще, не считаешь?

maxylopes
() автор топика
Ответ на: комментарий от maxylopes

ARM ассемблер еще и намного проще.

Это спорно. В ARM-е много ограничений, которых нет в командах x86. Плюс условное выполнение и другие плюшки.

dvl36
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.