0.7.4から(部分的に、というかんじのようですが)インラインアセンブラを使えるようになりました。
さっそく試してみます。
環境はx86_64です。
def syscall(n : UInt64) : UInt64
dst :: UInt64
asm("syscall" : "={rax}"(dst)
: "rax"(n)
: "rcx", "r11", "memory"
: "volatile")
dst
end
GETPID = 39_u64
p syscall(GETPID) == Process.pid ## => true
gcc拡張構文のsyntaxがそのまま使えるので、新しく文法を覚えなくてもよいのがいいですね。