Вопросы по теме 'memory-segmentation'

Как сделать 20-битный адрес, используя два 16-битных регистра?
IAPX88 может работать с 1 мегабайтом памяти (20-битная адресация), теперь мой вопрос заключается в том, как мы можем сделать 20-битный адрес, используя два 16-битных регистра. Пожалуйста, приведите пример.
1815 просмотров

Селектор сегментов 8086
Есть какой-то «супервизор», чтобы не позволить «пользовательскому пространству» делать что-то вроде: mov CS, 200h ? Какая защита есть? Спасибо
494 просмотров
schedule 07.07.2023

Почему Linux на x86 использует разные сегменты для пользовательских процессов и ядра?
Итак, я знаю, что Linux использует четыре сегмента по умолчанию для процессора x86 (код ядра, данные ядра, пользовательский код, пользовательские данные), но все они имеют одинаковую базу и ограничение (0x00000000 и 0xfffff), что означает, что каждый...
6150 просмотров
schedule 16.08.2022

Как перекрытие сегментов реального режима x86 способствует экономии памяти?
Я учу своих 12 лет. 8086 на ассемблере, и вчера мы говорили о памяти, адресации и сегментации. Я показал ему, как сегменты можно визуализировать как последовательность перекрывающихся блоков по 64 КБ, начиная с 16-байтовых границ, со смещением в...
3015 просмотров
schedule 03.05.2023

Вопросы по карте процесса
Здесь я запускаю два экземпляра одной и той же программы в двух разных терминалах. Карта процесса из них В первом терминале - vikram@vikram-Studio-XPS-1645:~$ pmap 6548 6548: ./a.out 0000000000400000 4K r-x-- /home/vikram/a.out...
358 просмотров

Использование регистров сегментации
Я пытаюсь понять, как управление памятью происходит на низком уровне, и у меня есть пара вопросов. 1) В книге Кипа Р. Ирвина о языке ассемблера говорится, что в реальном режиме первые три сегментных регистра загружаются с базовыми адресами кода,...
1822 просмотров
schedule 11.06.2022

Ошибка сегментации в конструкторе
Это происходит с КАЖДЫМ классом, который я пытаюсь создать на C ++. При переходе с java проблемы возникают в основном при создании классов. Я запускаю valgrind и, похоже, он в конструкторе. ==30214== Memcheck, a memory error detector ==30214==...
1358 просмотров
schedule 06.11.2022

Использование GDB для чтения MSR
Есть ли способ прочитать регистры, специфичные для модели x86-64, в частности IA32_FS_BASE и IA32_GS_BASE, при отладке программы с использованием GDB? Менее предпочтительным было бы решение с использованием динамического пакета инструментов, такого...
1834 просмотров
schedule 18.12.2022

Ошибка сегментации (дамп ядра) - не удается исправить ошибку
У меня возникли проблемы со следующим фрагментом кода. Я использую Boost для умножения матриц. Я использую Gtesting для проверки своего кода. Когда я тестирую следующий бит кода, я получаю следующую ошибку. Segmentation fault (core dumped)...
243 просмотров

Зачем иметь два перекрывающихся сегмента данных (например, в ядре Linux)?
В ядре Linux, а также во многих онлайн-учебниках по x86 я вижу, что люди рекомендуют использовать два сегмента кода и два сегмента данных. Я понимаю необходимость двух сегментов кода, поскольку CPL должен точно соответствовать DPL (для...
376 просмотров

Какой сегментный регистр используется по умолчанию?
Я изучаю компьютерную архитектуру по Руководству Intel. Я понимаю, что инструкции, которые мы даем, являются логическими адресами, которые состоят из селектора сегмента и смещения. Это в основном CS register<<4 + offset . Segment Selector...
4447 просмотров
schedule 24.06.2023

Как сегментация позволяет совместно использовать код или данные?
Я читал, что есть сегменты каждого процесса (сегмент стека, сегмент кода), и каждый виртуальный адрес имеет номер сегмента и смещение, эта схема позволяет совместно использовать код между процессами. Я не понял идею поделиться, пожалуйста, объясните...
303 просмотров
schedule 10.06.2023

Есть ли какая-то особая причина для STOSB использовать дополнительный сегмент?
Я читал, что STOSB работает следующим образом: ES:[DI] <-- AL Если DF = 0 увеличить DI иначе уменьшить DI . Так почему же STOSB не меняет DS:[DI] ? Есть ли особая цель использования дополнительного сегмента? В...
197 просмотров
schedule 19.04.2023

Каков теоретический пример использования GDT?
Я следую прохождению GDT . Я могу понять, как реализована структура данных и ее назначение. Однако я не понимаю, как используется GDT. В каком сценарии ЦП необходимо загрузить сегмент и как это делает GDT? Если GDT участвует в прерывании,...
247 просмотров

Директива ASSUME с использованием masm
Я пытался написать ассемблерный код с использованием ASSUME, но продолжаю получать ошибки, причины которых я не смог выяснить. Вот пара примеров: Пример 1 .286 .model medium, c pproc typedef ptr proc .data dummy db ? .code assume bx:ptr pproc...
613 просмотров

Поток локального реального использования нижележащих сегментных регистров
Я прочитал ряд статей и ответы S / O, в которых говорилось, что (в linux x86_64) FS (или GS в некоторых вариантах) ссылается на запись таблицы страниц, зависящую от потока, которая затем дает массив указателей на фактические данные, которые доступны...
136 просмотров