add nasm and nasm64
This commit is contained in:
parent
bc80269ce2
commit
d258bed574
|
@ -1,21 +0,0 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
# Put instructions to build your package in here
|
||||
PREFIX=$(realpath $(dirname $0))
|
||||
|
||||
mkdir -p build
|
||||
|
||||
cd build
|
||||
|
||||
curl -L "https://www.nasm.us/pub/nasm/releasebuilds/2.15.05/nasm-2.15.05.tar.gz" -o nasm.tar.gz
|
||||
|
||||
tar xzf nasm.tar.gz --strip-components=1
|
||||
|
||||
# === autoconf based ===
|
||||
./configure --prefix "$PREFIX"
|
||||
|
||||
make -j$(nproc)
|
||||
make install -j$(nproc)
|
||||
cd ../
|
||||
rm -rf build
|
||||
|
|
@ -1,21 +0,0 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
# Put instructions to compile source code, remove this file if the language does not require this stage
|
||||
|
||||
|
||||
case "${PISTON_LANGUAGE}" in
|
||||
nasm)
|
||||
nasm -f elf32 -o binary.o "$@"
|
||||
ld -m elf_i386 binary.o -o binary
|
||||
;;
|
||||
nasm64)
|
||||
nasm -f elf64 -o binary.o "$@"
|
||||
ld -m elf_x86_64 binary.o -o binary
|
||||
;;
|
||||
*)
|
||||
echo "How did you get here? (${PISTON_LANGUAGE})"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
chmod +x ./binary
|
|
@ -1,4 +0,0 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
# Put 'export' statements here for environment variables
|
||||
export PATH=$PWD/bin:$PATH
|
|
@ -1,14 +0,0 @@
|
|||
{
|
||||
"language": "nasm",
|
||||
"version": "2.15.5",
|
||||
"provides": [
|
||||
{
|
||||
"language": "nasm",
|
||||
"aliases": ["asm", "nasm32"]
|
||||
},
|
||||
{
|
||||
"language": "nasm64",
|
||||
"aliases": ["asm64"]
|
||||
}
|
||||
]
|
||||
}
|
|
@ -1,5 +0,0 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
# Put instructions to run the runtime
|
||||
shift
|
||||
./binary "$@"
|
|
@ -1,16 +0,0 @@
|
|||
SECTION .DATA
|
||||
good: db 'OK',10
|
||||
txtlen: equ $-good
|
||||
|
||||
SECTION .TEXT
|
||||
GLOBAL _start
|
||||
|
||||
_start:
|
||||
mov eax,4
|
||||
mov ebx,1
|
||||
mov ecx,good
|
||||
mov edx,txtlen
|
||||
int 80h
|
||||
mov eax,1
|
||||
mov ebx,0
|
||||
int 80h
|
|
@ -1,18 +0,0 @@
|
|||
SECTION .data
|
||||
good: db "OK", 0x0
|
||||
txtlen: equ $ - good
|
||||
|
||||
SECTION .text
|
||||
GLOBAL _start
|
||||
|
||||
_start:
|
||||
;sys_write
|
||||
mov rax, 1
|
||||
mov rdi, 1
|
||||
mov rsi, good
|
||||
mov rdx, txtlen
|
||||
syscall
|
||||
;sys_exit
|
||||
mov rax, 60
|
||||
mov rdi, 0
|
||||
syscall
|
|
@ -31,4 +31,6 @@ args: {
|
|||
"octave" = import ./octave.nix args;
|
||||
"ocaml" = import ./ocaml.nix args;
|
||||
"nim" = import ./nim.nix args;
|
||||
"nasm" = import ./nasm.nix args;
|
||||
"nasm-nasm64" = import ./nasm-nasm64.nix args;
|
||||
}
|
||||
|
|
|
@ -0,0 +1,54 @@
|
|||
{pkgs, piston, ...}:
|
||||
let
|
||||
pkg = pkgs.nasm;
|
||||
binutils = pkgs.binutils;
|
||||
in piston.mkRuntime {
|
||||
language = "nasm64";
|
||||
version = pkg.version;
|
||||
runtime = "nasm";
|
||||
|
||||
aliases = [
|
||||
"asm64"
|
||||
];
|
||||
|
||||
compile = ''
|
||||
${pkg}/bin/nasm -f elf64 -o binary.o "$@"
|
||||
${binutils}/bin/ld -m elf_x86_64 binary.o -o binary
|
||||
'';
|
||||
|
||||
run = ''
|
||||
shift
|
||||
./binary "$@"
|
||||
'';
|
||||
|
||||
tests = [
|
||||
(piston.mkTest {
|
||||
files = {
|
||||
"test.asm64" = ''
|
||||
SECTION .data
|
||||
good: db "OK", 10
|
||||
txtlen: equ $ - good
|
||||
|
||||
SECTION .text
|
||||
GLOBAL _start
|
||||
|
||||
_start:
|
||||
;sys_write
|
||||
mov rax, 1
|
||||
mov rdi, 1
|
||||
mov rsi, good
|
||||
mov rdx, txtlen
|
||||
syscall
|
||||
;sys_exit
|
||||
mov rax, 60
|
||||
mov rdi, 0
|
||||
syscall
|
||||
'';
|
||||
};
|
||||
args = [];
|
||||
stdin = "";
|
||||
packages = [];
|
||||
main = "test.asm64";
|
||||
})
|
||||
];
|
||||
}
|
|
@ -0,0 +1,52 @@
|
|||
{pkgs, piston, ...}:
|
||||
let
|
||||
pkg = pkgs.nasm;
|
||||
binutils = pkgs.binutils;
|
||||
in piston.mkRuntime {
|
||||
language = "nasm";
|
||||
version = pkg.version;
|
||||
|
||||
aliases = [
|
||||
"nasm32"
|
||||
"asm"
|
||||
];
|
||||
|
||||
compile = ''
|
||||
${pkg}/bin/nasm -f elf32 -o binary.o "$@"
|
||||
${binutils}/bin/ld -m elf_i386 binary.o -o binary
|
||||
'';
|
||||
|
||||
run = ''
|
||||
shift
|
||||
./binary "$@"
|
||||
'';
|
||||
|
||||
tests = [
|
||||
(piston.mkTest {
|
||||
files = {
|
||||
"test.asm" = ''
|
||||
SECTION .DATA
|
||||
good: db 'OK',10
|
||||
txtlen: equ $-good
|
||||
|
||||
SECTION .TEXT
|
||||
GLOBAL _start
|
||||
|
||||
_start:
|
||||
mov eax,4
|
||||
mov ebx,1
|
||||
mov ecx,good
|
||||
mov edx,txtlen
|
||||
int 80h
|
||||
mov eax,1
|
||||
mov ebx,0
|
||||
int 80h
|
||||
'';
|
||||
};
|
||||
args = [];
|
||||
stdin = "";
|
||||
packages = [];
|
||||
main = "test.asm";
|
||||
})
|
||||
];
|
||||
}
|
Loading…
Reference in New Issue