Добавил:
ИВТ (советую зайти в "Несортированное") Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
1
Добавлен:
23.11.2024
Размер:
258.59 Кб
Скачать

НИУ МИЭТ, ИПОВС, КАИ

Системные вызовы

4 / 9

Системные вызовы Linux-32

int 0x80, %eax номер функции:

1 exit (%ebx код завершения);

2 fork;

3 read;

4 write

...

до 6 аргументов: %ebx, %ecx, %edx, %esi, %edi и %ebp

от 7 структура, адрес в %ebx

результат в %eax

Системные вызовы

Параметры

Системные вызовы Linux-32

stdlib и системные вызовы

Итоги семестра

Приветствие миру

НИУ МИЭТ, ИПОВС, КАИ

Системные вызовы

5 / 9

stdlib и системные вызовы

Минимальная программа с stdlib (4704 байт)

1 .globl main // точка входа (stdlib)

2 main:

3xorl %eax, %eax // возвращаемое значение

4 ret // return 0 из main()

gcc -o min min.S

Минимальная программа без stdlib (600 байт)

1

.globl _start

2

_start: // точка входа

3

movl $1, %eax // системный вызов №1 sys_exit

4xorl %ebx, %ebx // выход с кодом 0

5

int $0x80

// вызов ядра

gcc -o min min.S -nostdlib

Системные вызовы

Параметры

Системные вызовы Linux-32

stdlib и системные вызовы

Итоги семестра

Приветствие миру

 

НИУ МИЭТ, ИПОВС, КАИ

Системные вызовы

6 / 9

Приветствие миру

 

 

1

.data

 

 

 

 

2

msg:

.string "Hello, world!\n"

 

3

.global main //

точка входа в программу

 

4

main:

 

 

 

 

5

pushl $msg

// Адрес строки в стек

 

6call puts

7

addl $4, %esp

// Вычищаем параметр из стека

8xorl %eax, %eax

9ret

1

.data

 

 

2

msg:

.ascii "Hello, world!\n"

3

len = . - msg

// символу len присваивается длина строки

4

.global _start //

точка входа в программу

5

_start:

 

 

6

movl $4, %eax

// системный вызов №4 sys_write

7movl $1, %ebx // поток №1 stdout

8 movl $msg, %ecx // указатель на выводимую строку 9 movl $len, %edx // длина строки

10int $0x80 // вызов ядра

11movl $1, %eax // системный вызов №1 sys_exit

12xorl %ebx, %ebx // выход с кодом 0

13int $0x80 // вызов ядра

Системные вызовы

Параметры

Системные вызовы Linux-32

stdlib и системные вызовы

Итоги семестра

Приветствие миру

Соседние файлы в папке АВС