Разработка и ромхакинг > Ромхакинг

PlayStation instructions generator.

(1/3) > >>

Mr2:

Программа выдаёт инструкции в машинном представлении.

PSIG v0.2
Добавлена генерация из файла в файл.
Подправлены условные переходы.

PSIG v0.3
Исправлен порядок регистров в команде сравнения.
Увеличено колличество допустимых строк, добавлена обработка превышения лимита.

Инструкции.
О PSX.

babulya:
Mr2, а для чего это все надо? :?

Mr2:

--- Цитата: babulya от 02 Ноябрь 2012, 17:51:53 ---Mr2, а для чего это все надо? :?

--- Конец цитаты ---
Ну например в игре есть код стрельбы из пистолета:

--- Код: ---sll     $v0, $s1, 2
lw      $s2, 0($v0)
li      $v0, 0x11
jal     sub_6D2A0
sw      $v0, 0($s7)
move    $s5, $0
sll     $v0, $s1, 2
sw      $s5, 0($v0)
lw      $v0, 0x18($s7)
addiu   $s1, 1
bne     $s1, $v0, loc_3E750
li      $v0, 0xC6090
srl     $s1, $v0, 2
--- Конец кода ---
Ты хочешь заменить его на стрельбу из базуки:

--- Код: ---addiu   $sp, -0x18
lui     $v0, 0xC
lw      $s1, dword_C60E8
li      $v0, 0xC60E0
srl     $v0, 2
sw      $ra, 0x18+var_8($sp)
jal     sub_3E6F0
sw      $v0, 0x18($s7)
lw      $ra, 0x18+var_8($sp)
nop
jr      $ra
addiu   $sp, 0x18

--- Конец кода ---
Пишешь код базуки, но текст PSX не поймёт, тут в дело и вступает PSIG! :wow:
Кормишь PSIG текстом, а он тебе выдаёт кучку машинных команд, которые PSX должна скушать и не поморщиться.

Griever:
Чем spAsm плох?

Mr2:

--- Цитата: Griever от 05 Ноябрь 2012, 10:15:11 ---Чем spAsm плох?

--- Конец цитаты ---
Я не умею пользоваться консольными программами. :blush:

r57shell:
Печально.

Mr2:

--- Цитата: r57shell от 05 Ноябрь 2012, 13:31:36 ---Печально.

--- Конец цитаты ---
Да, не расстраивайся!  :D
Есть же PSIG. :wow:

UltraFatalSlash:
Когда предъявишь первые результаты своей деятельности в этом ПСИГе?) Желательно на примере МК))

Mr2:

--- Цитата: UltraFatalSlash от 05 Ноябрь 2012, 18:55:54 ---Когда предъявишь первые результаты своей деятельности в этом ПСИГе?) Желательно на примере МК))

--- Конец цитаты ---
Дело не только в PSGI, нужно вникнуть в работу с графическим процессором.

Mr2:
PSIG v0.4
Добавлены некоторые функции компилятора:
Константы, переменные, метки, установка начала кода и переменных.
Так как в код было внесено много изменений, требуется углублённое тестирование.
PSIG v0.4.1
Информация о неизвестной ошибке заменена на известную - возникала при проверке сдвигов hi/lo.
Исправлена ошибка в ключевом слове "variables".
Установлены ограничения для начала кода и переменных.
Размер кода и переменных ограничен памятью консоли.
Добавлено сообщение о неверном втором регистре в инструкциях загрузки и сохранения.
Изменена очистка сообщений об ошибках.
Добавлен сдвиг "high data" без увеличения старшей части:  _hd.
Добавлена очистка code start/variables.
Исправлена проверка меток меток.
Добавлено сообщение об ошибке при пропуске цифры в инструкции.
Изменена проверка ошибок в инструкциях загрузки и сохранения.
Добавлено сообщение об ошибке при генерации инструкции введённой с клавиатуры.
PSIG v0.5
Добавлены строки.
PSIG v0.6
Добавлена возможность создавать указатели.
Лимит строк увеличен до 500.
PSIG v0.6.1
Исправлена обработка инструкций загрузки и сохранения с отрицательным индексом.

В архиве файл(PSIG.xml) подсветки синтаксиса для Notepad++.

Mr2:
PSIG v0.7
Исправлено увеличение hi значения.
Исправлена адресация в инструкциях загрузки и сохранения.
Лимит строк увеличен до 2500.

PSIG v0.8
PSIG всунут в окно.
Добавлена генерация кода в исполняемый файл(PSX-EXE/SLUS/SLES ).
Доступен выбор In/Out файлов через браузер.
Обновлён файл подсветки "PSIG Highlighting syntax.xml".
Добавлено полное описание синтаксиса PSIG.( файл "Syntax.txt")
Ключевое слово "code start" заменено на  "code_start".
Добавлено ключевое слово file_index.
Клавиша F1 -  вывод информации о программе.


PSIG v0.9
Исправлено декодирование констант.
Лимит строк увеличен до 3500.


Мануал, из которого можно узнать для чего нужен PSIG.

Mr2:
PSIG v1.0
Изменён интерфейс программы.
Добавлена поддержка броска файла в окно программы.
Добавлен флаг генерации инструкции.


paul_met:
Что-то я не понял, а куда делся регистр R0? Почему генератор его не признаёт?

krocki:
Как я понял это типа конвертера ASM to HEX?

