Сообщение от
barsik
Каким образом использование стека подпрограммой может принести хоть какой-то вред? Что же программист полный идиот, чтобы ставить стек на область в которой хранятся нужные данные?
это вы сейчас по незнанию да неопытности сказали
вред будет нанесен если ктото по незнанию внесет изменения в программу
например включит прерывания или воткнет свою собственную процедуру прерывания
во время освежения экрана через стек
вот вам кусок кода для вывода графики на экран.
правда под спектрум и Z80 но нам это без разницы совершенно
данный код работает с включенными прерываниями и специальным обработчиком прерывания
если внезапно там окажется другой обработчик то вся графика будет минут за 10 полностью уничтожена.
Код:
rend_line
dup 32
push hl ;11
ld l,(hl) ;6
ld h,a ;bg_font/2048 ;7
add hl,hl ;11
add hl,hl ;11
add hl,hl ;11
ld c,(hl) ;7
inc l ;4
ld b,(hl) ;7
inc l ;4
ld sp,hl ;6
ld l,e ;4
ld h,d ;4
dup 3
ld (hl),c ;7
inc h ;4
ld (hl),b ;7
inc h ;4
pop bc ;10
edup
;96
ld (hl),c ;7
inc h ;4
ld (hl),b ;7
ld sp,ix ;10
pop hl ;10
inc e ;4
inc l ;4
; ;236
edup
rend_size equ ($-rend_line)/32
org $-1
ld bc,-31
add hl,bc
jp rend_line
Может быть Вы имеете в виду случай когда стеком делается ролик экрана. В мониторе Орлова ролик тормозной без стека, а вот в ленинградском мониторе ролик делается стеком. Естественно, когда стек используют не по назначению, то прерывания запрещают.
в том числе и ролик экрана
когда программист что-то пишет он твердо знает обычно где и как будет работать его программа
освежение экрана через стек дает значительное ускорение по сравнению с другими способами.