Структура программы и память
Структура программы
section .data
msg db "hello, world", 0
section .bss
section .text
global main
main:
mov rax, 1
mov rdi, 1
mov rsi, msg
mov rdx, 12
syscall
mov rax, 60
mov rdi, 0
syscall
Страницы:
- .data
- .bss
- .txt
.data
Переменные: <varname> <type> <value>
Константы: <constant_name> equ <value>
.bss
Неинициализированные данные. resb - байт, resw - слово, resd - двойное слово, resq - двойное длинное слово
.txt Программа.
Динамическое выделение памяти
Выделяется через системные вызовы или стандартные библиотеки (например, malloc из libc).
Получение текущего адреса кучи (heap):
Для x32:
mov eax, 45
mov ebx, 0
int 0x80 ; В eax вернётся текущий адрес конца кучи
Для x64:
mov rax, 12
mov rdi, 0
syscall ; В rax вернётся текущий адрес конца кучи