Считается ли код инициализированными данными в формате Portable Executable, и какова разница между инициализированными и унифицированными данными?

c++ windows assembly portable-executable

110 просмотра

1 ответ

Считается ли код инициализированными данными в формате Portable Executable (PE), и в чем именно разница между инициализированными и унифицированными данными?

Из предыдущего опыта я вижу инициализированные данные как что-то вроде строки или целого числа, но называется ли исполняемый код также инициализированными данными в контексте PE?

Кроме того, каковы различия между инициализированными и унифицированными данными?

В документации сказано:

Данные раздела

Инициализированные данные для раздела состоят из простых блоков байтов. Однако для разделов, которые содержат все нули, данные раздела не должны быть включены.

...

Автор: Shuzheng Источник Размещён: 08.11.2019 11:09

Ответы (1)


1 плюс

Решение

Каждый процесс состоит в основном из 4 частей адресного пространства, которые доступны для процесса, и одна из них - это раздел .Data, который разделен на:

1) Инициализированные данные только для чтения . Содержит элементы данных, которые инициализируются программой, и они читаются только во время выполнения процесса.

2) Инициализированные данные чтения-записи . Содержит элементы данных, которые инициализируются программой и будут изменены в ходе выполнения процесса.

3) Неинициализированные данные . Содержит элементы, которые не инициализируются программой и устанавливаются в 0 перед выполнением процессов. Они также могут быть изменены и обозначены как BSS (символ начала блока). Преимуществом таких элементов является то, что системе не нужно выделять место в программном файле для этой области, потому что она инициализируется в 0 ОС до того, как процесс начинает выполняться.

Код рассматривается как инициализированные данные в формате Portable Executable (PE)

Код любой программы можно найти в части .Text, он содержит фактические инструкции, которые должны быть выполнены. Во многих операционных системах он установлен только для чтения, аналогично инициализированным данным только для чтения.

в чем конкретно различия между инициализированными и унифицированными данными?

Таким образом, разница между ними заключается в их значении: инициализированные данные имеют уникальное значение, установленное программой перед началом процесса, и могут быть «Чтение, запись или чтение», а с другой стороны, значение неинициализированных данных устанавливается в 0 операционной системой. Посмотрите здесь .

Амран Абделькадер.

Автор: Amrane Abdelkader Размещён: 20.08.2016 10:40
Вопросы из категории :
32x32