Files
Sprinter-SDCC/examples
snark13 2f4eaf5b25 mdview2: ускорение препроцессинга — asm fb() + инлайн рендер-цикла
Профилирование (52КБ README, раздельный замер): препроцессинг 24с, из них
bank I/O ~0с, cont-walk ~1с — всё время в посимвольных скан-циклах
(индексация 8с + рендер 13с, два прохода по файлу).

- fb() переписана на ассемблере (была закомментированная заготовка): убран
  вызов функции и 32-битная арифметика на каждый байт. Раскладка __sdcccall(1)
  для uint32 аргумента (p=HLDE) и возврат char в A сверены через sdcc -S;
  координация маппинга с bank_read держится на том, что _io_page_w3 — порт
  (__sfr 0xE2), пишем OUT — bank_read читает IN.
- render_line_to_cache: горячий путь обычного текста больше не вызывает
  handle_inline_marker (6 аргументов) на каждый символ — только на маркерах
  ` * _ ~; cc_put заинлайнен. Поведение идентично.

Итого 24→18с. Индекс-скан (8с) лёгкого инлайна не имеет (нет per-char
вызовов). Следующий шаг — merge двух проходов в один.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-24 11:23:21 +03:00
..