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

проверка предела сегмента в 64-битном режиме AMD
Я пишу свою ОС для 64-битных процессоров и застрял с проблемой общей защиты. Моя ОС не будет полагаться на ошибку страницы для реализации механизма защиты пространства пользователя, поэтому я обнаружил, что есть способ сделать это с помощью проверки...
1423 просмотров

Доступ к TIB в Win32
Углубляемся в реализацию функций Win32 API, которые работают с TIB, например: Функции доступа TLS: TlsAlloc , TlsFree , TlsSetValue , TlsGetValue GetLastError , SetLastError подсистема обмена сообщениями: GetMessage , PeekMessage и...
803 просмотров
schedule 09.10.2021

Переход на дальний адрес в реальном режиме
У меня есть ситуация, когда мне нужно перейти на дальний адрес в реальном режиме, у меня есть значение сегмента в регистре fs и смещение в регистре gs , и во время перехода я должен поддерживать точное содержимое регистра, я придумал один идея как...
1118 просмотров

Что делает флаг D в дескрипторе сегмента кода для инструкций x86-64?
Я пытаюсь понять, как работает D flag в дескрипторе сегмента кода при использовании в коде x86-64. Он установлен в D/B бите 22 дескриптора сегмента кода, как показано на этой диаграмме: Документация Intel (из раздела 3.4.5 Дескрипторы...
647 просмотров

Генерация адреса инструкции с использованием сегмента кода и указателя инструкции
Считайте, что адресом сегмента кода будет FE00, а указателем инструкции - ABBE. Сдвиг сегмента кода на 4 бита и добавление указателя инструкции приводит к дополнительному переносу. Как мы представляем сгенерированный адрес?
179 просмотров

Роль сегментации памяти в современных архитектурах
Как мы знаем, в наши дни доступны многопроцессорные архитектуры, такие как двухъядерные, Core i3, i5, которые могут иметь много гигабайт оперативной памяти. Мой вопрос заключается в том, что защита памяти с помощью сегментации все еще доступна в этих...
49 просмотров
schedule 25.04.2022

Что такое регистр %fs:‹num› в ассемблере gnu?
Этот простой код c: файл bar.c : #include <stdio.h> #define BSIZE 5 typedef struct { int count; int ar[BSIZE]; } foo; int main() { foo f = {.count = 0}; printf("%ld\n",sizeof(foo)); } который выводит 24...
117 просмотров

Пользовательское хранилище TIB
После некоторого поиска в Google и нескольких подсказок, данных здесь , мне наконец удалось найти макет сегмента FS (используется Windows для хранения данных TIB). Особый интерес для меня представляет элемент ArbitraryUserPointer ,...
1206 просмотров
schedule 11.06.2022

(С++ 11) В чем разница между статическим массивом и динамическим массивом с инициализированным списком?
Например, есть массив int с тысячами элементов: static int st_indices[9999] = { 0, 27, 26, 1, 41, 71, 0, 26, 101, 0, 101, 131, 0, 131, 72, 1, 71, 176, 2, 56, 206, 3, 116, 236, 4, 146, 266, 5, 161, 296, .........
343 просмотров

Где бы мне найти конкретные адреса функций в LibC объектных файлов?
Я пытаюсь найти адрес функции в libc. Я знаю, что могу сделать что-то подобное в C: printf("%x", (int) system); Но я не знаю, если это дает мне базовый адрес системной функции в LIBC. Я предполагаю, что это дает какой-то косвенный...
5546 просмотров
schedule 09.08.2022

Пейджинг или сегментация для виртуальной памяти, что лучше?
Большинство операционных систем используют пейджинг для виртуальной памяти. Почему это? Почему бы не использовать сегментацию? Это только из-за аппаратной проблемы? Является ли один лучше другого в определенных случаях? По сути, если бы вам...
7005 просмотров

Что такое% gs в сборке
void return_input (void) { char array[30]; gets (array); printf("%s\n", array); } После компиляции в gcc эта функция преобразуется в следующий ассемблерный код: push %ebp mov %esp,%ebp sub $0x28,%esp mov...
20161 просмотров

непосредственные (квадратные скобки) и индексные регистры + файлы с 2x dw в сегменте стека
Я очень новичок в ассемблере и пытаюсь изучить его, разбираясь в дизассемблировании старой 16-битной игры для DOS (дизассемблирование, сгенерированное IDA Free). В этом коде я прочитал две вещи и, думаю, догадался, что он делает. Тем не менее, я...
236 просмотров

Различия или сходство между сегментацией по страницам и сегментацией по страницам?
Я изучал комбинированные системы разбиения по страницам / сегментации, и в моей книге было два подхода к этому: 1.paged segmentation 2.segmented paging Я не мог разглядеть разницу между ними. Я думаю, что при постраничной сегментации сегмент...
27739 просмотров

Какой метод трансляции виртуальной памяти (рассмотрите x86) используется обычно?
Известно, что существуют различные виды трансляции виртуальных адресов (x86) с помощью MMU, такие как сегментация, пейджинг, комбинированная сегментация-пейджинг (Paged segmentation, Segmented Paging) и т. д. Каждый из них имеет свои преимущества и...
255 просмотров

Проверка уровня привилегий при доступе к сегменту кода
Я пытаюсь понять некоторые особенности архитектуры Intel x86. Я еще не очень понял механизм шлюза вызова, но без него для доступа к несовместимому сегменту кода его DPL должен быть равен CPL. Я понимаю, что это важно в случае DPL‹CPL, но почему в...
2690 просмотров
schedule 27.02.2023

Как получить доступ к регистру сегментов без ссылки на libc.so?
Я пытаюсь закодировать простую канарейку стека в 64-битной сборке, используя NASM версии 2.15.04 в Ubuntu 20.10. Выполнение приведенного ниже кода приводит к ошибке сегментации при сборке и связывании с помощью команды nasm -felf64 canary.asm...
55 просмотров

Несогласованный результат инструкции SCAS
Я новичок в программировании на ассемблере. Вот мои 2 кода: 1-й - из поиска в Интернете .DATA BLOCK DB 'You & Me' COUNT DW 13 SEARCH DB '&' FOUND DB 'String Found$' NOTFOUND DB 'String NOT Found$' .CODE .STARTUP MOV AX, @DATA MOV DS,...
26 просмотров
schedule 05.01.2023

Предел памяти 32-битной сегментированной модели сборки
Если бы 32-разрядная операционная система работала с сегментированной моделью памяти, было бы ограничение на 4 ГБ ? Я читал Руководство разработчика семейства процессоров Intel Pentium , в котором говорится, что с помощью модели сегментированной...
2775 просмотров

g++: отключить использование сегментного регистра
Я работаю над анализом двоичного кода и реверс-инжинирингом над x86 32-bit Ubuntu 14.04 . Я использую g++ 4.8.4 для компиляции программы C++ . Мне интересно, можно ли запретить компилятору использовать регистры сегментов. Например, gs ....
233 просмотров
schedule 21.12.2023