Блог страдающего Лиса
Lorem ipsum hello dolor sit world amet
11 окт 2024 Пт
Оптимизации продолжаются
Сегодня, как всегда, с утра продолжил делать оптимизации. Вчера я смог сделать MOVSx инструкцию, но не учел тот момент, что когда инструкция MOVSB, то требуется всего лишь 2 такта вместо 3 тактов, это исправил. Также оптимизировал инструкцию CMPSx, чтобы она выполнялась за 5 (BYTE) или 7 тактов (WORD). В случае REP тоже работает за 3 или 5 тактов за один раз. Это хорошо, и теперь осталось только сделать SCASx, который будет работать за 1/2 такта. И строковые инструкции будут полностью оптимизированы. Всего их 6 видов:
Само по себе выполнение оптимизации мне нужно для создания плавного скроллинга для игр, которые я хотел бы сделать. Например, можно начать с игры Flappy Bird, которая не так сложна для реализации. И я буду делать ее для чипа C5, с 308К памяти, потому что программирование на Марсоходе-2 меня пока не так сильно привлекает пока что. В любом случае, если потребуется, я просто доработаю для чипа этого.
В итоге смог оптимизировать всё и удалить ненужный код для ipstart. Есть только один недостаток, что при исполнении инструкции она не может быть оборвана посередине. Но это не так важно, все равно, если контроллер прерываний будет, то он будет реагировать на внешние изменения.
Есть одна важная вещь, которую мне надо сделать, это деление, да такое, чтобы побыстрее работало, и неплохо бы оптимизировать и инструкции сдвига, на самом деле. У меня по этому процессору просто прорва работы, он очень сырой и когда его завершу, я не знаю даже. Уже столько времени над ним работаю.
-
STOS
— сохранение A по адресу ES:DI -
LODS
— считывание из DS:SI в A -
MOVS
— копирование из DS:SI -> ES:DI -
CMPS
— сравнение DS:SI с ES:DI, через операцию CMP -
SCAS
— сравнение ES:DI с A
Само по себе выполнение оптимизации мне нужно для создания плавного скроллинга для игр, которые я хотел бы сделать. Например, можно начать с игры Flappy Bird, которая не так сложна для реализации. И я буду делать ее для чипа C5, с 308К памяти, потому что программирование на Марсоходе-2 меня пока не так сильно привлекает пока что. В любом случае, если потребуется, я просто доработаю для чипа этого.
В итоге смог оптимизировать всё и удалить ненужный код для ipstart. Есть только один недостаток, что при исполнении инструкции она не может быть оборвана посередине. Но это не так важно, все равно, если контроллер прерываний будет, то он будет реагировать на внешние изменения.
Есть одна важная вещь, которую мне надо сделать, это деление, да такое, чтобы побыстрее работало, и неплохо бы оптимизировать и инструкции сдвига, на самом деле. У меня по этому процессору просто прорва работы, он очень сырой и когда его завершу, я не знаю даже. Уже столько времени над ним работаю.