Цитата:
Сообщение от AS21
МОЖЕТ только YDean - но он сйчас занят
Кроме того - ему очень не нравится ассемблер SH4
Может начнем сами осваивать?...
|
Итак, что мне удалось накопать....
Сначала ссылки:
документация
h14th002d2.pdf
h14tp003d2.pdf
описание на MSDN -
http://msdn.microsoft.com/en-us/library/ms925514.aspx
небольшой опыт дизассемблирования
https://out-club.ru/board/showthread...set#post901468
http://graland-security.blogspot.ru/...6/sh4-fun.html
Описание регистров:
R0 Return values
R1 Temp register
R2 Temp register
R3 Temp register
R4 First function argument
R5 Second function argument
R6 Third function argument
R7 Fourth function argument
R8 Permanent register
R9 Permanent register
R10 Permanent register
R11 Permanent register
R12 Permanent register
R13 Permanent register
R14 Default frame pointer
R15 Stack pointer
Все регистры 32-битные...есть еще регистры для float, но пока их не смотрел...
регистр PR - Procedure register (32 bits, initial value undefined): The return address is stored in PR in a subroutine call using a BSR, BSRF, or JSR instruction, and PR is referenced by the subroutine return instruction (RTS).
Не забываем, что система BE (big endian), поэтому константы читаем наоборот:
mov #H'3ac, R1 (в другой записи mov #0x3ac, R1) - т.е. в R1 помещается 0xAC03
еще один момент от
ежика:
Цитата:
У SH4A все переходы, кроме bt и bf являются delayed. Это означает, что следующая за командой перехода инструкция выполняется ПЕРЕД переходом
|
Цель минимум: получить при загрузке на экране "Hello world!"...
Для себя представляю примерно так:
нужно получить файл типа
Код:
void main()
{
print("Hello world!");
}
(пусть даже с ассемблерными вставками - почему, читайте ниже) и скомпилировать его в Platform Builder.
Исходные данные:
для реализации можно анализировать модули SCLoader.exe или HMImanager.exe, которые загружаются на этапе init и используют в импорте минимум библиотек
Проблемы:
есть подозрение, что работа с железом зашита в каждый модуль отдельно, т.е. нет некоего отдельного драйвера для экрана...кроме того, часть модулей пишется в ROM без релока (не знаю как это по научному), поэтому обращение к процедурам таких модулей идет через обращение к соответствующим адресам ROM...вывод сделан также на основании
этого поста...
поэтому было бы неплохо найти, по каким адресам ROM загружаются такие модули...или выдрать вызов этих функций и прямо ассемблером вставить в код...
ну вот так для начала...