Автор Тема: PlayStation instructions generator.  (Прочитано 9562 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Mr2

  • Пользователь
  • Сообщений: 1592
  • Пол: Мужской
  • Free roaming sorcerer
    • Facebook
    • Просмотр профиля
PlayStation instructions generator.
« : 02 Ноябрь 2012, 17:35:55 »

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

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

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

Инструкции.
О PSX.
« Последнее редактирование: 26 Май 2013, 17:31:48 от Mr2 »

Оффлайн babulya

  • Пользователь
  • Сообщений: 1204
  • Пол: Мужской
    • Просмотр профиля
Re: PlayStation instructions generator.
« Ответ #1 : 02 Ноябрь 2012, 17:51:53 »
Mr2, а для чего это все надо? :?

Оффлайн Mr2

  • Пользователь
  • Сообщений: 1592
  • Пол: Мужской
  • Free roaming sorcerer
    • Facebook
    • Просмотр профиля
Re: PlayStation instructions generator.
« Ответ #2 : 02 Ноябрь 2012, 18:03:18 »
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

  • Пользователь
  • Сообщений: 77
    • Просмотр профиля
Re: PlayStation instructions generator.
« Ответ #3 : 05 Ноябрь 2012, 10:15:11 »
Чем spAsm плох?

Оффлайн Mr2

  • Пользователь
  • Сообщений: 1592
  • Пол: Мужской
  • Free roaming sorcerer
    • Facebook
    • Просмотр профиля
Re: PlayStation instructions generator.
« Ответ #4 : 05 Ноябрь 2012, 10:21:47 »
Чем spAsm плох?
Я не умею пользоваться консольными программами. :blush:

Оффлайн r57shell

  • Пользователь
  • Сообщений: 1402
    • Просмотр профиля
Re: PlayStation instructions generator.
« Ответ #5 : 05 Ноябрь 2012, 13:31:36 »
Печально.

Оффлайн Mr2

  • Пользователь
  • Сообщений: 1592
  • Пол: Мужской
  • Free roaming sorcerer
    • Facebook
    • Просмотр профиля
Re: PlayStation instructions generator.
« Ответ #6 : 05 Ноябрь 2012, 14:16:35 »
Печально.
Да, не расстраивайся!  :D
Есть же PSIG. :wow:

Оффлайн UltraFatalSlash

  • Пользователь
  • Сообщений: 274
  • Пол: Мужской
  • Уывбин дискаверед!!!! О____О
    • Просмотр профиля
Re: PlayStation instructions generator.
« Ответ #7 : 05 Ноябрь 2012, 18:55:54 »
Когда предъявишь первые результаты своей деятельности в этом ПСИГе?) Желательно на примере МК))

Оффлайн Mr2

  • Пользователь
  • Сообщений: 1592
  • Пол: Мужской
  • Free roaming sorcerer
    • Facebook
    • Просмотр профиля
Re: PlayStation instructions generator.
« Ответ #8 : 05 Ноябрь 2012, 19:11:50 »
Когда предъявишь первые результаты своей деятельности в этом ПСИГе?) Желательно на примере МК))
Дело не только в PSGI, нужно вникнуть в работу с графическим процессором.

Оффлайн Mr2

  • Пользователь
  • Сообщений: 1592
  • Пол: Мужской
  • Free roaming sorcerer
    • Facebook
    • Просмотр профиля
Re: PlayStation instructions generator.
« Ответ #9 : 14 Апрель 2014, 19:21:32 »
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

  • Пользователь
  • Сообщений: 1592
  • Пол: Мужской
  • Free roaming sorcerer
    • Facebook
    • Просмотр профиля
Re: PlayStation instructions generator.
« Ответ #10 : 27 Сентябрь 2015, 12:50:35 »
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

  • Пользователь
  • Сообщений: 1592
  • Пол: Мужской
  • Free roaming sorcerer
    • Facebook
    • Просмотр профиля
PlayStation instructions generator.
« Ответ #11 : 08 Июль 2016, 19:32:06 »
PSIG v1.0
Изменён интерфейс программы.
Добавлена поддержка броска файла в окно программы.
Добавлен флаг генерации инструкции.


« Последнее редактирование: 16 Июль 2016, 11:09:21 от Mr2 »

Оффлайн paul_met

  • Супермодератор
  • Сообщений: 8077
  • Пол: Мужской
  • Похититель эмуляции
    • Youtube
    • Просмотр профиля