dedok179:

--- Цитата: krocki от 04 Июль 2017, 23:05:31 ---Как я понял это типа конвертера ASM to HEX?

--- Конец цитаты ---
Да. Почти как SPASM от Hitmen, только в графической оболочке с поддержкой новых WIN ОС.

Mr2:

--- Цитата: paul_met от 04 Июль 2017, 20:56:42 ---Что-то я не понял, а куда делся регистр R0? Почему генератор его не признаёт?

--- Конец цитаты ---
В архиве с программой идёт документация(Синтаксис.txt), там есть ответы на большинство вопросов. ;)
Нулевой регистр называется zr.


--- Цитата: krocki от 04 Июль 2017, 23:05:31 ---Как я понял это типа конвертера ASM to HEX?

--- Конец цитаты ---
Это типа ASM компилятора, но чуть до него не дотягивает по функционалу. :)

paul_met:

--- Цитата: Mr2 от 07 Июль 2017, 08:29:51 ---В архиве с программой идёт документация(Синтаксис.txt), там есть ответы на большинство вопросов.
Нулевой регистр называется zr.
--- Конец цитаты ---
В этой документации ни слова нет о том, что регистр R0 заменён на ZR и по каким соображением эта путаница затеяна.

paul_met:
Предлагаю внести некоторые изменения в интерфейс программы, дабы улучшить её удобство:

* Стоит избавиться от привязки к регистру букв. Ввод инструкций исключительно в верхнем регистре это как-то странно. Тоже самое касается и нижнего регистра для "регистров" (тавтология прям получилась).
* Думаю, дабы избежать путаницы, надо всё-таки вернуть название нулевому регистру R0, а не ZR. Всё-таки во все дебаггерах, да и в доке по Мипсам нулевой регистр называется именно R0.
* Удобнее будет вместо переключателя Reverse Instruction сделать отдельные кнопки для генерации прямого и обратного кода. Это быстрее и логичнее, чем переключение и повторная генерация.
* Раз информационное окно не очищается после очередной генерации кода, то нагляднее будет на против ранее сгенерированного кода выводить текст инструкции, чтобы история ввода была информативнее. Оставлять голый код в окне смыла особого нет. Тогда уж проще очищать окно.
* Не помешала бы и отдельная кнопка копирования последнего сгенерированного кода, чтобы лишний раз не выделять его и не копировать ручками.

Mr2:

--- Цитата: paul_met от 26 Апрель 2018, 20:10:32 ---Стоит избавиться от привязки к регистру букв. Ввод инструкций исключительно в верхнем регистре это как-то странно. Тоже самое касается и нижнего регистра для "регистров" (тавтология прям получилась).
--- Конец цитаты ---
Такой синтаксис совместим с дизассемблером Munch.


--- Цитата: paul_met от 26 Апрель 2018, 20:10:32 ---Думаю, дабы избежать путаницы, надо всё-таки вернуть название нулевому регистру R0, а не ZR. Всё-таки во все дебаггерах, да и в доке по Мипсам нулевой регистр называется именно R0.
--- Конец цитаты ---
r0-r31 это не имена регистров, это сами регистры. ;)


--- Цитата: paul_met от 26 Апрель 2018, 20:10:32 ---Удобнее будет вместо переключателя Reverse Instruction сделать отдельные кнопки для генерации прямого и обратного кода. Это быстрее и логичнее, чем переключение и повторная генерация.
--- Конец цитаты ---
+1


--- Цитата: paul_met от 26 Апрель 2018, 20:10:32 ---Раз информационное окно не очищается после очередной генерации кода, то нагляднее будет на против ранее сгенерированного кода выводить текст инструкции, чтобы история ввода была информативнее.
--- Конец цитаты ---

+1


--- Цитата: paul_met от 26 Апрель 2018, 20:10:32 ---Оставлять голый код в окне смыла особого нет. Тогда уж проще очищать окно.
--- Конец цитаты ---
В контекстном меню главного окна, есть ручная очистка.(если что)


--- Цитата: paul_met от 26 Апрель 2018, 20:10:32 ---Не помешала бы и отдельная кнопка копирования последнего сгенерированного кода, чтобы лишний раз не выделять его и не копировать ручками.
--- Конец цитаты ---
+1

paul_met, в ближайшее время обновлений не планируется  :(, если так раздражает регистр инструкций и название нулевого регистра, можешь по старинке поправить их через хекс редактор. :D

paul_met:

--- Цитата: Mr2 от 27 Апрель 2018, 13:23:22 ---Такой синтаксис совместим с дизассемблером Munch.
--- Конец цитаты ---
Так пусть и остаётся совместим. Можно ведь сделать так, чтобы при вводе с клавы регистр игнорировался, а в окошке ввода инструкции всё отображалось как и раньше (имена инструкций в верхнем, регистры - в нижнем). Так будет проще, чем постоянно жонглировать шивтом или капсом.


--- Цитата: Mr2 от 27 Апрель 2018, 13:23:22 ---r0-r31 это не имена регистров, это сами регистры. 
--- Конец цитаты ---
Я в курсе, просто привык, что в дебаггере PCSX порядковый номер нулевого регистра совпадает с его именем. А в No$PSX он просто нуль.

Навигация

[0] Главная страница сообщений

[#] Следующая страница

Перейти к полной версии