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

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

От Valentin Pimenov Кому All 01.03.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.03.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. - Разводись схемка, больша и маленька..