Page 4 of 5

Re: Запуск на 80486

Posted: Thu Oct 24, 2013 5:15 pm
by yogev_ezra
Akyltist wrote:
vkolibri wrote:У меня два бука есть (80486sx/33 & 80486dx/66)
1990-х была выпущена «облегченная» модификация i486SX без встроенного блока FPU.
ну это ладно, но на 80486dx/66 даже квейк идёт)))) что там может быть за инструкция специфическая такая?
Вы тему вообще не читаете, прежде чем написать? :wink:
Используется RDTSC (добавлена только в процессорах Pentium)
Заменить нужно всего 5 строчек (которые написаны на 20см выше в этой же теме).

Re: Запуск на 80486

Posted: Thu Oct 24, 2013 6:35 pm
by vkolibri
Прошу прощения, виноват.
Все понял.

Re: Запуск на 80486

Posted: Fri Oct 25, 2013 9:44 am
by red.kaktus.37
yogev_ezra wrote: Заменить нужно всего 5 строчек.
не совсем. я менял, оська запускалась до инициализации чего-то и тухла. должно быть что-то ещё, но что, я так и не понял. 8-битный авр - вот предел моего асма :(

Re: Запуск на 80486

Posted: Fri Oct 25, 2013 11:04 am
by Akyltist
yogev_ezra wrote:Используется RDTSC
видимо не только она, а еще и команды из той лодки
WRMSR - Write the value in EDX:EAX to MSR specified by ECX
RDMSR - Load MSR specified by ECX into EDX:EAX

Code: Select all

kernel\trunk\core\memory.inc
kernel\trunk\kernel.asm
kernel\trunk\sec_loader\trunk\listing.inc
kernel\trunk\sec_loader\trunk\loader.asm

Re: Запуск на 80486

Posted: Fri Oct 25, 2013 11:54 am
by vkolibri
red.kaktus.37 wrote:...8-битный авр - вот предел моего асма :(
А что такое "авр"?

Re: Запуск на 80486

Posted: Fri Oct 25, 2013 12:04 pm
by red.kaktus.37
avr - 8-ми битные контроллеры (есть конечно и 32бита) фирмы атмел (там асм весь в мнемониках, чистого интеловского нет)

Re: Запуск на 80486

Posted: Fri Oct 25, 2013 12:16 pm
by red.kaktus.37
в далёком прошлом когда начал программировать на вижуал бэсике (тогда достаточно модном), меня всё больше и больше терзала платформенность того что я пишу (на тот момент написал какаю то управляшку с лпт, саморазмножающийся "вирус" на основе скриптов и блокнот умеющий читать более 5кило в отличии от микрософтовского, который тупо вис на неопределённое время :)) порой бросал и удалял всё начатое... пока не увидел какой-то пик одноразовый (с индексом С) у отца на работе, там дядька сослуживец замутил на нём (на пике) машинку сыну, всего 4 команды и те на проводном пульте, но тогда то я и понял, что всё что пишется на компе не имеет особой для меня ценности из-за того, что нельзя принести к другу в школу это убожество с быдлокодом и продемонстрировать как это чудо ещё и работает! с тех пор сожжено не мало камней а программирование на пк начал осваивать с ноля, т.к. си это не виж.бэйс )
правда сейчас появились в народе компы которые работают от батареек и носятся в кармане... но это уже другая история )))
прошу пардона муа за флуд и офф-топ )))

Re: Запуск на 80486

Posted: Fri Oct 25, 2013 1:29 pm
by vkolibri
Подождем. Может быть авторы системы когда-нибудь на минутку освободятся и перекомпилируют систему для 486. Вообще, говоря о Visual Basic, даже в QBasic была опция "компилировать для 286". Компилятор сам искал то, что идет на пентиумах и "эмулировал" в виде, который может быть исполнен на 80286. То есть в таком ассемблере Колибри ОС можно компилировать под любые процессоры, если бы он был. Другое дело, если вопрос касается ОЗУ, к которому 486 не может обратиться в отличие от пентиума, тогда все скомпилируется как надо, но работать не будет. И это знают только разработчики.
ps:
Это к вопросу, что рано или поздно необходимо будет произвести разделение кода - низкий, машинозависимый уровень и верхний. Для разных камней останется править только нижний.

За оффтоп нас счас здесь съедят :x

Re: Запуск на 80486

Posted: Fri Oct 25, 2013 2:12 pm
by Mario_r4
vkolibri wrote:Может быть авторы системы когда-нибудь на минутку освободятся и перекомпилируют систему для 486. Вообще, говоря о Visual Basic, даже в QBasic была опция "компилировать для 286". Компилятор сам искал то, что идет на пентиумах и "эмулировал" в виде, который может быть исполнен на 80286. То есть в таком ассемблере Колибри ОС можно компилировать под любые процессоры, если бы он был. Другое дело, если вопрос касается ОЗУ, к которому 486 не может обратиться в отличие от пентиума, тогда все скомпилируется как надо, но работать не будет. И это знают только разработчики.
ps:
Это к вопросу, что рано или поздно необходимо будет произвести разделение кода - низкий, машинозависимый уровень и верхний. Для разных камней останется править только нижний.
Это мнение большого специалиста в ФАСМ?
Spoiler:Тему не читай - мозг сразу отключай.

