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