|
Самомодифицирующийся код в экосистеме Cortex-M., есть ли право на жизнь? |
|
|
|
 |
Ответов
|
Jun 29 2018, 00:32
|
Гуру
     
Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448

|
Давайте сначала: Цитата(AVI-crak @ Jun 29 2018, 02:23)  Всё дело в том что сама функция изменения физического и логического поведения кода на кортексах работает из коробки. О какой магической функции речь? И что есть физическое и логическое поведение кода? Цитата(AVI-crak @ Jun 29 2018, 02:23)  Создавая собственный свод правил для определений поведения кода в режиме реального времени исполнения... Свод правил для определений поведения - это как? Цитата(AVI-crak @ Jun 29 2018, 03:11)  Любая перетасовка программного кода - есть алгоритм. Ничего сложного, местами даже интересно, в плюсах вообще всё прозрачно получается. Плюса-то здесь каким боком?
|
|
|
|
|
Jun 29 2018, 04:47
|
Частый гость
 
Группа: Участник
Сообщений: 182
Регистрация: 16-10-15
Пользователь №: 88 894

|
Цитата(aaarrr @ Jun 29 2018, 06:32)  О какой магической функции речь? И что есть физическое и логическое поведение кода? Cortex, да и почти все arm чипы - используют внеочередное исполнение кода. Он может загружать адреса для двух функций одновременно. Просчитывать данные которые будут применяться где-то внутри функции до её реального вызова. Размазывать циклы на всю портянку. Обращать переменные в другое значение чем было назначено в пользовательской программе -без потери целостности алгоритма, и ещё много много чего. Это их главная фишка. Фактически код в отладчике выполняется по строкам программы, а в реальности прыгает как бешеный сайгак. Попытка воткнуть модификацию кода без предварительной изоляции всего куска - обычно приводит быстрому и окончательному сбою. Свод правил - прикольная вещь. Кусок кода предварительно компилируется в асму, с сохранением всех имён, названий функций и так далее. На весь этот кусок кода накладывается структура - с достаточно детальным описанием, прежде всего для себя (запутаться проще простого). И только после этого компилятор поймёт - чего от него хотят. Код который будет модифицировать этот кусок асмы - будет автоматически подстраиваться под имеющиеся логический цикл. Это означает что компилятор не воткнёт команды предварительного чтения на модифицированный код, корректно сделает переход, и корректно обработает замену кода и данных на которые он будет ссылаться. Есно остальной код без модификаций - если он уже вызывал некоторые функции из этого блока - то потеряет адреса. Не просто так - а сработают заглушки по внешнему флагу. В плюсах такие модификации кода происходят автоматически при сборке функции. Когда код выполняется из памяти - там вообще трудно чего понять. (по крайней мере мне). Цитата(Николай Семёнович @ Jun 29 2018, 09:22)  Компилятор вообще по барабану: он не знает, что за программу (какого назначения) он компилит. Естественно. Но если нужно модифицировать код - то требования повышаются. Компилятору нужно будет объяснить - где и чего менять, и как это скажется на его дальнейшей работе. Цитата(jcxz @ Jun 29 2018, 10:20)  Какая компиляция? Я же написал: код будет строить моя программа (на этом же Cortex-M). Т.е. - она сразу будет создавать функцию в машинных кодах (если так понятнее). Которая после будет вызываться. Кхм, это наверное слишком глупо, но всё-же. Флешка - это именно та флешка что вставляется в разъём компьютера?
|
|
|
|
|
Jun 29 2018, 04:51
|
Гуру
     
Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713

|
Цитата(AVI-crak @ Jun 29 2018, 07:36)  Cortex, да и почти все arm чипы - используют внеочередное исполнение кода. Он может загружать адреса для двух функций одновременно. Просчитывать данные которые будут применяться где-то внутри функции до её реального вызова. Размазывать циклы на всю портянку. Обращать переменные в другое значение чем было назначено в пользовательской программе -без потери целостности алгоритма, и ещё много много чего. Это их главная фишка. Тем не менее - количество чтений/записей из/в память которые нужно выполнить всё равно не уменьшится, менее чем требующееся по алгоритму, при любом оптимизаторе. А перевод на самомодифицирующийся код сокращает это количество многократно. Уж что-что, а ассемблер для Cortex-M я знаю неплохо. И пока не сделали такой оптимизатор, который напишет код лучше меня.  Цитата(AVI-crak @ Jun 29 2018, 07:47)  Флешка - это именно та флешка что вставляется в разъём компьютера? Вы о чём?
|
|
|
|
|
Jul 1 2018, 15:22
|
Частый гость
 
Группа: Участник
Сообщений: 182
Регистрация: 16-10-15
Пользователь №: 88 894

