Aries 1 March 10 Posted March 10 · Report post Приветствую сообщество. Делал реверс прошивки одного устройства. При сборке в IARe оказалось, что не всегда ассемблерные команды соответствуют коду. На вложении такой пример: в оригинале команда clr.w R15 код 3F 40 00 00 а в IARe она же имеет код 43 0F. Разница в 2 байта, а для восстановления прошивки это критично. Для себя я это решил просто принудительно записав в тексте DC8 3Fh, 40h, 0, 0 и всё работает, но думаю должен быть какой то иной вариант. Может кто подскажет на будущее ? Quote Share this post Link to post Share on other sites More sharing options...
HardEgor 17 March 10 Posted March 10 · Report post В 11.03.2023 в 03:13, Aries сказал: но думаю должен быть какой то иной вариант. Может кто подскажет на будущее ? А что вы хотите знать? Неизвестно каким компилятором собиралось и с какой оптимизацией, надо просто перебрать все известные компиляторы MSP и проверить, думаю названия у TI на сайте написаны. Quote Share this post Link to post Share on other sites More sharing options...
Obam 9 March 10 Posted March 10 (edited) · Report post в оригинале команда clr.w R15 код 3F 40 00 00 Кода 0000H для обычного MSP430 не существует, а вот для MSP430X это: MOVA @R0, R0 и F67791A как раз ядро 430X. Ну и занудства ради: CLR - эмулируемая через регистр-генератор констант R3 - MOV R3, R15 Edited March 10 by Obam Quote Share this post Link to post Share on other sites More sharing options...
Aries 1 March 11 Posted March 11 · Report post 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 по производимому действию он именно таковым и является. Видимо действительно "пережиток" от компилятора. Спасибо откликнувшимся. Quote Share this post Link to post Share on other sites More sharing options...
Obam 9 March 12 Posted March 12 · Report post Мне же хотелось узнать какая команда генерирует код 3F 40 00 00 Это две команды: 403FH MOV R3, R15 0000H MOVA @R0, R0 Quote Share this post Link to post Share on other sites More sharing options...
Aries 1 March 12 Posted March 12 (edited) · Report post 1 час назад, Obam сказал: Это две команды: Я говорил про код 3F 40 00 00 из вашего же примера не то Edited March 12 by Aries Quote Share this post Link to post Share on other sites More sharing options...
Obam 9 March 13 Posted March 13 · Report post Да, что-то "погорячился" я. Проверил в симуляторе (IAR EW430 6.10), т.к. МК с ядром 430X нет; в окне дампа памяти ввёл эти 4 байта, а в окне дизассемблера - результат: Пересылка константы в заданный регистр с помощью непосредственной (immediate) адресации. Quote Share this post Link to post Share on other sites More sharing options...
Aries 1 March 13 Posted March 13 · Report post 3 часа назад, Obam сказал: ...а в окне дизассемблера... А вот ежели набрать в редакторе команду и откомпилировать, то увидим такое Quote Share this post Link to post Share on other sites More sharing options...
k155la3 26 March 14 Posted March 14 · Report post 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. Quote Share this post Link to post Share on other sites More sharing options...
jcxz 41 March 14 Posted March 14 · Report post В 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: может у Вас там какая галка в настройках включена, заставляющая его оптимизировать вывод? Quote Share this post Link to post Share on other sites More sharing options...
Aries 1 March 14 Posted March 14 · Report post 3 минуты назад, jcxz сказал: В чём же проблема?... т.е. - Ваша очевидно будет: MOV #0, R15 Думаю так будет нагляднее. Quote Share this post Link to post Share on other sites More sharing options...
jcxz 41 March 14 Posted March 14 · Report post 3 минуты назад, Aries сказал: Думаю так будет нагляднее. Нагляднее в чём? Что вы хотели сказать этим скриншотом? Очевидно, что IDA (на вашем первом скриншоте) показывает байтовый порядок содержимого памяти. А дизассемблер IAR - отображает 16-битные слова. А представляют они одну и ту же команду. Quote Share this post Link to post Share on other sites More sharing options...
Aries 1 March 14 Posted March 14 · Report post 1 час назад, jcxz сказал: Что вы хотели сказать этим скриншотом? На скриншоте дизассм IAR_а, к IDA это не имеет никакого отношения. Quote Share this post Link to post Share on other sites More sharing options...
jcxz 41 March 14 Posted March 14 · Report post И ...? Quote Share this post Link to post Share on other sites More sharing options...
Aries 1 March 14 Posted March 14 · Report post 7 минут назад, jcxz сказал: И ...? И то, что скажем из мнемоники MOV #0, R15 IAR формирует 2 х байтовую команду 43 0F а из MOV #3, R15 4 х байтовую 40 3F 00 03 А у меня в дампе имеется 40 3F 00 00, так вот меня и заинтересовало, из какой команды это получилось. Quote Share this post Link to post Share on other sites More sharing options...