diff options
Diffstat (limited to 'tests/fixtures/argc-argv.s')
| -rw-r--r-- | tests/fixtures/argc-argv.s | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/tests/fixtures/argc-argv.s b/tests/fixtures/argc-argv.s new file mode 100644 index 0000000..4c1d2ac --- /dev/null +++ b/tests/fixtures/argc-argv.s @@ -0,0 +1,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 |
