Задача про рестарт — ZXNet «code.zx»

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

ZXNet echo conference «code.zx»



from: Valentin Pimenov
to: All
date: 1 March 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 +---------------

from: Ivan Mak
to: Valentin Pimenov
date: 6 March 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. - Разводись схемка, больша и маленька..