libbgi: __preserves_regs(d,e) на raw-примитивы (контракт, без эффекта сейчас)
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 <noreply@anthropic.com>
This commit is contained in:
@@ -35,7 +35,7 @@
|
|||||||
|
|
||||||
#include "../_bgi.h"
|
#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
|
__asm
|
||||||
.globl __gfx_addr_base
|
.globl __gfx_addr_base
|
||||||
|
|||||||
@@ -11,7 +11,7 @@
|
|||||||
|
|
||||||
#include "../_bgi.h"
|
#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
|
__asm
|
||||||
.globl __gfx_addr_base
|
.globl __gfx_addr_base
|
||||||
|
|||||||
@@ -11,7 +11,7 @@
|
|||||||
|
|
||||||
#include "../_bgi.h"
|
#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;
|
(void)x; (void)y;
|
||||||
__asm
|
__asm
|
||||||
|
|||||||
@@ -24,7 +24,7 @@
|
|||||||
|
|
||||||
#include "../_bgi.h"
|
#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
|
__asm
|
||||||
.globl __gfx_addr_base
|
.globl __gfx_addr_base
|
||||||
|
|||||||
Reference in New Issue
Block a user