ZXNet эхоконференция «code.zx»


тема: Задача про рестарт



от: Valentin Pimenov
кому: All
дата: 01 Mar 1999


+-Привет,
|All!
+--------

;условия задачи:
;вызов рестарта с функцией по:

;rst x
;db function

;HО! изменения в правилах:
;нельзя ничего сохранять в ячейках
;памяти, только на стеке!
;т.к. подразумевается возможность в
;любой момент прервать выполнение этой
;программы (по прерыванию) и переклю-
;читься на другую,
;которая, возможно, тоже выполняет этот
;же участок кода. (естественно, у них
;разные стеки :)
;т.е. условие более сильно, чем рекур-
;сивная реентерабельность.

;nb:
;вычисление адреса функции по номеру
;непринципиально.
;1. таблица адресов не может изменяться в процессе
;работы процедуры.
;2. функций 256 штук :) (а то уж больно все хитрые стали).

;интересует не столько скорость (хотя
;и она тоже), сколько красота решения.

PUSH HL
PUSH DE
PUSH AF
LD HL,6
ADD HL,SP
LD E,(HL)
INC HL
LD D,(HL);de-return address

LD A,(DE);function

INC DE; de-new return address

LD (HL),D;save to stack
DEC HL
LD (HL),E


;...

;A-FUNCTION NUMBER -> HL-ADRESS OF FUNCTION

;...

POP AF
POP DE
EX (SP),HL
RET


+-Всего доброго, All!
|С Вами был
|Valentin Pimenov aka Valker/Style_Group
+---------------

от: Ivan Mak
кому: Valentin Pimenov
дата: 06 Mar 1999

Приветствую Вас, Valentin!

В день Valentin Pimenov написали All:

VP> ;HО! изменения в правилах:
VP> ;нельзя ничего сохранять в ячейках
VP> ;памяти, только на стеке!
VP> ;т.к. подразумевается возможность в
VP> ;любой момент прервать выполнение этой
VP> ;программы (по прерыванию) и переклю-
VP> ;читься на другую,
VP> ;которая, возможно, тоже выполняет этот
VP> ;же участок кода. (естественно, у них
VP> ;разные стеки :)
VP> ;т.е. условие более сильно, чем рекур-
VP> ;сивная реентерабельность.

EX (SP),HL ; save HL
PUSH DE ; save DE
PUSH AF ; save A
LD A,(HL)
INC HL
; A -> HL
EX DE,HL
LD L,A
LD H,TABLE/256
LD A,(HL)
INC H
LD H,(HL)
LD L,A

POP AF ; ret A
EX (SP),HL ;─┐ ret DE & save function adress
EX DE,HL ;─┘
RET ; goto function

; Function
EX (SP),HL ; ret HL - 1-st step ot any function !

Вай! Протосы атакуют моих зерлингов! Пора сматываться. Ivan.

- Разводись схемка, больша и маленька..




Темы: Игры, Программное обеспечение, Пресса, Аппаратное обеспечение, Сеть, Демосцена, Люди, Программирование

Похожие статьи:
Гости - Интервью с Nicodim'ом из Ярославля (автор Prince of Persia и Пиратов).
Обзор - Больше SOFT'а, хорошего и качественного на Российский рынок!
Этюды - И.Рощин. Два графических эффекта.

В этот день...   21 октября