.machine ppc .globl _main ;; r6: リストのポインタ ;; r7: リストの要素数 ;; r8: カウント _main: ;; 初期化 lis r6, hi16(list) addi r6, r6, lo16(list) lis r7, hi16(list_size) addi r7, r7, lo16(list_size) li r8, 0 _push: lbz r10, 0(r6) stbu r10, -1(r1) addi r6, r6, 1 addi r8, r8, 1 cmpl cr7, r7, r8 bgt cr7, _push li r8, 0 _pop: lbz r10, 0(r1) stwu r8,-4(r1) ; スタックに退避 ;; 表示 li r3, 1 ; stdout lis r4, hi16(format) addi r4, r4, lo16(format) addi r10, r10, 48 ; ASCII stb r10, 0(r4) li r5, 2 li r0, 4 ; sys_write sc lwz r8, 0(r1) ; スタックから復帰 addi r1, r1, 4 addi r1, r1, 1 addi r8, r8, 1 cmpl cr7, r7, r8 bgt cr7, _pop ;; sys_exit() li r3, 0 li r0, 1 sc .data .align 2 list: .byte 1,2,3,4,5 .align 2 list_size = 5 format: .asciz " \n" .align 2