jcxz 243 14 марта, 2023 Опубликовано 14 марта, 2023 · Жалоба 20 минут назад, Aries сказал: меня и заинтересовало, из какой команды это получилось. Внимательно почитайте моё первое сообщение. Особенно обратите внимание внимание на 2 первых команды (я их не случайно привёл). Вот так возможно и получилось в вашем случае. Т.е. - из-за таблицы релокаций. Возможно вы взяли перемещаемый код, до его обработки компоновщиком или чем-то ещё (до привязки к реальным адресам). Да и IAR-у никто не мешает в каких-то случаях оставить в коде MOV #0, R15 не заменяя её на более короткий CLR R15. Например - для выравнивания сегмента (чтобы не лепить дополнительную NOP или по каким иным соображениям). А тем более - не известно каким компилятором транслировался исходный код, который вы пытаетесь дизассемблировать. Почему думаете, что это был IAR? И откуда знаете каких правил оптимизации придерживался тот инструмент? Может он вообще никогда не производил оптимизацию MOV #0, Rx в CLR Rx ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Aries 3 14 марта, 2023 Опубликовано 14 марта, 2023 · Жалоба 19 минут назад, jcxz сказал: ...который вы пытаетесь дизассемблировать. Почему думаете, что это был IAR? И откуда знаете каких правил оптимизации придерживался тот инструмент? Может он вообще никогда не производил оптимизацию MOV #0, Rx в CLR Rx ? Задача была получить код один в один, но из ассемблера, для возможности внесения изменений. С этим я справился. Но такие моменты мне не давали покоя. Не знаю на чём написан исходник, по слухам C# да это и не важно. Всех благодарю за участие. 👍 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 243 14 марта, 2023 Опубликовано 14 марта, 2023 · Жалоба 1 минуту назад, Aries сказал: Задача была получить код один в один, но из ассемблера Такое невозможно в общем случае. Так как априори неизвестны правила, которыми руководствуется неизвестный компилятор при оптимизации длинных инструкций в короткие. Он мог оставить длинный вариант обнуления R15 в одном из случаев: 1. Строился перемещаемый код, и в данном месте шло занесение в R15 результата перемещаемого выражения. 2. 32-битный вариант MOV #0, R15 не был заменён на 16-битный для выравнивания последующего адреса (после этой инструкции), на который откуда-то мог осуществляться переход. Так как переход на выровненный (на границу строки кеша) адрес может занимать меньше тактов. 3. (параноидальный) Компилятор таким образом подписывал код, внося в него скрытую инфу. 4. Проявление некоего бага компилятора. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Aries 3 14 марта, 2023 Опубликовано 14 марта, 2023 · Жалоба 1 час назад, jcxz сказал: Такое невозможно в общем случае... И тем не менее, HEX был получен один в один, правда с ухищрениями о которых уже говорил. ASM позволил проводить модификацию кода. А насчёт паранойи - не думаю, там это решено несколько иначе, для чего и было нужно собрать именно "близнеца". Ещё раз спасибо всем не равнодушным. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
girts 9 16 марта, 2023 Опубликовано 16 марта, 2023 · Жалоба On 3/14/2023 at 12:01 PM, jcxz said: Такое невозможно в общем случае. Так как априори неизвестны правила, которыми руководствуется неизвестный компилятор при оптимизации длинных инструкций в короткие. Он мог оставить длинный вариант обнуления R15 в одном из случаев: 1. Строился перемещаемый код, и в данном месте шло занесение в R15 результата перемещаемого выражения. 2. 32-битный вариант MOV #0, R15 не был заменён на 16-битный для выравнивания последующего адреса (после этой инструкции), на который откуда-то мог осуществляться переход. Так как переход на выровненный (на границу строки кеша) адрес может занимать меньше тактов. 3. (параноидальный) Компилятор таким образом подписывал код, внося в него скрытую инфу. 4. Проявление некоего бага компилятора. ASM - вещь вполне конкретная, по сути те же машинные коды, только выраженные буквами. Что написал, то и должен получить, так что кажись доводы 1 по 4 как бы некатят ниразу... IDA - полна косяков, однако это никого не смущает, ибо не для того она как бы создана. IAR - тоже со своими тараканами, но не особо их там по теме ASM, это к С скорее относится. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 243 16 марта, 2023 Опубликовано 16 марта, 2023 (изменено) · Жалоба On 3/16/2023 at 10:43 AM, girts said: ASM - вещь вполне конкретная, по сути те же машинные коды, только выраженные буквами. Что написал, то и должен получить, так что кажись доводы 1 по 4 как бы некатят ниразу... Да ладно! А вы когда-нить что-нить писали на ассемблере? И вообще - писали какую-нить программу на чём угодно? А хоть однажды смотрели файлы листингов? Что такое "компоновщик" - знаете? Как он работает? Как выполняет линковку на заданные адреса? Что такое "перемещаемый код"? Как это работает? знаете? Что означают двоеточия в строках с "3F40...." в моём первом сообщении в этой теме (строках, взятых из листингов, кстати) - догадываетесь? нет? PS: Советую почитать учебники по этим вопросам. Изменено 17 марта, 2023 пользователем haker_fox Нарушение правил 2.1.а. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Aries 3 16 марта, 2023 Опубликовано 16 марта, 2023 · Жалоба В 14.03.2023 в 12:12, jcxz сказал: Да и IAR-у никто не мешает в каких-то случаях оставить в коде MOV #0, R15 не заменяя её на более короткий CLR R15. Могу ли я как то указать IAR_у когда ему это следует делать а когда нет ? Если да, пните в нужном направлении. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Obam 38 16 марта, 2023 Опубликовано 16 марта, 2023 · Жалоба Не давайте задействовать регистры-генераторы констант (-; Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Aries 3 16 марта, 2023 Опубликовано 16 марта, 2023 · Жалоба 1 час назад, Obam сказал: Не давайте задействовать регистры-генераторы констант (-; А как в приведённом примере он их задействует ? 🤷♂️ Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Obam 38 16 марта, 2023 Опубликовано 16 марта, 2023 · Жалоба А вот те команды, что из одного слова, там R2, R3 и задействованы. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Aries 3 17 марта, 2023 Опубликовано 17 марта, 2023 · Жалоба 1 час назад, Obam сказал: А вот те команды, что из одного слова, там R2, R3 и задействованы. Серьёзно ? Ну так как же заставить IAR не делать это ??? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
girts 9 17 марта, 2023 Опубликовано 17 марта, 2023 · Жалоба On 3/16/2023 at 11:40 AM, jcxz said: PS: Советую почитать учебники по этим вопросам, прежде чем нести чушь. Да и вам того же! Попроще надо быть, товарищь! И счастье вам улыбнётся. Всё горе то от ума... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
haker_fox 61 17 марта, 2023 Опубликовано 17 марта, 2023 · Жалоба Модератор: @jcxz, @girts, переходы на личности заканчиваем. Охлаждаем пыл, и продолжаем конструктивную беседу. Либо начинаем получать предупреждения. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
girts 9 17 марта, 2023 Опубликовано 17 марта, 2023 (изменено) · Жалоба Пояснение уважаемому модератору - На предупреждения - фиолетово. Это просто нормальная дискуссия и обмен мнениями, просто с отсылкой к литературе, что впрочем, всегда полезно, и не только тем, кто себя считает всезнающими гуру. По теме - если бы топикстартер загланул бы в файл дефиниции того же MCP430 в IDA (msp430.py) то увидел бы такой абзац - # replace some instructions by simplified mnemonics ("emulated" in TI terms) def simplify(self): # source mnemonic mapped to a list of matches: # match function, new mnemonic, new operand в котором чуть дальше заголовка - self.itype_mov: [ # mov #0, dst -> clr dst [ lambda: is_imm(self.cmd.Op1, 0), self.itype_clr, 2 ], ну и так далее... Впрочем, на этом теме и можно поставить большую такую жирную точку, ибо вопрос по сути исчерпан... Модератор: обсуждая действия модератора публично, Вы нарушаете правило 3.7 данного форума. Выше же я предупредил начинающуюся дискуссию по выяснению отношений. Такие выяснения возникают на форуме периодически и приводят к замусореванию тем, что никому не выгодно. Я: если констатация факта, что "на предуприждение фиолетово" как то противоречит с пунктом правил 3.7 данного форума, то уж будьте добры разьяснить свою аргументацию, чтоб впредь мы, простые смертные, не оскверняли сиё прекрасное место общения гуру своими неподобающими сентенциями. Изменено 17 марта, 2023 пользователем girts Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Aries 3 17 марта, 2023 Опубликовано 17 марта, 2023 · Жалоба 2 часа назад, girts сказал: ...если бы топикстартер загланул бы в файл дефиниции того же MCP430 в IDA... Не ну может я тупой, может. Только причём тут IDA ? Разговор ведь про IAR. Чуть выше скрин из него же, на котором видно, что в тексте asm_а команды одни а в окне его же дизассма одни из 2х байт одни из 4х байт. Как влиять на это ??? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться