master
 1pub fn main() noreturn {
 2    const msg = "hello world\n";
 3    _ = syscall3(SYS_write, STDOUT_FILENO, @intFromPtr(msg), msg.len);
 4    _ = syscall1(SYS_exit, 0);
 5    unreachable;
 6}
 7
 8pub const SYS_write = 1;
 9pub const SYS_exit = 60;
10
11pub const STDOUT_FILENO = 1;
12
13pub fn syscall1(number: usize, arg1: usize) usize {
14    return asm volatile ("syscall"
15        : [ret] "={rax}" (-> usize),
16        : [number] "{rax}" (number),
17          [arg1] "{rdi}" (arg1),
18        : .{ .rcx = true, .r11 = true });
19}
20
21pub fn syscall3(number: usize, arg1: usize, arg2: usize, arg3: usize) usize {
22    return asm volatile ("syscall"
23        : [ret] "={rax}" (-> usize),
24        : [number] "{rax}" (number),
25          [arg1] "{rdi}" (arg1),
26          [arg2] "{rsi}" (arg2),
27          [arg3] "{rdx}" (arg3),
28        : .{ .rcx = true, .r11 = true });
29}
30
31// exe=succeed
32// target=x86_64-linux