Я не могу понять, что хранится в текстовом сегменте. То, что я нашел до сих пор, говорит о том, что в нем содержится исполняемый код (в 0 и 1) моей программы. Но не вся память программы содержит исполняемый код (т. Е. Записывается в 0s и 1s)? Я имею в виду, что программа сначала скомпилирована, затем собрана и, наконец, связана, и, таким образом, как только мы ее запустим, все это в двоичном формате. Итак, как только программа запускается, кадры стека производятся в стеке для текущих исполняемых функций, и в этих кадрах стека все переменные находятся в 0 и 1, но что внутри текстового сегмента?Что касается текстового сегмента в памяти программы?
ответ
(несколько странно названный) text
раздел (сегмент) обычно содержит скомпилированный двоичный код, как вы подозреваете.
Исполняемый файл часто содержит другие типы данных помимо кода, такие как инициализированные значения переменных, ресурсы, информацию об отладке, данные перемещения и т. Д., Которые помещаются в разделы с другими именами.
Итак, в текстовом сегменте содержатся фактические определения функций, записанные в двоичном формате? – Root149
@ Root149: Да, текстовый сегмент содержит скомпилированные тела функций, составляющих программу. Он также может содержать другие материалы: если вы не использовали общие библиотеки, то он также может содержать код из библиотечных функций; он может также содержать данные только для чтения, такие как строковые литералы, поскольку текстовый сегмент делается только для чтения (без самомодифицирующего кода). –
В сегменте «.text» компилятор помещает '1' и '0', сгенерированные из инструкций программы и кодирующие эти инструкции, и он обычно доступен только для чтения и является исполняемым. В отличие от сегмента данных, который содержит те и нули, кодирующие ваши значения переменных, и он обычно RW и не является исполняемым. Стек обычно находится в сегменте данных, потому что вы не нажимаете туда никаких инструкций, а только данные. В физической памяти текстовый сегмент и сегмент данных (и некоторые другие разделы) могут находиться в совершенно разных местах, которые обычно не являются смежными. Несмотря на то, что они смежны в вашем двоичном формате. Это означает, что ваш «текстовый» сегмент может находиться в адресе 0x100, но данные в 0x1000000. Но это не означает, что ваш исполняемый файл будет иметь размер 0x1000000.
Итак, в текстовом сегменте содержатся фактические определения функций, записанные в двоичном формате? – Root149
- 1. Что касается сегмента bss и сегмента данных в Unix
- 2. Что касается проверки текстового поля
- 3. Что касается проблемы памяти XenAPI
- 4. Что касается запуска программы в стандарте
- 5. Что касается утечки памяти в дочернем процессе
- 6. Python - Что касается tkinter и программы обновления
- 7. Что касается проблемы с утечкой памяти
- 8. Что касается открепления ресурсов памяти нити
- 9. Что касается памяти и процессов на сервере
- 10. Копия памяти из текстового сегмента не совпадает с оригинальным
- 11. Что касается отношений между жилами и ряды программы MPI
- 12. Указатели внутри сегмента разделяемой памяти
- 13. читать память вне программы без ошибок сегмента
- 14. Фрагмент кода, чтобы найти размер сегмента кучи или сегмента сегмента для программы
- 15. Laravel4 касается потребления памяти
- 16. Binary, произведенный MSP430GCC, имеет странный начальный адрес для текстового сегмента
- 17. Что касается MemoryMappedFile?
- 18. Что касается сбора рамок
- 19. Что касается списков в C++
- 20. Что касается преобразования текстового файла в двоичный файл C++
- 21. Что касается выбора значения текстового поля внутри параметра в html
- 22. Что касается сохранения текстового файла в c-программировании
- 23. Что касается *?
- 24. Изменение размера сегмента разделяемой памяти
- 25. Что касается соответствия подстроки
- 26. Выращивание текстового сегмента по сравнению с ростом сегмента данных
- 27. Что касается назначения памяти и переменных в PHP
- 28. Что касается ссылки toString() и памяти в ArrayList
- 29. Что касается обнаружения утечки памяти в запущенном процессе
- 30. Что касается вложенных циклов
Ну, часть «0 и 1» уже не соответствует действительности. Некоторые из моих программ содержат 2s, 3s и т. Д. - вплоть до 255. – usr2564301
clcto, который не отвечает на мой вопрос – Root149
Подождите, содержит ли эта область все прототипы функций? – Root149