PlayStation instructions generator.
« Ответ #12 : 04 Июль 2017, 20:56:42 »
Что-то я не понял, а куда делся регистр R0? Почему генератор его не признаёт?

Оффлайн krocki

  • Пользователь
  • Сообщений: 1250
  • Пол: Мужской
  • ...:::Hacking_Craft:::...
    • Просмотр профиля
PlayStation instructions generator.
« Ответ #13 : 04 Июль 2017, 23:05:31 »
Как я понял это типа конвертера ASM to HEX?

Оффлайн dedok179

  • Пользователь
  • Сообщений: 496
  • Пол: Мужской
    • Youtube
    • Просмотр профиля
PlayStation instructions generator.
« Ответ #14 : 05 Июль 2017, 12:07:53 »
Как я понял это типа конвертера ASM to HEX?
Да. Почти как SPASM от Hitmen, только в графической оболочке с поддержкой новых WIN ОС.

Оффлайн Mr2

  • Пользователь
  • Сообщений: 1592
  • Пол: Мужской
  • Free roaming sorcerer
    • Facebook
    • Просмотр профиля
PlayStation instructions generator.
« Ответ #15 : 07 Июль 2017, 08:29:51 »
Что-то я не понял, а куда делся регистр R0? Почему генератор его не признаёт?
В архиве с программой идёт документация(Синтаксис.txt), там есть ответы на большинство вопросов. ;)
Нулевой регистр называется zr.

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

Оффлайн paul_met

  • Супермодератор
  • Сообщений: 8077
  • Пол: Мужской
  • Похититель эмуляции
    • Youtube
    • Просмотр профиля
PlayStation instructions generator.
« Ответ #16 : 07 Июль 2017, 10:41:19 »
В архиве с программой идёт документация(Синтаксис.txt), там есть ответы на большинство вопросов.
Нулевой регистр называется zr.
В этой документации ни слова нет о том, что регистр R0 заменён на ZR и по каким соображением эта путаница затеяна.

Оффлайн paul_met

  • Супермодератор
  • Сообщений: 8077
  • Пол: Мужской
  • Похититель эмуляции
    • Youtube
    • Просмотр профиля
PlayStation instructions generator.
« Ответ #17 : 26 Апрель 2018, 20:10:32 »
Предлагаю внести некоторые изменения в интерфейс программы, дабы улучшить её удобство:
  • Стоит избавиться от привязки к регистру букв. Ввод инструкций исключительно в верхнем регистре это как-то странно. Тоже самое касается и нижнего регистра для "регистров" (тавтология прям получилась).
  • Думаю, дабы избежать путаницы, надо всё-таки вернуть название нулевому регистру R0, а не ZR. Всё-таки во все дебаггерах, да и в доке по Мипсам нулевой регистр называется именно R0.
  • Удобнее будет вместо переключателя Reverse Instruction сделать отдельные кнопки для генерации прямого и обратного кода. Это быстрее и логичнее, чем переключение и повторная генерация.
  • Раз информационное окно не очищается после очередной генерации кода, то нагляднее будет на против ранее сгенерированного кода выводить текст инструкции, чтобы история ввода была информативнее. Оставлять голый код в окне смыла особого нет. Тогда уж проще очищать окно.
  • Не помешала бы и отдельная кнопка копирования последнего сгенерированного кода, чтобы лишний раз не выделять его и не копировать ручками.

Оффлайн Mr2

  • Пользователь
  • Сообщений: 1592
  • Пол: Мужской
  • Free roaming sorcerer
    • Facebook
    • Просмотр профиля
PlayStation instructions generator.
« Ответ #18 : 27 Апрель 2018, 13:23:22 »
Стоит избавиться от привязки к регистру букв. Ввод инструкций исключительно в верхнем регистре это как-то странно. Тоже самое касается и нижнего регистра для "регистров" (тавтология прям получилась).
Такой синтаксис совместим с дизассемблером Munch.

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

Удобнее будет вместо переключателя Reverse Instruction сделать отдельные кнопки для генерации прямого и обратного кода. Это быстрее и логичнее, чем переключение и повторная генерация.
+1

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

+1

Оставлять голый код в окне смыла особого нет. Тогда уж проще очищать окно.
В контекстном меню главного окна, есть ручная очистка.(если что)

