2014-12-09 2 views
-1

Я работаю над ядром ОС, которое будет записано в 32-битном C++. Мне нужно выяснить, как включить 32-битный защищенный режим/включить a20-gate в C++. Итак, можете ли вы сказать мне, если это возможно, и если да, то как? Спасибо.C++ - 32-разрядный защищенный режим

+0

Насколько я помню, это связано с полусущим самоубийством. Сброс. Вы найдете документацию в Intel. –

+0

Посмотрите материал на osdev.org. Обратите внимание, что вы, вероятно, включите защищенный режим и a20 из сборки и только после этого перейдете к вашему ядру C++. Кроме того, используйте мультизагружаемый загрузчик, который сделает это за вас. – Jester

+0

У вас есть ссылки? Приветствия и hth. - Alf – crank123

ответ

5

C и C++ не знают, что такое «a20 gate» и как включить его. То же самое для «32-битного защищенного режима». Это нужно сделать с помощью конкретного машинного кода. Теперь правильным вопросом будет вызов вызова этого кода из вашей программы на C++. В зависимости от компилятора C++, там может быть несколько различных способов сделать это:

1) Самый простой способ заключается в использовании встроенного кода сборки с помощью блока asm, __asm или __asm__. Внимательно прочитайте свою документацию по компилятору на C++ о том, как ее использовать. Я не уверен, что все компиляторы поддерживают это.

2) Используйте ассемблер для написания кода с использованием ассемблерного кода, чтобы его можно было вызвать из вашего приложения на C++. Используйте extern "C", чтобы объявить функцию в программе на C++, чтобы вы могли ее вызвать.

3) Еще более противный: поместите ваш ассемблерный код в массив байтов, преобразуйте адрес в массив в указатель на функцию и вызовите его. Знание машинного кода и условного обозначения C/C++, необходимое для работы.

+0

Большое вам спасибо. Это было действительно полезно. Я проголосую, но у меня только два повторения. – crank123

 Смежные вопросы

  • Нет связанных вопросов^_^