summaryrefslogtreecommitdiff
path: root/tests/fixtures/argc-argv.s
blob: 4c1d2ac0517047f5dfd0c07f0cb4fa4b1c67b7b8 (plain)
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
; Minimal argc/argv and explicit "--" separator example.
;
; Assemble/link:
;   ../utils/mcpu-as -o argc-argv.o argc-argv.s
;   ../utils/mcpu-ld -o argc-argv --stack-size=4K argc-argv.o
;
; Run:
;   ../utils/mcpu-run \
;     --on-step=print-int-regs:r64@0x00000,r8@0x00020,r8@0x00021 \
;     -- \
;     argc-argv --help -x
;
; Guest argv is:
;   argv[0] = "argc-argv"
;   argv[1] = "--help"
;   argv[2] = "-x"
;
; The example prints argc, argv[1][2] ('h') and argv[2][1] ('x') as integers.
; Expected output:
;   3 104 120

.text
_start_life:
loop:
        ; Persistent McpuStartup at SP:
        ;   SP+8  = argc
        ;   SP+16 = argv (PTR64 to argv[0])
        LDSP    r64@0x00000, 8
        LDSP    r64@0x00008, 16

        ; argv[1]
        PADDI   r64@0x00010, r64@0x00008, 8
        LOADP   r64@0x00018, r64@0x00010
        PADDI   r64@0x00018, r64@0x00018, 2
        LOADP   r8@0x00020, r64@0x00018

        ; argv[2]
        PADDI   r64@0x00010, r64@0x00008, 16
        LOADP   r64@0x00018, r64@0x00010
        PADDI   r64@0x00018, r64@0x00018, 1
        LOADP   r8@0x00021, r64@0x00018

        END
        JMP     loop