Когда я смотрю на архитектуру загрузки/хранения, где переменная в регистре хранится в памяти под определенным адресом. Как компилятор знает, по какому адресу переменная хранится в памяти для ее загрузки? У него должен быть стол где-то. Если да, то где хранится таблица?Хранение адреса переменной в памяти
0
A
ответ
1
Компилятор генерирует symbol table, где хранятся переменные программы. базовый индекс этой таблицы равен нулю, а адреса относятся к этой базе. (эта таблица является частью файла exe
).
Когда операционная система выполняет exe-файл, она загружает таблицу символов в память, а затем назначает ей новый базовый адрес. (в зависимости от того, где он может найти пустое место для загрузки файла). Затем все адреса вычисляются относительно этого нового базового адреса. Фактически базовый адрес добавляется к их адресу в таблице символов (обычно регистр данных сегмента хранит этот базовый адрес)
Смежные вопросы
- 1. Хранение справочника (адреса) в переменной Java
- 2. Хранение союза в памяти
- 3. Хранение файлов в памяти
- 4. Хранение переменных в памяти
- 5. Хранение хеша в памяти
- 6. Хранение MySQL в памяти
- 7. Поиск виртуального адреса памяти переменной на OSX
- 8. Хранение $ (this) в переменной
- 9. Хранение переменной в проекте
- 10. Хранение XMLHttpRequest.responseText в переменной
- 11. Хранение переменной в C++
- 12. Хранение single_tag_title в переменной
- 13. Отслеживание адреса памяти в Java
- 14. Хранение в хранилищах сеансов браузеров и хранение в переменной в памяти
- 15. Хранение адреса буфера в целом без знака;
- 16. Хранение памяти кэша
- 17. Хранение данных в памяти - Javascript
- 18. Хранение в памяти массива javascript
- 19. Хранение конфиденциальных данных в памяти
- 20. Хранение больших карт в памяти
- 21. Хранение ссылок в памяти стека
- 22. адрес памяти памяти переменной Python
- 23. Хранение XML в памяти между вызовами Webservice
- 24. Получение адреса переменной окружения
- 25. Хранение переменной DateTime в локальной переменной C#
- 26. Адреса памяти в сборке
- 27. указатели и адреса памяти
- 28. lldb: Печать адреса переменной
- 29. Имя переменной с адреса памяти в Visual Studio 2008
- 30. Объявление переменной и их адреса памяти в C
компилятор или операционная система? – Ahmad
компилятор создает исполняемый файл из программы, операционная система отвечает за его выполнение. при двойном щелчке по файлу exe. Однако переводчики выполняют программу по строкам. – Ahmad
Ваш вопрос непонятен. Что вы подразумеваете под «где»? Вы имеете в виду «что такое структура таблицы»? В общем, компилятор на этапе генерации кода отдельно хранит информацию о внешних статических данных, внутренних статических данных, функциональных параметрах и локальных переменных. У некоторых из них нет адреса вообще, потому что они расположены в регистры процессора. У некоторых есть адрес в стеке, т. Е. Смещение головы стека. Статические данные имеют «нормальный» адрес, но внешние данные не имеют значения до этапа связывания. –