Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Можно ли писать в MS VC++ для "голого" x86 ?
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > Программирование
Николай Иванович Приходько
Можно ли писать в MS VC++ для "голого" x86 ?
Т.е. можно ли сгенерить код, который не требует наличия установленной ОСи на компе?
makc
Цитата(Николай Иванович Приходько @ Oct 12 2008, 00:59) *
Можно ли писать в MS VC++ для "голого" x86 ?
Т.е. можно ли сгенерить код, который не требует наличия установленной ОСи на компе?


"голый" x86 исполняет какой код (16-и или 32-х разрядный)? Начните с этого, сопоставьте с тем, какой код генерирует MS VC++, и сделайте выводы. Хотя при этом у Вас, конечно же, есть возможность из объектного файла сделать двоичный файл с "чистым" кодом и данными, вот только что Вы с ним дальше делать будете - это большой вопрос.
DpInRock
Для MSDOS - легко. Это не есть операционная система. Все, что вы от нее возмете - это способность загружать ваш файл на исполнение.

Далее - вы полный хозяин компа.
makc
Цитата(DpInRock @ Oct 12 2008, 01:58) *
Для MSDOS - легко. Это не есть операционная система. Все, что вы от нее возмете - это способность загружать ваш файл на исполнение.

Далее - вы полный хозяин компа.


Правильно, но MS-DOS загружает на исполнение 16-и разрядные приложения, которые потом, если им это очень нужно, могут самостоятельно перейти в защищённый (32-х разрядный) режим, в котором они сами будут выбирать, как исполнять код в том или ином сегменте. Это определяется соответствующим битом в дескрипторе сегмента кода: "Segment Size Bit: When the descriptor entry describes a code segment, this bit is used to specify the default length of operands and addresses. When the bit is set, the processor assumes a 32-bit segment. When the bit is clear, a 16-bit segment is assumed."

Каким образом Вы хотите заставить MS VC++ генерировать 16-и разрядный код, который необходим для начального запуска приложения под MS-DOS? Т.е. задача проста - сделать .com-файл с помощью MS VC++, вопрос - как?
SysRq
exe2com.exe rolleyes.gif
Sergei_Ilchenko
Цитата(SysRq @ Oct 12 2008, 02:28) *
exe2com.exe rolleyes.gif



Могу ошибаться, но этот конвертер сформирует COM только в случае специальным образом заготовленного EXE. Один сегмент для кода, данных, стека e.t.c
makc
Цитата(Sergei_Ilchenko @ Oct 12 2008, 10:58) *
Могу ошибаться, но этот конвертер сформирует COM только в случае специальным образом заготовленного EXE. Один сегмент для кода, данных, стека e.t.c


Вы не ошибаетесь. Все именно так. smile.gif А кроме того, MSVC делает NE/PE exe-файлы, с которыми, думаю, exe2com тем более не сможет справиться.
one_man_show
Николай Иванович, а Вам остро необходимо пользоваться именно указанным продуктом? Я до сих пор пользуюсь контроллерами на "голых" х86, но для программирования применяю Paradigm C++, который заточен не только под "голых", но и под embedded
DpInRock
Вообще-то голый 86 - это еще и без биоса. Или с биосом?
makc
Цитата(DpInRock @ Oct 12 2008, 13:18) *
Вообще-то голый 86 - это еще и без биоса. Или с биосом?


Причём здесь, если мы говорим о машинном коде, исполняемом процессором? wink.gif
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.