GCD in TOY86
為了測試 TOY86 assembler 而寫的 gcd procedure。這個程式會在 TOY86 的 stdout 上顯示運算過程,為此它吃的引數是兩個 WORDs。檔案已經放在 TOY86_Rev/examples 目錄下。
ldw R1, stdio stw R1, stdio ldw R2, stdio stw R2, stdio pushw R2 pushw R1 call gcd popw R0 popw R0 stw RA, stdio gcd PROC enter ldw RA, BP + 8 ldw RB, BP + 10 shl RD, RA, 16 orw RD, RD, RB st RD, stdio addw R0, RB, R0 jz end subw RC, RA, RB js swap pushw RB pushw RC jmp rec swap pushw RA pushw RB rec call gcd popw R0 popw R0 end leave ret ENDP
看這個程式跑過大一點的數字,就會了解 tail recursion elimination 的重要 XD。
中間 toy86asm 一度漏看一行,但沒改任何 code 就突然正常了。令人有點不安 XD。
--
希望只是人為操作疏失 XD。
Labels: TOY86
<< 回到主頁