diff options
| author | Andrew Kelley <superjoe30@gmail.com> | 2015-12-15 01:55:52 -0700 |
|---|---|---|
| committer | Andrew Kelley <superjoe30@gmail.com> | 2015-12-15 01:55:52 -0700 |
| commit | 673d638070452d86543c6bb47879e83adcfa73a1 (patch) | |
| tree | 5a58cef1f45c198d93266ebbb072a102fbdfa5b2 /std/std.zig | |
| parent | a292eb8d64da4383f2d4637f231d338ed9c680e0 (diff) | |
| download | zig-673d638070452d86543c6bb47879e83adcfa73a1.tar.gz zig-673d638070452d86543c6bb47879e83adcfa73a1.zip | |
std: more efficient inline assembly
Diffstat (limited to 'std/std.zig')
| -rw-r--r-- | std/std.zig | 26 |
1 files changed, 8 insertions, 18 deletions
diff --git a/std/std.zig b/std/std.zig index d3ce4f976c..b0aa266be6 100644 --- a/std/std.zig +++ b/std/std.zig @@ -3,27 +3,17 @@ const SYS_exit : isize = 60; const stdout_fileno : isize = 1; fn syscall1(number: isize, arg1: isize) -> isize { - asm volatile (" - mov %[number], %%rax - mov %[arg1], %%rdi - syscall - mov %%rax, %[ret]" - : [ret] "=r" (return isize) - : [number] "r" (number), [arg1] "r" (arg1) - : "rcx", "r11", "rax", "rdi") + asm volatile ("syscall" + : [ret] "={rax}" (return isize) + : [number] "{rax}" (number), [arg1] "{rdi}" (arg1) + : "rcx", "r11") } fn syscall3(number: isize, arg1: isize, arg2: isize, arg3: isize) -> isize { - asm volatile (" - mov %[number], %%rax - mov %[arg1], %%rdi - mov %[arg2], %%rsi - mov %[arg3], %%rdx - syscall - mov %%rax, %[ret]" - : [ret] "=r" (return isize) - : [number] "r" (number), [arg1] "r" (arg1), [arg2] "r" (arg2), [arg3] "r" (arg3) - : "rcx", "r11", "rax", "rdi", "rsi", "rdx") + asm volatile ("syscall" + : [ret] "={rax}" (return isize) + : [number] "{rax}" (number), [arg1] "{rdi}" (arg1), [arg2] "{rsi}" (arg2), [arg3] "{rdx}" (arg3) + : "rcx", "r11") } pub fn write(fd: isize, buf: &const u8, count: usize) -> isize { |