Image

Re: Запуск на 80486

Posted: Fri Oct 25, 2013 3:10 pm
by vkolibri
Mario_r4 wrote:Это мнение большого специалиста в ФАСМ?
Неа, просто фантазирую. Понравилась сама идея. При встрече сложной (для 80486) команды, смотреть флажок компиляции и "разворачивать" код для 286. Если флажка нет, тупо вставлять инструкции пентиум.
Ну вот и помечтал, что такой бы компилятор отыскать, он и под ARM скомпилирует, останется только с портами и памятью разобраться.

Re: Запуск на 80486

Posted: Fri Oct 25, 2013 4:33 pm
by CleverMouse
Akyltist wrote:
yogev_ezra wrote:Используется RDTSC
видимо не только она, а еще и команды из той лодки
WRMSR - Write the value in EDX:EAX to MSR specified by ECX
RDMSR - Load MSR specified by ECX into EDX:EAX

Code: Select all

kernel\trunk\core\memory.inc
kernel\trunk\kernel.asm
kernel\trunk\sec_loader\trunk\listing.inc
kernel\trunk\sec_loader\trunk\loader.asm
rdmsr/wrmsr используются, только если cpuid показала их наличие. Либо если программа явно попросила, но тогда ядро просто прибьёт такую программу.

Re: Запуск на 80486

Posted: Fri Oct 25, 2013 4:41 pm
by CleverMouse
vkolibri wrote:Подождем. Может быть авторы системы когда-нибудь на минутку освободятся и перекомпилируют систему для 486
Если бы простой перекомпиляции было достаточно - это давно бы уже сделали:
red.kaktus.37 wrote:не совсем. я менял, оська запускалась до инициализации чего-то и тухла. должно быть что-то ещё, но что, я так и не понял
Раз простой замены недостаточно, нужно выяснять, в чём дело, а ни у кого из разработчиков давно нет таких машин.

Re: Запуск на 80486

Posted: Fri Oct 25, 2013 4:48 pm
by vkolibri
CleverMouse wrote:Если бы простой перекомпиляции было достаточно - это давно бы уже сделали
Ладно, когда-нибудь. Ориентироваться на 486 нет смысла, это точно. Спасибо за ответы. Поставлю пока FreeDOS.

Re: Запуск на 80486

Posted: Fri Oct 25, 2013 8:26 pm
by yogev_ezra
red.kaktus.37 wrote:
yogev_ezra wrote: Заменить нужно всего 5 строчек.
не совсем. я менял, оська запускалась до инициализации чего-то и тухла. должно быть что-то ещё, но что, я так и не понял. 8-битный авр - вот предел моего асма :(
Я к тому, что начинать нужно было с этих 5 строчек, которые вам обоим предложили попробовать, а уже если это не помогало, то отписываться на форуме и ждать дальнейших инструкций. (А не писать сразу, что всё сложно и перечитывать все исходники ядра нет времени и знаний).
Akyltist wrote:
yogev_ezra wrote:Используется RDTSC
видимо не только она, а еще и команды из той лодки
WRMSR - Write the value in EDX:EAX to MSR specified by ECX
RDMSR - Load MSR specified by ECX into EDX:EAX

Code: Select all

kernel\trunk\core\memory.inc
kernel\trunk\kernel.asm
kernel\trunk\sec_loader\trunk\listing.inc
kernel\trunk\sec_loader\trunk\loader.asm
Я имел в виду, что как минимум RDTSC, который используется ещё на этапе загрузки ядра, и начинать заменять на 486-совместимый код нужно с этого.

Re: Запуск на 80486

Posted: Mon Oct 28, 2013 3:26 pm
by vkolibri
yogev_ezra wrote: kernel\trunk\kernel.asm
kernel\trunk\sec_loader\trunk\listing.inc
kernel\trunk\sec_loader\trunk\loader.asm
А, скажите, не нашлось бы у вас минутки, чтобы в вышеуказанных файлах тупо произвести замену:
++++++++++++++
rdtsc
------------------
на
++++++++++++++
mov eax,1000000
mov edx,1000000
------------------
и скомпилировать вышеуказанные файлы? У вас настроен ассемблер, или надо инсталлировать?

Понятно, что значение в регистрах будет левым, но хотя бы пусть на одной частоте поработает для теста, главное запустить. Что-то я не могу уняться =)

если зависнет, то:
++++++++++++++
add eax,1
mov edx,1000000
------------------
Пускай наугад считает