Aries 3 10 марта, 2023 Опубликовано 10 марта, 2023 · Жалоба Приветствую сообщество. Делал реверс прошивки одного устройства. При сборке в IARe оказалось, что не всегда ассемблерные команды соответствуют коду. На вложении такой пример: в оригинале команда clr.w R15 код 3F 40 00 00 а в IARe она же имеет код 43 0F. Разница в 2 байта, а для восстановления прошивки это критично. Для себя я это решил просто принудительно записав в тексте DC8 3Fh, 40h, 0, 0 и всё работает, но думаю должен быть какой то иной вариант. Может кто подскажет на будущее ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
HardEgor 78 10 марта, 2023 Опубликовано 10 марта, 2023 · Жалоба В 11.03.2023 в 03:13, Aries сказал: но думаю должен быть какой то иной вариант. Может кто подскажет на будущее ? А что вы хотите знать? Неизвестно каким компилятором собиралось и с какой оптимизацией, надо просто перебрать все известные компиляторы MSP и проверить, думаю названия у TI на сайте написаны. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Obam 37 10 марта, 2023 Опубликовано 10 марта, 2023 (изменено) · Жалоба в оригинале команда clr.w R15 код 3F 40 00 00 Кода 0000H для обычного MSP430 не существует, а вот для MSP430X это: MOVA @R0, R0 и F67791A как раз ядро 430X. Ну и занудства ради: CLR - эмулируемая через регистр-генератор констант R3 - MOV R3, R15 Изменено 10 марта, 2023 пользователем Obam Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Aries 3 11 марта, 2023 Опубликовано 11 марта, 2023 · Жалоба 2 часа назад, Obam сказал: Кода 0000H для обычного MSP430 не существует, а вот для MSP430X это: MOVA @R0, R0 и F67791A как раз ядро 430X. Ну и занудства ради: CLR - эмулируемая через регистр-генератор констант R3 - MOV R3, R15 По поводу ядра - никто и не спорит. Команда MOVA @R15, R15 генерит код 0F 0F Ну а MOV @R15, R15 - 43 0F соответственно. Мне же хотелось узнать какая команда генерирует код 3F 40 00 00, IDA воспринимает его как CLR.w R15 по производимому действию он именно таковым и является. Видимо действительно "пережиток" от компилятора. Спасибо откликнувшимся. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Obam 37 12 марта, 2023 Опубликовано 12 марта, 2023 · Жалоба Мне же хотелось узнать какая команда генерирует код 3F 40 00 00 Это две команды: 403FH MOV R3, R15 0000H MOVA @R0, R0 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Aries 3 12 марта, 2023 Опубликовано 12 марта, 2023 (изменено) · Жалоба 1 час назад, Obam сказал: Это две команды: Я говорил про код 3F 40 00 00 из вашего же примера не то Изменено 12 марта, 2023 пользователем Aries Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Obam 37 13 марта, 2023 Опубликовано 13 марта, 2023 · Жалоба Да, что-то "погорячился" я. Проверил в симуляторе (IAR EW430 6.10), т.к. МК с ядром 430X нет; в окне дампа памяти ввёл эти 4 байта, а в окне дизассемблера - результат: Пересылка константы в заданный регистр с помощью непосредственной (immediate) адресации. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Aries 3 13 марта, 2023 Опубликовано 13 марта, 2023 · Жалоба 3 часа назад, Obam сказал: ...а в окне дизассемблера... А вот ежели набрать в редакторе команду и откомпилировать, то увидим такое Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
k155la3 27 14 марта, 2023 Опубликовано 14 марта, 2023 · Жалоба 3 часа назад, Obam сказал: . . . . в симуляторе (IAR EW430 6.10), т.к. МК с ядром 430X нет; . . . В комплектной документации EW430_AssemblerReference.pdf поминается X - включается опцией -V или возможно директивой в исходнике ASM. -v0 Devices based on the MSP430 architecture. -v1 Devices based on the MSP430X architecture. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 234 14 марта, 2023 Опубликовано 14 марта, 2023 · Жалоба В 11.03.2023 в 03:49, Aries сказал: Мне же хотелось узнать какая команда генерирует код 3F 40 00 00, IDA воспринимает его как CLR.w R15 В чём же проблема? Открываем листинг любого проекта на MSP430, делаем поиск и находим целую кучу таких команд: 3F40.... MOV.W #`data`, R15 ... 3F40.... MOV.W #cstack_org, R15 ... 3F401000 MOV.W #0x10, R15 ... 3F408000 MOV.W #0x80, R15 ... 3F400500 MOV.W #0x5, R15 ... и т.д. ещё 100500 этих команд. Из чего делаем вывод, что это команда загрузки константы в R15. Константа идёт в следующем слове после кода команды. т.е. - Ваша очевидно будет: MOV #0, R15 PS: А почему IDA, вместо действительной команды, подставляет аналогичную по действию, но другую - это уже вопрос к IDA-писателям. Или к Вашим настройкам IDA: может у Вас там какая галка в настройках включена, заставляющая его оптимизировать вывод? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Aries 3 14 марта, 2023 Опубликовано 14 марта, 2023 · Жалоба 3 минуты назад, jcxz сказал: В чём же проблема?... т.е. - Ваша очевидно будет: MOV #0, R15 Думаю так будет нагляднее. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 234 14 марта, 2023 Опубликовано 14 марта, 2023 · Жалоба 3 минуты назад, Aries сказал: Думаю так будет нагляднее. Нагляднее в чём? Что вы хотели сказать этим скриншотом? Очевидно, что IDA (на вашем первом скриншоте) показывает байтовый порядок содержимого памяти. А дизассемблер IAR - отображает 16-битные слова. А представляют они одну и ту же команду. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Aries 3 14 марта, 2023 Опубликовано 14 марта, 2023 · Жалоба 1 час назад, jcxz сказал: Что вы хотели сказать этим скриншотом? На скриншоте дизассм IAR_а, к IDA это не имеет никакого отношения. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 234 14 марта, 2023 Опубликовано 14 марта, 2023 · Жалоба И ...? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Aries 3 14 марта, 2023 Опубликовано 14 марта, 2023 · Жалоба 7 минут назад, jcxz сказал: И ...? И то, что скажем из мнемоники MOV #0, R15 IAR формирует 2 х байтовую команду 43 0F а из MOV #3, R15 4 х байтовую 40 3F 00 03 А у меня в дампе имеется 40 3F 00 00, так вот меня и заинтересовало, из какой команды это получилось. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться