LINUX.ORG.RU

*.BIN - аналог *.COM-файлов Доса в Linux?


0

0

Здравствуйте, друзья! Скажите пожалуйста, можно ли как-то на прямую выполнить ассемблерный BIN-файл процессором, как это делалось в Досе исполнимыми COM-файлами. Я так понимаю, это прямые указания процессору в hex-соде, возможно ли их "воспроизведение" в Линуксе? Говорят, эти файлы применяются так же в качестве "ядерных" приложений, драйверов и тд.. Как заставить процессор выполнять их, будучи на Линуксе? Спасибо!

Завернуть в ELF и запустить как обычно :)

Можно автоматизировать процесс через binfmt_misc.

const86 ★★★★★
()
Ответ на: комментарий от hizel

> там же дос вызовы

Это в комах досвызовы. Ничто не мешает сделать плоский бинарь под линукс.

const86 ★★★★★
()

Разве умное ядро с многозадачностью и прочими хитростями позволяет вот так выполнить произвольный код? Гм..

melkor217 ★★★★★
()
Ответ на: комментарий от melkor217

> Разве умное ядро с многозадачностью и прочими хитростями позволяет вот так выполнить произвольный код? Гм..

А как ещё? Программы "напрямую" процом и выполняются. Чтобы отслеживать каждую инструкцию надо программу в виртуальной машине гонять, с соответствующей потерей в производительности.

vova_vorotov
()
Ответ на: комментарий от melkor217

>Точно напрямую выполняются? А как же, например, виртуальная память?

Выполняются напрямую, но в защищённом режиме процессора. Отображение виртуальной памяти на реальную делается аппаратно.

legolegs ★★★★★
()

А зачем это нужно? Чем ELF не подходит? В конце-концов в ELF всё тот же бинарный код, плюс ещё куча разной другой информации и метаинформации.

WFrag ★★★★
()

> на прямую выполнить ассемблерный BIN-файл процессором

Есть какая-то программа, которую надо запустить? Или хочется написать какую-то специальную программу для каких-то специфических нужд?

Если писать на ассемблере, то вот вам макроассемблеры с линковщиками под Линукс, которые соберут вам программу в требуемом формате (ELF, a.out, whatever-you-want), запустить полученный бинарник проблем не будет.

Если запустить готовую, то прозреваю программу, написанную под ДОС. Есть проблемка: как только она попытается писать в порты, получит по ручонкам. Без использования устройств вывода работа программы бессмыссленна.

Xenesz ★★★★
()
Ответ на: комментарий от WFrag

> Это к чему было?

При беглом прочтении топика я решил, что кто-то сказал, что в венде DOS'овские COM-файлы выполняются напрямую. По ссылке говорится, что выполняются они не совсем напрямую...

Короче в результате невнимательности я запостил эту ссылку =).

Deleted
()

>>>плюс ещё куча разной другой информации и метаинформации.

Вот именно.. А мне бы не хотелось этой "кучи" всякого непотреба, а просто заставить проц прямиком обрабаывать голый hex. Так что, ниужели только на виртуальной машине? Ну, если к примеру тестировать загрузочный процесс какой-нить - не плохо, а вот просто апликуху "заиграть" такого вот вида - не очень подойдёт виртуализация, потому что толку не будет от самой апликухи, собственно.

azicodec
() автор топика
Ответ на: комментарий от azicodec

> просто заставить проц прямиком обрабаывать голый hex.

Без взаимодейтсвия с ОС этот твой hex в usermode сможет высчитать любую математику в регистрах, и всё. Памяти запросить он не сможет, считать входные данные не сможет, вывести результат не сможет. Абсолютно бесполезно.

bvvv
()
Ответ на: комментарий от bvvv

>Абсолютно бесполезно.

А что процессор не имеет доступа к памяти? Ну, на пример что нельзя засунуть напрямую инфу в видеобуфер чтобы это о чем-то сигнализировало? Нада только с помощью какого-то интерфейса?

azicodec
() автор топика
Ответ на: комментарий от azicodec

> А что процессор не имеет доступа к памяти? Ну, на пример что нельзя засунуть напрямую инфу в видеобуфер чтобы это о чем-то сигнализировало? Нада только с помощью какого-то интерфейса?

Времена, когда обычная программа могла получить прямой доступ к любому железу, закончились с приходом многозадачных операционных систем.

Смотреть http://en.wikipedia.org/wiki/Protected_mode, http://en.wikipedia.org/wiki/Ring_%28computer_security%29 и далее по ссылкам.

Deleted
()
Ответ на: комментарий от Deleted

>Времена, когда обычная программа могла получить прямой доступ к любому железу, закончились с приходом многозадачных операционных систем.

Они-то закончились, на уровне апликух дёргающих ядро ОСи, а само ядро-то? Оно же как-то "однозадачно" обращается к процу, памяти, девайсам?

azicodec
() автор топика
Ответ на: комментарий от azicodec

Ну где то было руководство как написать модуль ядра, чето связанное с hello, kernel! Вот и заверни этот свой hex в модуль ядра, получишь привелегии нулевого кольца, а там уж как повезёт.

Gorthauer ★★★★★
()
Ответ на: комментарий от azicodec

> Они-то закончились, на уровне апликух дёргающих ядро ОСи, а само ядро-то? Оно же как-то "однозадачно" обращается к процу, памяти, девайсам?

Да, ядро в общем случае может делать с железом всё что угодно. И если тебе действительно нужно что-то сделать с привилегиями ядра, то как уже сказали выше - пиши модуль для ядра. Статей в интернете навалом, а простейший модуль не сложнее, чем "hellow world" на Си =).

Кстати, а что именно ты хочешь сделать?

Deleted
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.