как хранить сборку в памяти - PullRequest
0 голосов
/ 26 апреля 2010

У меня есть вопрос о том, как сохранить язык ассемблера в памяти, когда я компилирую C-код в ассемблере и запускаю «шаг», я вижу адрес каждой инструкции, но есть ли способ изменить начальный адрес кода в памяти?

Второй вопрос: можно ли разбить код сборки на две части? То есть как хранить две части в отдельных разделах памяти? Есть ли способ сделать это?

Мне интересно, как на машине хранится код сборки. Я работаю над MACBOOK Pro, Duo Core.

По первому вопросу, можем ли мы изменить значение смещения? или компоновщик и загрузчик не могут контролироваться пользователем? Я сори путаю с твоим ответом, кажется, что мы не можем его изменить?

Что касается второго вопроса, я думаю, что вы говорите о «секции ввода», даже если у вас много «.text» секций ввода в ваших кодах, после сборки они станут одним «.text» »выводом раздел". И секция вывода - это фактический код, хранящийся в памяти. И мне интересно, смогу ли я контролировать его положение.

Я использую знание сборки DSP, я думаю, что механизмы одинаковы.

1 Ответ

0 голосов
/ 26 апреля 2010

Я не совсем следую ни за одним из ваших вопросов, но я угадаю.

Во-первых, вы спрашиваете, как изменить расположение исполняемого файла в памяти? ELF-файлы имеют предпочтительное смещение, которое компоновщик будет пытаться использовать первым, но загрузчик обычно может свободно размещать разделы в любом месте, если базовое смещение недоступно. Если изображение не перемещаемо и предпочтительное смещение недоступно, загрузчик завершится ошибкой и программа не запустится

Что касается вашего второго вопроса, вы хотите изменить сборку, чтобы код находился в разных разделах? Как это сделать, зависит от используемого вами ассемблера; в газе вы используете section псевдооператор:

.section new-section-name

Код, следующий за этой директивой, будет в указанном разделе

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...