Показать сообщение отдельно
Старый 10.06.2011, 11:30   #48
Bedolaga
Бывалый
 
Имя: Алексей
Авто: Pajero Sport 2010 3.0
Сообщений: 29
По умолчанию Re: Исследование механизма работы ПО MMCS

Цитата:
Сообщение от heavy Посмотреть сообщение
Интересно на чем отлаживают код разработчики, имхо не на живой голове, а на железке типа "ренесанса" или софтовом эмуляторе
ПО MMCS писалось на языке высокого уровня, причем объектно ориентированном (как верный признак, в теле программ щедро накидано операторов "delete" и "new", используемых в ООП для создания и уничтожения экземпляров классов).

У этого факта есть 2 стороны:

1) плюс: много полезной информации компилятор оставляет в теле исполняемого модуля. Там есть потрясающие строки вида " А вот сейчас мы запретим показ DVD в движении". Причем строки хранятся недалеко от кода, как это и положено при компиляции объектов Именно поэтому относительно легко удается грохнуть этот запрет с DVD, особенно не парясь с трассировкой кода.

2) минус: крайне затруднено восстановление программной логики, поскольку очень много вызовов процедур не по прямым адресам, а косвенно через относительные смещения к неивестным из мертвого листинга адресам (которые видимо являются ссылками на объекты исходного текста ООП). И мертвый код анализировать становится трудно. Это плата за удобство концепции ООП для разработчика.

На интелсовместимых платформах, я даже спустя 15 лет перерыва могу по ассемблерному коду легко вернуть все в С. Легко понять вызовы процедур и какие параметры при этом передаются. На SH-4 у меня таких навыков нет, поэтому это все время. Если кто обладает знаниями по стандартной структуре ассемблерного кода SH-4, в который компилируются высокоуровневые вызовы процедур и функций хоть на CPP хоть на C#, буду признателен за краткую информацию.

Что касается отладки: свой небольшой отладчик в MMCS загружен, можно пытаться его слегка переписать, чтобы он выводил на экран устройства или в файл нужную информацию. Но что бы его переписать и отладить нужно большое количество циклов: модификация кода --> модификация loading.kwi --> запись на HDD --> запуск на устройстве ---> анализ результата --> модификация кода --> ... и далее по циклу.

Все прозаично но муторно и долго. А альтернативой является интуитивное и несистематическое тыканье в разные места кода на удачу и проверка что получилось. Тоже вариант, но менее предсказуемый.
Bedolaga вне форума   Вверх Ответить с цитированием