Add tags

Add tags to the following comment

Mac OS X (PowerPC 32bit) アセンブリで、スタックを使って。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
        .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

Add tags

The input will be splited to tags with space.

Index

Feed

Other

Link

Pathtraq

loading...