|
Цитата(jcxz @ Jun 29 2018, 10:51)  Вы о чём?  Простые вопросы на самом деле бывают со сложными ответами. Особенно когда мозаика не складывается в общий узор. Я повторю свой вопрос - откуда мк читает программный код? Есть ли дополнительный код или инструкции которые должен выполнять мк в нативе, или программный код на мк в режиме эмуляции?
|
|
|
|
|
Jul 1 2018, 16:25
|
Местный
  
Группа: Свой
Сообщений: 475
Регистрация: 14-04-05
Из: Москва
Пользователь №: 4 140

|
Цитата(AVI-crak @ Jul 1 2018, 18:22)  Я повторю свой вопрос - откуда мк читает программный код? При наличии PSRAM в чипе странно было бы генерить код не в него. Хотя, от задачи зависит тоже.
|
|
|
|
|
Jul 2 2018, 20:46
|
Частый гость
 
Группа: Участник
Сообщений: 182
Регистрация: 16-10-15
Пользователь №: 88 894

|
Цитата(jcxz @ Jul 2 2018, 22:12)  Конечно генерю в PSRAM. При генерации в обычную SRAM время выполнения увеличивается примерно в 2 раза. Как и предполагалось, для ответа простые вопросы нужно хорошо подумать. Повторюсь: Откуда мк начинает выполнять программный код сразу после аппаратного сброса. Общая функция этого кода, и что происходит дальше по алгоритму.
Сообщение отредактировал AVI-crak - Jul 2 2018, 20:46
|
|
|
|
Сообщений в этой теме
jcxz Самомодифицирующийся код в экосистеме Cortex-M. Jun 28 2018, 22:54 aaarrr Цитата(jcxz @ Jun 29 2018, 01:54) И вот я... Jun 28 2018, 23:01 AVI-crak Цитата(jcxz @ Jun 29 2018, 04:54) Просто ... Jun 28 2018, 23:23 aaarrr Цитата(AVI-crak @ Jun 29 2018, 02:23... Jun 28 2018, 23:31  AVI-crak Не предполагает.
Любая перетасовка программного ко... Jun 29 2018, 00:11 Николай Семёнович Цитата(AVI-crak @ Jun 29 2018, 02:23... Jun 29 2018, 03:22 jcxz Цитата(AVI-crak @ Jun 29 2018, 02:23... Jun 29 2018, 04:20       Arlleex Цитата(AVI-crak @ Jul 3 2018, 00:46)... Jul 3 2018, 04:44        AVI-crak Цитата(Arlleex @ Jul 3 2018, 10:44) А отк... Jul 3 2018, 18:38  aaarrr Цитата(AVI-crak @ Jun 29 2018, 07:47... Jun 29 2018, 07:24 halfdoom Цитата(jcxz @ Jun 29 2018, 01:54) Есть мы... Jun 29 2018, 03:29 AlexandrY Цитата(jcxz @ Jun 29 2018, 01:54) PS: И п... Jun 29 2018, 05:47 jcxz Цитата(AlexandrY @ Jun 29 2018, 08:47) Ил... Jun 29 2018, 06:56  AlexandrY Цитата(jcxz @ Jun 29 2018, 09:56) Я уже в... Jun 29 2018, 07:00   jcxz Цитата(AlexandrY @ Jun 29 2018, 10:00) То... Jun 29 2018, 07:03    AlexandrY Цитата(jcxz @ Jun 29 2018, 10:03) Ну хоро... Jun 29 2018, 07:05   Николай Семёнович Цитата(AlexandrY @ Jun 29 2018, 10:00) То... Jun 29 2018, 16:00    jcxz Цитата(Николай Семёнович @ Jun 29 2018, 19... Jun 29 2018, 17:11     Arlleex Цитата(jcxz @ Jun 29 2018, 20:11) Блин, к... Jun 29 2018, 17:18      jcxz Цитата(Arlleex @ Jun 29 2018, 20:18) О ре... Jun 29 2018, 17:23       Arlleex Цитата(jcxz @ Jun 29 2018, 20:23) Всего в... Jun 29 2018, 17:36       adnega RE: Самомодифицирующийся код в экосистеме Cortex-M. Jun 29 2018, 21:21        jcxz Цитата(adnega @ Jun 30 2018, 00:21) Прове... Jun 30 2018, 00:22         adnega Цитата(jcxz @ Jun 30 2018, 03:22) мммм...... Jun 30 2018, 06:41          jcxz Цитата(adnega @ Jun 30 2018, 09:41) А что... Jun 30 2018, 07:21           adnega Цитата(jcxz @ Jun 30 2018, 10:21) Да я уж... Jun 30 2018, 08:59            AlexandrY Цитата(adnega @ Jun 30 2018, 11:59) Кста,... Jun 30 2018, 10:09            jcxz Цитата(adnega @ Jun 30 2018, 11:59) Покаж... Jun 30 2018, 11:56             adnega Цитата(jcxz @ Jun 30 2018, 14:56) Да, как... Jun 30 2018, 12:12              jcxz Цитата(adnega @ Jun 30 2018, 15:12) Может... Jun 30 2018, 13:30               AlexandrY Цитата(jcxz @ Jun 30 2018, 16:30) Ну-ну. ... Jun 30 2018, 13:39                jcxz Цитата(AlexandrY @ Jun 30 2018, 16:39) И ... Jun 30 2018, 13:56                 AlexandrY Цитата(jcxz @ Jun 30 2018, 16:56) В то вр... Jun 30 2018, 14:43                  jcxz Цитата(AlexandrY @ Jun 30 2018, 17:43) Та... Jun 30 2018, 19:41                   AlexandrY Цитата(jcxz @ Jun 30 2018, 22:41) Ваш пос... Jul 1 2018, 07:22             AlexandrY Цитата(jcxz @ Jun 30 2018, 14:56) Да прич... Jun 30 2018, 13:17 Serge V Iz Использовал хранимые в ОЗУ участки кода, которые з... Jun 29 2018, 07:35 jcxz Цитата(Serge V Iz @ Jun 29 2018, 10:35) И... Jun 29 2018, 08:43 AVR Цитата(jcxz @ Jun 29 2018, 01:54) Есть мы... Jun 29 2018, 07:43 a123-flex Цитата(AVR @ Jun 29 2018, 10:43) Оптимиза... Jun 29 2018, 15:05 RadiatoR Вопрос к ТС - а каков предполагаемый размер генери... Jun 29 2018, 07:54 _4afc_ Мой опыт показывает что оптимизация по скорости са... Jun 29 2018, 08:23 jcxz Цитата(RadiatoR @ Jun 29 2018, 10:54) Во... Jun 29 2018, 09:08  _4afc_ Цитата(jcxz @ Jun 29 2018, 13:08) А тепер... Jun 29 2018, 09:53 VladislavS _4afc_, не стоит быть столь категоричным. Если гов... Jun 29 2018, 08:38 Kabdim Имхо сейчас время такое что проще взять более мощн... Jun 29 2018, 08:44 Arlleex Интересная тема для меня, тема СМК. Ни разу не при... Jun 29 2018, 13:08 RadiatoR Цитата(Arlleex @ Jun 29 2018, 16:08) 2. Н... Jun 29 2018, 13:23 adnega Цитата(Arlleex @ Jun 29 2018, 16:08) 1. П... Jun 29 2018, 16:03  Arlleex Цитата(RadiatoR @ Jun 29 2018, 16:23) Та... Jun 29 2018, 16:18   adnega Цитата(Arlleex @ Jun 29 2018, 19:18) Наде... Jun 29 2018, 16:35    Arlleex Цитата(adnega @ Jun 29 2018, 19:35) Услов... Jun 29 2018, 16:56 jcxz Цитата(Arlleex @ Jun 29 2018, 16:08) Прив... Jun 29 2018, 16:56  AlexandrY Цитата(jcxz @ Jun 29 2018, 19:56) ...
if ... Jun 29 2018, 17:44 kolobok0 Цитата(Arlleex @ Jun 29 2018, 16:08) Инте... Jun 29 2018, 17:46 a123-flex Цитата(jcxz @ Jun 29 2018, 01:54) Есть мы... Jun 29 2018, 13:27 twix Цитата(a123-flex @ Jun 29 2018, 14:2... Jun 29 2018, 14:35 Serge V Iz Кстати, а какие есть основания предполагать, что р... Jun 29 2018, 16:11 Arlleex Цитата(AlexandrY @ Jun 29 2018, 20:44) А ... Jun 29 2018, 18:19 AVI-crak Цитата(jcxz @ Jun 29 2018, 04:54) Есть мы... Jun 30 2018, 11:24 Arlleex jcxz, а зачем тут это? Вы сначала загружаете адрес... Jun 30 2018, 15:09 jcxz Цитата(Arlleex @ Jun 30 2018, 18:09) А вы... Jun 30 2018, 19:31  VladislavS Цитата(jcxz @ Jun 30 2018, 22:31) Здесь н... Jun 30 2018, 19:35  Arlleex Цитата(jcxz @ Jun 30 2018, 23:31) Поэтому... Jun 30 2018, 19:45   jcxz Цитата(Arlleex @ Jun 30 2018, 22:45) По т... Jun 30 2018, 19:54 VladislavS Недавно в другой теме проскакивал вот такой код. П... Jun 30 2018, 18:33 Arlleex Кстати, решил почитать внимательнее 3.3.2. Load/st... Jul 1 2018, 10:03 jcxz Цитата(Arlleex @ Jul 1 2018, 13:03) Что э... Jul 1 2018, 12:00
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|