Форум программистов, компьютерный форум CyberForum.ru

Как инициализировать указатель произвольным адресом? - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Что происходит с освободившейся от указателей памятью? [gcc-4.7.2] http://www.cyberforum.ru/cpp-beginners/thread833310.html
Что происходит в следующих случаях с памятью выделенную под переменные? 1) Объявление в операторных скобках: { int variable; } 2) Присвоение адреса указателю: int *i_var; { int variable = 5;
C++ Передача Указателя На Двумерный Массив В Функцию Как изменить код, чтобы массив объявлялся в main() и передавался в input_strings(). Код: #define MAXLENGTH 129 #define MAXSIZE 20 char arr_str; int input_strings(){ int i,n; http://www.cyberforum.ru/cpp-beginners/thread833308.html
C++ Не сортирует.В чем ошибка?
и ещё нужно добавить средний бал по каждому студенту #include <iostream> #include <string.h> #include <cstring> #include <stdio.h> #include <fstream> #include <sstream> #include <conio.h> using namespace std; class table
Как зная площадь треугольника установиться его координаты. C++
Как зная площадь треугольника установиться его координаты. Естественно любые. Например площадь = 5 тогда координаты : 0 0 4 2 5 0
C++ Функции. Написать функцию, удаляющую элемент массива http://www.cyberforum.ru/cpp-beginners/thread833276.html
Написать функцию, удаляющую элемент массива. Все элементы после него сдвигаются на один влево, а последний равен нулю.
C++ Сортировка, метод шелла Всем доброй ночи, задача, дан список студентов и у каждого 5 оценок, отсортировать сумму оценок по убыванию и данные в новый файл, вот мой код. Помогите исправить ошибку #include <iostream> #include <fstream> #include <string> #include <iomanip> using namespace std; ifstream in("input.txt"); ofstream out("output.txt"); подробнее

Показать сообщение отдельно
Kastaneda
Модератор
Эксперт С++
 Аватар для Kastaneda
4237 / 2770 / 218
Регистрация: 12.12.2009
Сообщений: 7,104
Записей в блоге: 1
Завершенные тесты: 1
11.04.2013, 21:25     Как инициализировать указатель произвольным адресом?
Цитата Сообщение от taras atavin Посмотреть сообщение
Процессор знать не знает, кого и куда не надо пускать. Так что защищает именно ось, но ось исполняется камнем.
Суть в следующем - защита происходит по CPL и по флагам в записи каталогах/таблицах страниц. Когда ОС только загружается, она загружается в real mode, в этом режиме формируются каталоги/таблицы страниц, где и выставляются нужные флаги. Потом код загрузчика переводит процессор в protected mode (если мы говорим о 32х битных ОС) и дальше уже загружается непостредственно ОС. Так вот, когда пользователь выполняет свою программу, она выполняется с CPL = 3, и когда эта программа попробует обратиться туда, куда не просят, то защита сработает на уровне процессора (будет GP exception), задача ОС всего лишь корректно обработать это исключение. Сама ОС защитой такого уровня не занимается.


Цитата Сообщение от taras atavin Посмотреть сообщение
Сама ось, кстати, вообще не сможет работать без доступа везде.
Да, тот же "Hello, World" требует нулевого CPL для записи в видеопамять. Поэтому код вывода строки в консоль работает на нулевом уровне привилегий, в котором есть возможность дотянутся туда, куда другим запрещено. Переход на нулевой уровень происходит, например, через шлюз прерывания (печать строки есть прерывание), при возврате из обработчика прерывания CPL восстанавливается.

Цитата Сообщение от taras atavin Посмотреть сообщение
TR-DOS тоже DOS, но там ничего складывать не нужно.
Незнаю, что такое TR-DOS, но в real mode нужно сложить базу из сегментного регистра умноженную на 16 со смещением, чтоб получить физический адрес. В других режимах все еще сложнее.


Цитата Сообщение от Pure Посмотреть сообщение
Я утверждаю что под управлением не реалтайм ос нет досупа к физике а вот товарисч пишет что есть.
Ты мои слова не правильно понял, я писал

Цитата Сообщение от Kastaneda Посмотреть сообщение
И да, получить физический адрес таки можно, только вот потом ты с ним все равно ничего сделать не сможешь.
Т.е. имея на руках виртуальный адрес можно вычислить какому физическому адресу он соответствует.
Я хорошо понимаю, как это сделать переключившись в real mode Но вот из protected mode нужно будет читать значения, имея на руках например физический адрес каталога страниц, который процессором воспримется как вритуальный, и в итоге прочитается не то, что нужно. Поэтому стандартными средствами С этого не сделать. Я где-то натыкался на сишный код под Linux, где происходит вычисление физического адреса при помощи gcc builtin функций. Если интересно, можно погуглить.
 
Текущее время: 19:54. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru