Я про команду branch (bne например), не про jump. У джампа 3 байта + 2 бита (26 бит) под адрес, у бранча - 2 байта под указатель смещения (16 бит). Еще раз отсылаю читать доку по mips, а не спорить ради спора.
Ну так а я про джампы веду разговор. Это ты же читаешь мои посты про джампы, а отвечаешь про бранчи. Бранчи-то понятно, что там там другой алгоритм и математическая формула. Там 2 регистра и значение, где в значении указывается смещение, относительно места расположения этого самого значения и расчитывается по формуле: значение - offset : 4 - 1.
И по ходу дела, я смотрю структуру кода и сразу выписываю формулы, чтобы закрепить знания в постах. Тебе может это не надо, но другие люди тоже могут искать ответы на подобные вопросы и им может помочь информация, каким образом эти цифры появляются и генерируются в файлах.
Короче, я просто посмотрел твои формулы и заметил, что ты использовал абсолютные смещения, хотя в EBOOT.BIN кругом используются относительные внутренние смещения. Поэтому подумал, почему бы не воспользоваться стандартами по аналогии с файлом, и вынес этот вопрос на обсуждение. От тебя просто хотелось услышать пояснения, почему был избран такой путь, а не то, как "у Erik'а задвиг не туда" или всякие ликбезы.
Ладно, признаю, что я полный лох педальный.
За твою реализацию хитрого плана с кнопками, присваиваю тебе звание Про-Геймера
riku.kh3, почитал ещё раз твою ссылку: http://bbs.blacklabel-translations.c...?tid=35&pid=84
В первый раз как-то не так дошло и я не туда полез выполнять шаг 2. Сейчас наконец допёрло, что это относилось всё к тем же строкам. Там помимо смены $zero на регион, чтобы не было глюков, надо было ещё сменить функцию move на li. После первой правки было так, с move:
Чтобы сменить регистры, нужно поменять регистры move: 2025 и 2825 на li: 2404 и 2405 (для 10-тичного формата) или на 3404 и 3405 (для 16-ричного формата)
0x0000C7D0: 0x24040008 '...$' - li $a0, 8
0x0000C7D4: 0x0C045016 '.P..' - jal sceImposeSetLanguageMode
0x0000C7D8: 0x24050001 '...$' - li $a1, 1
Я сделал смену языка в десятичном формате. Если в первой строке поставить 1, то будет надпись на английском языке, я поставил на 8 для русского языка. Готовый файл, с правками кнопок от Scorpeg, во вложении...
Прошу любить и жаловать, Ваш Добро пожаловать в наш Чат в Telegram
Ну так а я про джампы веду разговор. Это ты же читаешь мои посты про джампы, а отвечаешь про бранчи. Бранчи-то понятно, что там там другой алгоритм и математическая формула. Там 2 регистра и значение, где в значении указывается смещение, относительно места расположения этого самого значения и расчитывается по формуле: значение - offset : 4 - 1.
Да в том и дело, что у тебя на скриншотах как раз бранчи и написаны https://www.pspx.ru/forum/attachment....8&d=1423310816. ruki и не понял, почему бранчи правильно показываются, а джамп нет. Я ему и объяснил, как это делается (там первая же фраза в сообщении "Да потому что bne - это относительная инструкция. Там адрес считается в пределах +0xffff и -0xffff от КОМАНДЫ." - то есть сразу понятно, что я не про джампы). А ты эту фразу не заметил или еще чего, начал спорить на пустом месте непонятно с чем Пояснения я написал, почему "не туда" в ликбезе, вроде понятные. Если непонятные, то еще раз скажу, что я косноязычен и мне сложно объяснить, если с первого раза не получилось, поэтому тут лучше всего обращаться к доке по мипсам.
Вообще есть такая вещь как armips https://github.com/Kingcom/armips собственно ассемблер для мипсов (может кто не знал). Я в нем писал. Мож кому-то будет полезно. Kingcom правда загрузку ELF'а в нормальном виде не прикрутил, так что придётся как я писать пока что.
Ну так опять же, это был только пример, где я хотел показать, что оффсеты указываются без прибавки 08804000. Где относительные смещения указываются относительно самого файла. Только и всего.
А за армированные мипсы спасибо. Было дело я когда-то в Mars-e умудрился написать программку на асме, где на кубике Yoti что-то там плавало. Да там собсно не С++ писать, это как батники рисовать, просто смотришь спецификацию и рисуешь. Но конечно в асме и мипсах я ничерта не шарю, всё держится только на логическом обосновании.
Прошу любить и жаловать, Ваш Добро пожаловать в наш Чат в Telegram
Последний раз редактировалось ErikPshat; 08.02.2015 в 20:00.
Ну так опять же, это был только пример, где я хотел показать, что оффсеты указываются без прибавки 08804000. Где относительные смещения указываются относительно самого файла. Только и всего.
Так и я не тебе, а riku отвечал. И ты опять путаешься в показаниях, до этого говорил, что ты про джампы, теперь ты про оффсеты заговорил, хотя оффсеты только у бранчей, а у джампов - прямые ссылки. Короче замнем это, не суть, а то можно долго докапываться, кто чего хотел сказать
И ты может начнешь уже Never7? Я тебе даже план уже написал, тулзы тут есть (вообще почти все тулзы подойдут отсюда, и формат графики тоже наверное). Осталось только скрипты повыдирать и присоединить. Ну и init.bin разватрушить (я не осилил пока что его целиком, только 75% гыгы)