Задать вопрос
@Venot

Сегменты данных, кода это разделение для ассемблера или так хранится в машинном коде?

На ассемблере в программе есть раздел .text, .bss, .data. Понимаю там хранятся данные и код программы, интересно при компиляции в машинный код там тоже так на сегменты разбит для выполнения процессором или это просто для удобства синтаксиса?
  • Вопрос задан
  • 144 просмотра
Подписаться 1 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Яндекс Практикум
    Python-разработчик
    10 месяцев
    Далее
  • Skillbox
    Профессия Графический дизайнер PRO
    15 месяцев
    Далее
  • Нетология
    Фронтенд-разработчик
    11 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 1
jcmvbkbc
@jcmvbkbc
"I'm here to consult you" © Dogbert
На ассемблере в программе есть раздел .text, .bss, .data

Обычно эти разделы называют секциями а не сегментами. Потому что в ELF-файлах сегменты тоже есть, но у них нет имён.
при компиляции в машинный код там тоже так на сегменты разбит

Разбит, да. А при линковке некоторые секции можно объединить. Обычно неизменные секции (например .text, .rodata, .tls) объединяют в одну кучу, а все изменяемые (например .bss, .data) объединяют в другую кучу. На "больших" ОС (типа linux) эти кучи эти выравнивают по границе страницы и делают неизменные секции доступными только для чтения. Это помогает сэкономить память и использовать одни и те же страницы для представления неизменных данных в разных процессах.

для выполнения процессором

Процессору по большому счёту всё равно как расположено в памяти то, что он выполняет.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы