hello.P1pp (788B)
1 # tests/p1/hello.P1 — P1-language hello world using the portable entry model. 2 # 3 # The backend-owned `:_start` stub is emitted automatically by P1.M1pp. It 4 # captures argc/argv from the native entry state, calls `p1_main` under the 5 # one-word direct-result convention (a0=argc, a1=argv), then sys_exits 6 # p1_main's return value as the process exit status. 7 # 8 # p1_main is an ordinary P1 function written to the portable ISA. It's a 9 # leaf — no P1 `%call` — so no %enter/%leave frame is needed. It ignores 10 # argc/argv, writes "Hello, World!\n" to stdout via sys_write, and returns 11 # 0 in a0 so the backend stub exits with status 0. 12 13 :p1_main 14 %li(a0, %sys_write) 15 %li(a1, 1) 16 %la(a2, &msg) 17 %li(a3, 14) 18 %syscall 19 %li(a0, 0) 20 %ret 21 22 :msg 23 "Hello, World! 24 " 25 26 :ELF_end