DC-SWAT Forum

Полная версия: BIOS Disassembling
Вы просматриваете yпpощеннyю веpсию форума. Пеpейти к полной веpсии.
Страниц: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
Ну а что там таки внутри, этого БИОСА?
вообщем, для тех кто знает что с этим делать и как воспользоваться... это вещь!... тем более я не хочу переписывать это изобретая велик.. ну и мне инетресно, как идёт загрузка .... я же собираюсь делать IPL Wink

буду надеятся, что это устранит всякие там неприятности с невозможностью гулькать на хакнутом биосе... ну и вообще будет всё под моим контролем... а то приходиться тут просить помощи....

хакнем биос, запустим винты
хакнем дримшелWink, покажем всем - мы впереди))))
Нету другого.
а хакнутый переписан заново, или только область где шел сидит заменна другими данными?
насколько то вэри-симпл, много чего не хватает?
сам по себе дримшел - это екзешка как и игры (ну грузиться в туже бласть и т.д ) или гдето межДу , типа в памяти в порядка возрастания сидят так: KERNEL-SHELL-IPBIN-1ST_READ...HEAP,STACK ???
Я же все это уже говорил...
извини , можешь напомнить ещё раз, именно на те вопросы что задал? плиз?
Нет, он вообще не переписан, просто внедрен кусок кода и сделан прыжок.
В самописном много чего не хватает.
Все программы и игры работают сами по себе и грузятся в один и тот же адрес, нет там никакого ядра.
под ядром я понимаю изначальную инициализацию , установку обработчиков, сисколов. и т.п всё что до копирвания шела в память и прыжка на него. т.к в шеле уже идёт по идее исполнение , под настроенную систему, хотя может у тебя все переинициализируется по новому.
Нет, всякие настройки контроллеров памяти и т.п. делается в биосе. DS работает так же как игры.
Чисто из любопытства посмотрел реализации этого simple bios'а http://cadcdev.svn.sourceforge.net/viewv...iew=markup, и появился вопрос:
Непонятны телодвижения, чтобы записать значения по какому-то адресу

PHP код:
...
mov #-1,r3  ! r3 = 0xffffffff
shll16 r3  r3 0xffff0000
shll8 r3  
r3 0xff000000
mov 
#0,r0  ! r0 = 0
mov.l r0,@(16,r3)  ! -> MMUCR (0xff000010)
... 

Нельзя ли было просто сделать типа
PHP код:
mov #0xff000010,r3 
mov.l r0,@r3 

Не проще ли было сделать так, или я что-то не понимаю
да это меня тож смутило..
1- могли писать на си без оптимизации.. и такое вполне можно прадставить...
2- автор кода, чтото упаминает про начало
"Sentinel value so our first two bytes aren't the same as the real Sega ROM. This makes nvflash_detect work" мож это не про то

3- насколько я знаю - у SH4 команды 16 разрядные. так что не факт что в регистр можно сразу засунуть 32 разрадную константу в одну команду!!! т.к коду комады надо ведь тоже место в этих 16-ти битах, поэтому чтобы сформировать её надо пострадать, либо сохранить и загрузить, как это делается где-то в в дальнейшем ...
1. Нет это не оптимизация, некоторые операции на Си написать нельзя, дрим будет ребутится, проверено.
2. Про начало он имеет ввиду операнд "nop", чтобы отличался биос от оригинала он его подставляет.
3. Так оно и есть.
Цитата:... у SH4 команды 16 разрядные ...
Теперь понял

Цитата:...некоторые операции на Си написать нельзя, дрим будет ребутится, проверено.
А АСМ код в Си коде?
Цитата:... у SH4 команды 16 разрядные ...
Да все верно такой операнд просто бы в коде команды не поместился.
Цитата:mov.l r0,@(16,r3) ! 0 -> MMUCR (0xff000010)
Блин, чертовски сложный формат. Я так понимаю мы здесь в адрес, косвенно указываемый регистром r3 + 10h заносим значение регистра r0?
Цитата:Нет, всякие настройки контроллеров памяти и т.п. делается в биосе. DS работает так же как игры.
Разве не самой программой?
В оригинальной документации говорится
PHP код:
MOV.L  |  Rm,@(disp,Rn)  |  Rm → (disp × 4 Rn

По факту получается, да записали данные по адресу записанному в Rn + смещение disp. х 4 если судить по возможным типам команды (mov.b, mov.w, mov.l) говорит о разрядности disp: byte, word и наверное long, т.е байт, два байта и четыре байта.
он имел ввиду, самы низкий уровень всех настроек в биосе... но биос это тоже програма, только самая первая)))

да в р0, только ещё младшую часть или что там MOV.L означает....
Цитата:он имел ввиду, самы низкий уровень всех настроек в биосе... но биос это тоже програма, только самая первая)))
Вижу ты шаришь. Объясни мне следующую вещь. При включении питания, биос устанавливает какие-то напряжения на пинах процессора, устанавливает какие-либо вектора первоначальной загрузки? Или процессор по молчанию после power-up устанавливает CS0# и читает команды из первой попавшейся под руку микросхемы?
Цитата:если судить по возможным типам команды (mov.b, mov.w, mov.l) говорит о разрядности disp: byte, word и наверное long, т.е байт, два байта и четыре байта.
Да, все верно, видимо все так и есть. Спасибо за разъяснения.
я только предположил, так как больше имел дело с MIPS (пс1, пс2)

нуууу... вообще в самом-самом начале чё делает проц только разработчику известно, часто выполняется какаянить проверка , какогонить магического адреса.
...или что типа того
...или ничего не выполняется...

ну, после всех неясностей, по идее проц стартует из вектора сброса, чем является адрес 0x0000000 или типа того, (в процах мипс это адрес 0xBFC00000) , а выставление этого на шине адреса, мультиплексирует -CS0 в ноль)) , ну или какойто другой прописаный аппаратно (в пс1 он называется почемуто -CS2), вообщем аппаратно выбор чипа биоса.
так что никаких случайностей..всё чётко...
Нене

Я тут почитал, пипец просто. Оказывается х2, х4 - это множители для смещения. Т.е. само смещение представляется только одним байтом, что получается при использовании MOV.B Rm,@(disp,Rn) максимальный адрес можно представить как Rn + 255. В случае инструкций MOV.L и MOV.B - максимальное значение адреса становится 255 * 2 + Rn и 255 * 4 + Rn, соответственно.
Капец, я б такие инструкции врядли юзал))). Странно все это, но может я неправильно понял.
Цитата:Капец, я б такие инструкции врядли юзал))). Странно все это, но может я неправильно понял.
Полностью с тобой солидарен. Но, видать, у разработчиков RISC-процессоров, увы, есть свое, и явно превалирующее над нашим мнение на этот счет, так что мы, к сожалению, в проигрышеSmile
Конечно, существенное ограничение на функционал накладывает ограничение длины команды, равное 16 битам. Вот уж воистину, узкое пространство, где сильно не развернешься. А хочется ведь предоставить различные режимы адресации, сделать работу с процессором\микроконтроллером максимально удобной. Вот и извращаются, как могут.
Цитата:так что никаких случайностей..всё чётко...
Ну в-общем ясно, хотелось просто узнать от тебя именно, как разбирающегося во всем этом железячника, как конкретно в Дримкасте это все делается. Ну да ладно, видимо не судьбаSmile Общий принцип понятен, и на том спасибо, за разъяснения.
Страниц: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
URL ссылки