генерация плоского бинарника без системных функций

Вопросы программирования на Free Pascal, использования компилятора и утилит.

Модератор: Модераторы

Re: генерация плоского бинарника без системных функций

Сообщение Лекс Айрин » 11.10.2014 14:29:01

Pavia писал(а):Можно сделать всё! Но какой ценой? В какие сроки?
Я всё это уже прошёл.


Целое поколение программистов фактически писало недоось в своих программах. Работали преимущественно напрямую взаимодействуя с аппаратурой напрямую. Сейчас нет особой необходимости из-за возросшей производительности, но это было. А вопрос цены... это же хобби. Тут цена одна -- понимание, что ты можешь это сделать.

Pavia писал(а):Так что берите готовую ОС с минимальной сборкой и делайте свой реаниматор поверх.


А если надо не реаниматор? А если необходимо, допустим, написать программу взаимодействующую с диском напрямую? (в обход файловой системы?)

Pavia писал(а): Linux живёт только за то что Intel в него вложила не мала кода для поддержания своих и чужих устройств.

Сделайте столько же, сколько сделал Линус Торвальдс и Intel будет писать и для Вашей операционки. Но ведь он начал писать, хотя в его время альтернатива была.
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград

Re: генерация плоского бинарника без системных функций

Сообщение SSerge » 11.10.2014 15:38:34

ger0strat писал(а): там те же зайцы на ассемблере, только в профиль


Либо зайцы на ассемблере :D , либо совершенно малоподходящий профиль :D
Работать напрямую с байтами памяти через язык, который фактически во многих случаях позволяет делать это только через хаки или весьма извращенным образом - получается несколько непродуктивно. Не зря то, на чем пишутся операционные системы, имеет четкое разграничение - "язык" отдельно, а все типы данных, которые не умеет напрямую поддерживать процессор, все операции, которые выходят за рамки прямого процессорного кода - отдельно. Идеология Си. :D Идеология языка Fort. Идеология "виртуальных" языков типа явы, наконец.

ger0strat писал(а): что у вас там работало, но это издевательство над программой.


Да все работало. :oops: Программа была написана без обращений к DOS. NOP-ами на int21 забивался stub инициализатора, втыкаемый компилятором turbo C 2.0; собственно, остальной программе эти данные не требовались вообще. Но даже такое было на самом деле бесперспективным занятием.

ger0strat писал(а):io? видеобуфер отображен в память.

Не забыли, что строк то нет без менеджера памяти? Со строками вообще полный ппц в freepascal, мало того, что они неэффективны, так еще и постоянно перераспределяются и переводятся в новый экземпляр при присвоениях.

Лекс Айрин писал(а):Человек хочет знать как программировать под "голым" БИОСом. Почему бы и нет? Я тоже хочу.


Дык, сей путь не для текущих релизов freepascal. Для начала этому компилятору следовало бы реализовать соответствующий ключ компиляции, типа "компиляция на указанный фиксированный адрес, неперемещаемый код, i386, без операционной системы". Боюсь, выучить СИ или применить ассемблер будет намного ближе к достижению результатов
SSerge
энтузиаст
 
Сообщения: 971
Зарегистрирован: 12.01.2012 05:34:14
Откуда: Барнаул

Re: генерация плоского бинарника без системных функций

Сообщение Pavia » 11.10.2014 15:54:50

О мисье троль.
А если надо не реаниматор? А если необходимо, допустим, написать программу взаимодействующую с диском напрямую? (в обход файловой системы?)

Конечно же через ОС. Это решается 2 строчками. 1. Получения прав администратора вторая открытие жёсткого диска как файла через AssignFile()
В виндоусе через '\PhysicalDrive0' в линуксе аналогично /dev/sda
А если в DOS то это по хорошему надо драйвер из линукса выдрать. А это 100 000 строк кода, правда там много устаревшего кода из них от 10 тыс до 30 тыс нужного. Ну можно и самому всё написать 1 000 строчек. И оно будет глючить, так как у вас нет большой базы на тестирования вашего кода.

Сделайте столько же, сколько сделал Линус Торвальдс и Intel будет писать и для Вашей операционки. Но ведь он начал писать, хотя в его время альтернатива была.

А причем тут Линус? Он не более чем хорошей менеджер. А как писатель он полный ноль. И весь Линукс был написан другими программистами.
Последний раз редактировалось Pavia 11.10.2014 16:19:57, всего редактировалось 1 раз.
Аватара пользователя
Pavia
постоялец
 
Сообщения: 290
Зарегистрирован: 07.01.2011 12:46:51

