char - 1 байт
short - 2 байта (word - слово)
long (int) - 4 байта
long long - 8 байтов
//----------------------------------
Для работы со стеком используются два регистра: %rsp и %rbp
%rsp - Re-extended Stack Pointer - Указатель стека.
%rbp - Re-extended Base Pointer - Указатель базы.
В начале выполнения программы %rsp содержит адрес, слева от которого можно хранить данные.
%rsp - адрес левой границы стека
%rbp - адрес правой границы стека
Перед использованием стека нужно скопировать содержимое регистра %rsp в %rbp
Для того, чтобы выделить на стеке память под N байтов нужно вычесть число N из регистра %rsp, тем самым “сместить“ %rsp влево на N байтов.
В конце программы память на стеке нужно освободить. Для этого нужно скопировать значение регистра %rbp в %rsp
//--------------------------------------------------
Если в программе применяются функции, использующие стандартизированные соглашения о вызовах функций (например функции стандартной библиотеки языка Си), то стек должен быть выровнен по 16-байтовой границе, т.е адреса правой и левой границ стека должны быть кратны 16 (Шестнадцатеричное представление должно оканчиваться на 0).
В начале программы адрес правой границы стека изначально кратен 16. Далее, память на стеке нужно выделять порциями, объём которых кратен 16.
//----------------------------------------------
Данные можно помещать в стек не выделяя для них память явным образом. Но, в этом случае нужно иметь в виду, что данные будут храниться в той области памяти, которая будет числиться незанятой, поэтому есть вероятность, что эти данные могут быть перезаписаны другими командами.
1 view
143
25
2 months ago 00:10:20 1
Кодинг стал ИЗИ после этого открытия! Вот как я это сделал!
2 months ago 00:00:52 1
Самые популярные языки программирования!
2 months ago 00:11:20 1
Поднимаем свой VPN сервер в Европе за 5 минут. VPS/VDS в Европе за рубли.
2 months ago 00:02:43 2
Dart с нуля до профи | #0 Введение | Курс для начинающих 2023
2 months ago 00:08:18 1
Изучаем Python ООП и ничего не понимаем. А если так?
2 months ago 00:13:34 1
Русский язык - это запрещено обсуждать лингвистам и филологам
2 months ago 00:07:30 1
КАБЕЛЬ USB 4.0 от Canyon | Чем он лучше USB 3.2
2 months ago 00:00:43 1
Язык Программирования RUST
2 months ago 00:19:00 1
Введение в IT - базовые термины. ПЛАКАЛА ВСЯ СТРАНА. МУЖ СМОТРИТ ТРИ РАЗА В ДЕНЬ. ТОП ПЯТЬ АЙТИ ТЕРМ