32 lines
817 B
Nix
32 lines
817 B
Nix
{ stdenv
|
|
, writeText
|
|
, qbe
|
|
}:
|
|
|
|
# The hello world program available at https://c9x.me/compile/
|
|
let helloWorld = writeText "hello-world.ssa" ''
|
|
function w $add(w %a, w %b) { # Define a function add
|
|
@start
|
|
%c =w add %a, %b # Adds the 2 arguments
|
|
ret %c # Return the result
|
|
}
|
|
export function w $main() { # Main function
|
|
@start
|
|
%r =w call $add(w 1, w 1) # Call add(1, 1)
|
|
call $printf(l $fmt, w %r, ...) # Show the result
|
|
ret 0
|
|
}
|
|
data $fmt = { b "One and one make %d!\n", b 0 }
|
|
'';
|
|
|
|
in stdenv.mkDerivation {
|
|
name = "qbe-test-can-run-hello-world";
|
|
meta.timeout = 10;
|
|
buildCommand = ''
|
|
${qbe}/bin/qbe -o asm.s ${helloWorld}
|
|
cc -o out asm.s
|
|
./out | grep 'One and one make 2!'
|
|
touch $out
|
|
'';
|
|
}
|
|
|