Re: генерация плоского бинарника без системных функций

Сообщение ger0strat » 11.10.2014 15:56:58

Pavia
Менеджер памяти вам понадобится.

читаем выше
Понадобиться не только менеджер памяти, но ввод и вывод.

читаем выше
А также процессы так как надо будет иметь возможность прервать выполнение программы.

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

читаем выше
Так что берите готовую ОС с минимальной сборкой и делайте свой реаниматор поверх.

вариант годный, но читаем первый пост
Linux живёт только за то что Intel в него вложила не мала кода для поддержания своих и чужих устройств.

детектирую незнание матчасти
И ассмеблер знаю. И писать больше и сложные программы на ассмеблере можно. Просто у вас не было хорошего учебника. И вы так не научились писать функции и работать со структурами данных. А это ведь основы программирования! Но писать на ассемблере большой проект я не буду. Просто на языках высокого уровня это удобнее.

судя по стилистике вам пора делать уроки, каникулы закончились

А я так надеялся, что тема мирно закончится. Дабы не кормить зелёного друга подытожу:
-Us не обязателен. достаточно переписать или отключить(-n) fpc.cnf
компиляцию в плоский бинарник не нашел, но и черт бы с ней, есть ld
паскаль внешние ассемблерные функции подцепил
идею с трансляцией интов так и не понял, зато нашел в линуховых исходниках работу с дисками через порты.

Поднятые в теме вопросы решены. Тему можно закрывать. Будет что-то более-менее годное - выложу.
ger0strat
новенький
 
Сообщения: 40
Зарегистрирован: 13.05.2014 19:35:56

Re: генерация плоского бинарника без системных функций

Сообщение Pavia » 11.10.2014 16:06:58

Pavia писал(а):Дык, сей путь не для текущих релизов freepascal. Для начала этому компилятору следовало бы реализовать соответствующий ключ компиляции, типа "компиляция на указанный фиксированный адрес, неперемещаемый код, i386, без операционной системы". Боюсь, выучить СИ или применить ассемблер будет намного ближе к достижению результатов

Отставить писимизьм. Собрать под заданный адрес можно к примеру как здесь.
http://wiki.osdev.org/Pascal_Bare_Bones
А далее из ELF надо перевести в BIN. Насколько помню была утелита objectcopy с её помощью получал бинарник.
Либо свою утилиту сделать это не сложно.
Аватара пользователя
Pavia
постоялец
 
Сообщения: 290
Зарегистрирован: 07.01.2011 12:46:51

Re: генерация плоского бинарника без системных функций

Сообщение Mirage » 11.10.2014 19:09:31

А что, int 13h из биоса уже не работает? А то в биосе, насколько я помню, много функций было. И с дисками работать и с портами и клавиатурой и даже точки рисовать.
Mirage
энтузиаст
 
Сообщения: 881
Зарегистрирован: 06.05.2005 20:29:07
Откуда: Russia

Re: генерация плоского бинарника без системных функций

Сообщение Pavia » 11.10.2014 20:23:16

Mirage писал(а):А что, int 13h из биоса уже не работает? А то в биосе, насколько я помню, много функций было. И с дисками работать и с портами и клавиатурой и даже точки рисовать.

Работает как и работало. Т.е до выхода новых дисков, а потом снова не работает. А потом обновляют биос, как правило вместе с материнокй и оно с ново работает. Просто как я понимаю автор не хочет работать в 16 битном режиме, а хочет работать в 32 битном или 64 битном режиме. А в этих режимах БИОС не работает.
И второй недостаток в биосе код медленный, порядка 16-32 МБайт/с против, линукса или виндоуса с 150-300 МБайт/с.
Аватара пользователя
Pavia
постоялец
 
Сообщения: 290
Зарегистрирован: 07.01.2011 12:46:51

Re: генерация плоского бинарника без системных функций

Сообщение Лекс Айрин » 05.12.2014 11:43:28

Pavia писал(а):А причем тут Линус? Он не более чем хорошей менеджер. А как писатель он полный ноль. И весь Линукс был написан другими программистами.


Первоначально он написал все сам. Так что говорить, что он полный ноль нельзя.

Pavia писал(а):Конечно же через ОС. Это решается 2 строчками. 1. Получения прав администратора вторая открытие жёсткого диска как файла через AssignFile()
В виндоусе через '\PhysicalDrive0' в линуксе аналогично /dev/sda



И добиться BSODа, когда системе вдруг захочется обратиться к нужному нам месту диска?
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград

Пред.

Вернуться в Free Pascal Compiler

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 6

Рейтинг@Mail.ru