Нашли или выдавили из себя код, который нельзя назвать нормальным,
на который без улыбки не взглянешь?
Не торопитесь его удалять или рефакторить, — запостите его на
говнокод.ру, посмеёмся вместе!
решил пойти по накатанному пути и добавил видеоконтроллер, пока только монохромная битовая карта 144x100, но большего и не надо
сабж выводит на экран что отпрыгивает от стен, простое умножение компонента вектора на -1
думаю подрубить суперскалярности, добавить какой нибудь MEMSET как инструкцию, PUSHA, POPA, всякие удобные ENTER, LEAVE, LOOP, ну и арифметические наконец добавить все
Самомудифицируемый код без поддержки железа -- плохо:(
Всегда ведь можно написать
if (hoho == pepe) {
writeToCodePage(0xFF);
} else {
writeToDataPage(0xFF);
}
// или даже так
* (100500 + pepe) = 0xFF; //поди знай куда там адрес в рантайме резолвница
А есть ли процессоры, где запись кода и запись данных нужно разными инструкциями делать? Тогда легко можно было бы поддержать самомудифицрвн кд.
супрасинтаксическая заумь: при формальной, грамматической правильности конструкций, составленных из обычных слов, высокая степень неопределённости возникает на уровне референции — проще говоря, остается принципиально неясным, о чём идёт речь.
ARM'ы видел? Отдельных инструкций для push, pop, call, ret и пр. нет, зато есть команды для записи/чтения с пост/преинкрементом, и для перехода BX REG. И ещё условия почти во все инструкции закодировать можно)
Правда BL (а ля CALL) только в R14 пишет, и адрес разврата самому в стек пушить/попать надо.
Жабаёбы вроде тоже так пытаются делать, и укакиваются.
Я не знаю как в растишке, но по идее если ты можешь построить граф зависимостей, то проблем быть не должно. Или там в одном файле может быть 100500 классов?
Пришло время для jit-реконпеляции.
Отловишь запись и джитнешь кусок заново.
У меня пока такая идея -- в каждую инструкцию записи добавлять проверку по битмапе (бряки тут не нужны т.к. хостовый код мы сами высрали).
Да, это оверхед. Но странички могут ещё больше оверхеда дать если код и данные не разнесены.
В любом случае быстрее интерпретатора будет.
Всегда ведь можно написать
А есть ли процессоры, где запись кода и запись данных нужно разными инструкциями делать? Тогда легко можно было бы поддержать самомудифицрвн кд.
Или это и будет Фон Нейман?
На мелких вроде было три -- флешка, память и I/O. Причём регистры видно как память.
На больших судя по всему растянули шину к памяти до 16 бит и добавили MMIO.
Это вам не сраный ibm pc.
Там пинов не хватит, придётся внешние микрухи вешать для кнопок и дисплея.
g "детская логическая машина ДЛМ"
супрасинтаксическая заумь: при формальной, грамматической правильности конструкций, составленных из обычных слов, высокая степень неопределённости возникает на уровне референции — проще говоря, остается принципиально неясным, о чём идёт речь.
Монада — это моноид в категории эндофункцторов
фон Нейман — вместе
jit для фон Неймана как раз и возможен
Тут вообще никаких проблем
Говно. Сделай универсальные интсрукции, котторые это с указанным регистром проделывают
Правда BL (а ля CALL) только в R14 пишет, и адрес разврата самому в стек пушить/попать надо.
В thumb есть. Из-за более компактного кодирования пришлось пожертвовать универсальностью регистров.
я слышал это вырезали в x64
и если ret можно закодировать одним байтом, то loadincrement это уже три байта, что будет медленее в софтварном исполнении.
в отличии от little c compiler
У них там была квантовая неопределённость и прога иногда собиралась неправильно. Из-за этого отключали. Возможно, что уже пофиксили.
В нашем проекте, к болью вынужден я признать, делать полный клин и ребилд приходится раз в неделю
Видимо поэтому и не могут запинать.
Я не знаю как в растишке, но по идее если ты можешь построить граф зависимостей, то проблем быть не должно. Или там в одном файле может быть 100500 классов?
Просто тогда придется парсить и копулировать каждый раз при запуске