ソフトウェアスタック
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2021/08/16 13:57 UTC 版)
PDP-8 はスタックをハードウェアでサポートしていないが、ソフトウェアでの実装は可能である。以下はPUSHとPOPというサブルーチンの実装例だが、単純化するためスタックのオーバーフローやアンダーフローはチェックしていない。 PUSH, 0 DCA DATA CLA CMA / -1 TAD SP DCA SP TAD DATA DCA I SP JMP I PUSH /Return POP, 0 CLA CLL TAD I SP ISZ SP JMP I POP DATA, 0 SP, 0 以下は、"Hello World" を "OUT" というサブルーチンとこのスタックを使って実装したものである。 *200 MAIN, CLA CLL /Set the message pointer TAD (MESSG /To the beginning of the message (literal) DCA SP LOOP, JMS POP SNA /Stop execution if zero HLT JMS OUT /Otherwise, output a character JMP LOOP MESSG, "H "e "l "l "o ", " "w "o "r "l "d "! 015 012 0 OUT, 0 / Will be replaced by caller's updated PC TSF / Skip if printer ready JMP .-1 / Wait for flag TLS / Send the character in the AC CLA CLL / Clear AC and Link for next pass JMP I OUT / Return to caller
※この「ソフトウェアスタック」の解説は、「PDP-8」の解説の一部です。
「ソフトウェアスタック」を含む「PDP-8」の記事については、「PDP-8」の概要を参照ください。
- ソフトウェア・スタックのページへのリンク