Не помешала бы и отдельная кнопка копирования последнего сгенерированного кода, чтобы лишний раз не выделять его и не копировать ручками.
+1

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

Оффлайн paul_met

  • Супермодератор
  • Сообщений: 8077
  • Пол: Мужской
  • Похититель эмуляции
    • Youtube
    • Просмотр профиля
PlayStation instructions generator.
« Ответ #19 : 27 Апрель 2018, 13:36:22 »
Такой синтаксис совместим с дизассемблером Munch.
Так пусть и остаётся совместим. Можно ведь сделать так, чтобы при вводе с клавы регистр игнорировался, а в окошке ввода инструкции всё отображалось как и раньше (имена инструкций в верхнем, регистры - в нижнем). Так будет проще, чем постоянно жонглировать шивтом или капсом.

r0-r31 это не имена регистров, это сами регистры. 
Я в курсе, просто привык, что в дебаггере PCSX порядковый номер нулевого регистра совпадает с его именем. А в No$PSX он просто нуль.

Оффлайн Mr2

  • Пользователь
  • Сообщений: 1592
  • Пол: Мужской
  • Free roaming sorcerer
    • Facebook
    • Просмотр профиля
PlayStation instructions generator.
« Ответ #20 : 11 Май 2018, 14:15:10 »
PSIG v1.1
Изменён интерфейс программы.
Добавлена генерация команд в нижнем регистре.
Добавлено копирование сгенерированной инструкции в буфер обмена.
Добавлены команды патчинга.


Особая благодарность виновнику релиза paul_met'у, за вклад в развитие PSIG. :drinks:
paul_met, я глянул ещё пару дизассемблеров, и в них используется zr. Оставил всё как было.

Оффлайн dedok179

  • Пользователь
  • Сообщений: 496
  • Пол: Мужской
    • Youtube
    • Просмотр профиля
PlayStation instructions generator.
« Ответ #21 : 12 Май 2018, 11:32:23 »
Спасибо за обнову. Прога очень полезная)

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

Особая благодарность виновнику релиза paul_met'у, за вклад в развитие PSIG. :drinks:
paul_met, я глянул ещё пару дизассемблеров, и в них используется zr. Оставил всё как было.
По поводу zr соглашусь. Я когда ассемблерную часть трейнеров пишу, всегда использую zr. Про r0 вообще ни разу не слышал.

Оффлайн paul_met

  • Супермодератор
  • Сообщений: 8077
  • Пол: Мужской
  • Похититель эмуляции
    • Youtube
    • Просмотр профиля
PlayStation instructions generator.
« Ответ #22 : 12 Май 2018, 16:12:07 »
Про r0 вообще ни разу не слышал.
Так так открой доку Mips32 architecture for programmers volume II или какой-нить дебаггер PS1 (например, PCSX, PSX или No$PSX) и увидишь, что ни о каком регистре ZR там речи нет. Даже не знаю откуда всплыло это название (ZR).

Оффлайн dedok179

  • Пользователь
  • Сообщений: 496
  • Пол: Мужской
    • Youtube
    • Просмотр профиля
PlayStation instructions generator.
« Ответ #23 : 12 Май 2018, 17:10:03 »
Так так открой доку Mips32 architecture for programmers volume II или какой-нить дебаггер PS1 (например, PCSX, PSX или No$PSX) и увидишь, что ни о каком регистре ZR там речи нет. Даже не знаю откуда всплыло это название (ZR).
Ну в доках оно есть. И в дебагере видел. Но в практическом применении идет больше zr, ну или zero в spasm. Хотя наверно и просто r0 можно. Хз даже.

Добавлено позже:
Если в psy-q на ассемблере из коробки писать, то да. Там только по номерам регистров-r0 и дальше.

Оффлайн Mr2

  • Пользователь
  • Сообщений: 1592
  • Пол: Мужской
  • Free roaming sorcerer
    • Facebook
    • Просмотр профиля
PlayStation instructions generator.
« Ответ #24 : 12 Май 2018, 17:45:20 »
Спасибо за обнову. Прога очень полезная)


Так так открой доку Mips32 architecture for programmers volume II

Пролистал, но инфу по названию регистров не нашёл. :(

Даже не знаю откуда всплыло это название (ZR).
Так это же сокращение от zero! :)
Источник 1, источник 2.

Но в практическом применении идет больше zr, ну или zero в spasm.
+1

