Myvideo

Guest

Login

Язык программирования C. Переменные

Uploaded By: Myvideo
1 view
0
0 votes
0

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. //---------------------------------------------- Данные можно помещать в стек не выделяя для них память явным образом. Но, в этом случае нужно иметь в виду, что данные будут храниться в той области памяти, которая будет числиться незанятой, поэтому есть вероятность, что эти данные могут быть перезаписаны другими командами.

Share with your friends

Link:

Embed:

Video Size:

Custom size:

x

Add to Playlist:

Favorites
My Playlist
Watch Later