логотип нашего сайта о программировании для начинающих

Программирование на ассемблере для начинающих. Ассемблер gas под linux, fasm под windows, tasm под dos, и многое другое.


Сайт для программистов, начинающих кодеров, и людей, желающих заняться программированием.




Меню невыпадающее
Программистам : Другое :

Таблица некоторых известных мне и опробованных системных вызовов ядра linux.


Вызов к функциям ядра Linux осуществляется через прерывание 80h , а параметры передаются через регистры.

Для вызова функций ядра Linux надо :

  • поместить в регистр еах номер системного вызова
  • поместить в регистры ebx,ecx,edx,esi,edi параметры системного вызова, в ebx - первый, в ecx - второй и в edx - третий и т.д.
    если параметров 6 и больше, то в еах также номер системного вызова, а параметры в памяти подряд, адрес первого параметра в регистр ebx
  • вызвать прерывание 80h


SYS_Exit.
Номер вызова = 1
Параметры: - параметр всего один - это число, определяющее код возвращаемого значения, мной не использовался, обычно пишу ноль, и все нормально работает.
Действие: - завершает текущий процесс.


SYS_Fork.
номер вызова = 2
Параметры: - нет параметров.
Действие: - создает дочерний процесс, при этом в родительский процесс возвращается ид дочернего процесса ( в аккумулятор), а в дочерний процесс 0 ( тоже в аккумулятор), поэтому в ассемблере для разделения процессов используется проверка аккумулятора на 0, если произошла ошибка, то возвращается -1 и дочерний процесс не создается


SYS_Read.
Номер вызова = 3
Параметры: - параметров 3, первый - дескриптор файла из которого будем читать данные, второй - место (адрес или переменная), куда будем читать данные, и третий - количество данных в байтах, которые нам надо прочитать. Для чтения с клавиатуры надо указать дескриптор стандартного потока ввода - STDIN = 0.
Действие: - читает указанное в параметрах количество данных из файла в память.


SYS_Write.
Номер вызова = 4
Параметры: - параметров 3, первый дескриптор файла, в который пишем данные, второй - адрес начала данных в памяти, и третий - количество данных, которые будем писать в файл. Для вывода на экран дескриптор файла-потока вывода на экран(STDOUT) = 1.
Действие: - записывает указанное количество данных из памяти в указанный файл.


SYS_Waitpid.
Номер вызова = 7
Параметры: - параметров 3, первый - ид процесса, завершения которого мы будем ждать, второй - место (адрес или переменная), куда передать код завершения процесса, третий - опции, но с ними я еще не разобрался, поэтому пока зануляю второй и третий параметры.
Действие: - Ожидаем завершения указанного процесса.


SYS_Unlink.
Номер вызова = 10
Параметры: - параметр один - полное имя файла, который мы хотим удалить.
Действие: - удаляет указанный файл.


SYS_Open.
Номер вызова = 5
Параметры: - параметров 3 , первый - имя файла, второй - режим открытия файла ( я пока разобрался с 3-мя - 0 = чтение, 1 = запись, 2 = чтение и запись , но есть еще для создания файла , если он не существует, и еще много разных...), третий параметр используется только в том случае, если при открытии файл должен и создасться, тогда третий параметр - режим доступа к файлу ( например 511 = восьмеричное 777, то есть полный доступ всем)
Действие: - открывает и может создавать файл если его нет, возвращает дескриптор открытого файла


SYS_Creat.
Номер вызова = 8
Параметры: - параметров 2 , первый - имя создаваемого файла, второй - режим доступа к файлу.
Действие: - создает файл.


SYS_Close.
Номер вызова = 6
Параметры: - параметр 1 - дескриптор файла, который закрываем.
Действие: - закрывает файл.


SYS_Iseek.
Номер вызова = 19
Параметры: - параметров 3, первый - дескриптор файла, второй - смещение , может быть и отрицательным, третий - позиция от которой отсчитываем смещение - 0 = начало файла.
Действие: - устанавливает текущую позицию в файле на указанную нами.


SYS_Link.
Номер вызова = 9
Параметры: - параметров 2, первый - имя файла, который мы будем переименовывать, второй - новое имя файла.
Действие: - переименовывает файл.


SYS_Execve.
Номер вызова = 11
Параметры: - параметров 3, первый - полное имя файла-программы, которой мы будем подменять процесс, второй - массив аргументов для программы, нулевой элемент всегда имя программы, закнчивается всегда нулём, если аргументов нет, то 0, третий - массив окружения программы, заканчивается всегда нулем, если нет, то = 0.
Действие: - подменяет текущий процесс программой.


Буду сюда добавлять описания других системных вызовов, как только разберусь с ними...


С уважением Pauk_pv ©

Здесь со времнем появятся ссылки дружественных и понравившихся сайтов

Информер ТИЦ


Сайт создан Pauk_pv // Pauk@paukpv.pp.ru


При использовании информации с сайта обязательна ссылка на сайт
Pauk_pv ©