Оффлайн paul_met

  • Супермодератор
  • Сообщений: 8077
  • Пол: Мужской
  • Похититель эмуляции
    • Youtube
    • Просмотр профиля
PlayStation instructions generator.
« Ответ #25 : 12 Май 2018, 18:57:23 »
Пролистал, но инфу по названию регистров не нашёл.
В томе II-b есть часть (стр. 57).

Так это же сокращение от zero!
Источник 1, источник 2.
Это не официальные доки, а составленные, походу, любителями. И сокращение ZR тоже не официальное. А вот в официальных доках во всех примерах используется сокращение R0.

Оффлайн Mr2

  • Пользователь
  • Сообщений: 1592
  • Пол: Мужской
  • Free roaming sorcerer
    • Facebook
    • Просмотр профиля
PlayStation instructions generator.
« Ответ #26 : 12 Май 2018, 20:33:55 »
В томе II-b есть часть (стр. 57).
А предыдущий документ выложил для чего? Думал что мы тебе на слово поверим, и не будем его читать? ^_^
Хотел голыми руками взять? :lol:

Это не официальные доки, а составленные, походу, любителями. И сокращение ZR тоже не официальное.

Похоже что  том II-b  писали тоже любители o_0, так как на стр. 57 в таблице чёрным по белому написано:
Symbolic Name(From ArchDefs.h): zero
Description: Hard-wired Zero

А вот в официальных доках во всех примерах используется сокращение R0.
Примеры не о чём не говорят, нужно смотреть, что используют на практике.

Оффлайн dedok179

  • Пользователь
  • Сообщений: 496
  • Пол: Мужской
    • Youtube
    • Просмотр профиля
PlayStation instructions generator.
« Ответ #27 : 12 Май 2018, 20:34:49 »
В любом случае компиляция и так и так идет. Просто буквенными обозначениями проще писать. И не нужно лишний раз вспоминать какой номер регистра за что отвечает.

Оффлайн paul_met

  • Супермодератор
  • Сообщений: 8077
  • Пол: Мужской
  • Похититель эмуляции
    • Youtube
    • Просмотр профиля
PlayStation instructions generator.
« Ответ #28 : 12 Май 2018, 21:00:42 »
Похоже что  том II-b  писали тоже любители , так как на стр. 57 в таблице чёрным по белому написано:
Symbolic Name(From ArchDefs.h): zero
Description: Hard-wired Zero
Какие любители? Там везде копирайты Мипса. Написано либо zero, либо R0. А сокращение ZR как раз-таки придумали любители. Вот тебе ещё дока (уже конкретно по R30XX).

Примеры не о чём не говорят, нужно смотреть, что используют на практике.
Примеры в официальных доках ничего не говорят? Ну, тут можно только развести руками. Ни в одном дебаггере PS1 нет сокращения ZR. Какая ещё практика нужна?

Просто буквенными обозначениями проще писать. И не нужно лишний раз вспоминать какой номер регистра за что отвечает.
Так во всех главных регистрах буквенные обозначения с номером как не крути. Что там проще / сложнее вспоминать я что-то не пойму. R0 - номер регистра совпадает с его нулевым состоянием. Проще некуда.

Оффлайн Mr2

  • Пользователь
  • Сообщений: 1592
  • Пол: Мужской
  • Free roaming sorcerer
    • Facebook
    • Просмотр профиля
PlayStation instructions generator.
« Ответ #29 : 12 Май 2018, 21:19:21 »
Какие любители? Там везде копирайты Мипса.

Походу любители Мипса. :lol:

А сокращение ZR как раз-таки придумали любители.
Ладно, на zero сойдёмся. Мир вашему дому. ;)

Вот тебе ещё дока (уже конкретно по R30XX).
Стр. 2–2:
Name: zero
Used for: Always returns 0

Ни в одном дебаггере PS1 нет сокращения ZR. Какая ещё практика нужна?
То ты за официальность, то приводишь в пример неофициальные дебаггеры. o_0

Примеры в официальных доках ничего не говорят? Ну, тут можно только развести руками.

Что тебе дались эти примеры, на практике рулит компилятор, и каждый компилятор имеет свои особенности, которые описываются в документации к компилятору.

R0 - номер регистра совпадает с его нулевым состоянием. Проще некуда.
А сократить zero до zr, ума не хватает? :?
« Последнее редактирование: 12 Май 2018, 21:30:38 от Mr2 »