ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Пятница
29 ноября
655280
Николай Коровин (23.02.2016 16:35, просмотров: 20073)
Компиляция «кода вразрядку», или Снова предлагаю пофантазировать об абстрактных решениях для абстрактного случая. Вводная информация: 1) Есть некая тупорылая операция, которую надо выполнять каждый N-й такт. «Выборка из памяти», «вывод в порт», «инкремент указателя», «обрезка указателя по маске». После этого есть несколько тактов свободных. 2) Есть некая задача, слишком сложная, чтобы её эффективно было решать на асме руками. Её хорошо бы писать на сях и собирать по-человечески. 3) Лишних тактов на прерывания, вызовы и возвраты у нас нет. В принципе, у компилятора есть возможность генерировать код, перемежающийся повторяющейся операцией 1. Конечно, придётся игнорировать существование части регистров, отданных под неё, а в ветвлениях — подгонять длины всех ветвей до кратности нужному числу тактов. И всё же, я считаю, негоже этому приёму пылиться в арсенале классической демосцены, а стоит всё-таки ему выйти в белы люди. В принципе, это можно реализовать через резервирование пары регистров до компиляции и постпроцессинг ассемблерного кода после оной. Дискасс.