From 38bfabb2caa9a7aa75d4e73c4e29bd3e5358ca38 Mon Sep 17 00:00:00 2001 From: Alexander Petrov Date: Fri, 10 Jul 2026 19:35:32 +0300 Subject: [PATCH] =?UTF-8?q?libbgi:=20=5F=5Fpreserves=5Fregs(d,e)=20=D0=BD?= =?UTF-8?q?=D0=B0=20raw-=D0=BF=D1=80=D0=B8=D0=BC=D0=B8=D1=82=D0=B8=D0=B2?= =?UTF-8?q?=D1=8B=20(=D0=BA=D0=BE=D0=BD=D1=82=D1=80=D0=B0=D0=BA=D1=82,=20?= =?UTF-8?q?=D0=B1=D0=B5=D0=B7=20=D1=8D=D1=84=D1=84=D0=B5=D0=BA=D1=82=D0=B0?= =?UTF-8?q?=20=D1=81=D0=B5=D0=B9=D1=87=D0=B0=D1=81)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit plot/read/hspan/vspan_raw читают D/E (y в DE), но не пишут — аннотация задокументирована в _bgi.h. Честное измерение (полная пересборка с/без, diff всех .asm в common/ и bgi256/): кодогенерация SDCC 4.5 НЕ меняется — вызывающие держат локали в IX-фрейме и перезагружают DE перед каждым вызовом, спасений DE вокруг вызовов не было. Оставлено как контракт на будущее (изменение вызывающих/компилятора); при правке asm сверять клоббер-лист. Co-Authored-By: Claude Fable 5 --- libbgi/bgi256/_bgi_hspan_raw.c | 2 +- libbgi/bgi256/_bgi_plot_raw.c | 2 +- libbgi/bgi256/_bgi_read_raw.c | 2 +- libbgi/bgi256/_bgi_vspan_raw.c | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/libbgi/bgi256/_bgi_hspan_raw.c b/libbgi/bgi256/_bgi_hspan_raw.c index 1a3ae7e..1770bda 100644 --- a/libbgi/bgi256/_bgi_hspan_raw.c +++ b/libbgi/bgi256/_bgi_hspan_raw.c @@ -35,7 +35,7 @@ #include "../_bgi.h" -void _bgi_hspan_raw(int x, int y, int len, uint8_t color) __naked +void _bgi_hspan_raw(int x, int y, int len, uint8_t color) __naked __preserves_regs(d,e) { __asm .globl __gfx_addr_base diff --git a/libbgi/bgi256/_bgi_plot_raw.c b/libbgi/bgi256/_bgi_plot_raw.c index 7b6c4aa..91e5ae6 100644 --- a/libbgi/bgi256/_bgi_plot_raw.c +++ b/libbgi/bgi256/_bgi_plot_raw.c @@ -11,7 +11,7 @@ #include "../_bgi.h" -void _bgi_plot_raw(int x, int y, uint8_t color) __naked +void _bgi_plot_raw(int x, int y, uint8_t color) __naked __preserves_regs(d,e) { __asm .globl __gfx_addr_base diff --git a/libbgi/bgi256/_bgi_read_raw.c b/libbgi/bgi256/_bgi_read_raw.c index c9bc33e..6887fcc 100644 --- a/libbgi/bgi256/_bgi_read_raw.c +++ b/libbgi/bgi256/_bgi_read_raw.c @@ -11,7 +11,7 @@ #include "../_bgi.h" -uint8_t _bgi_read_raw(int x, int y) __naked +uint8_t _bgi_read_raw(int x, int y) __naked __preserves_regs(d,e) { (void)x; (void)y; __asm diff --git a/libbgi/bgi256/_bgi_vspan_raw.c b/libbgi/bgi256/_bgi_vspan_raw.c index 9e791da..fae5690 100644 --- a/libbgi/bgi256/_bgi_vspan_raw.c +++ b/libbgi/bgi256/_bgi_vspan_raw.c @@ -24,7 +24,7 @@ #include "../_bgi.h" -void _bgi_vspan_raw(int x, int y, int len, uint8_t color) __naked +void _bgi_vspan_raw(int x, int y, int len, uint8_t color) __naked __preserves_regs(d,e) { __asm .globl __gfx_addr_base