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;
|
"octave" = import ./octave.nix args;
|
||||||
"ocaml" = import ./ocaml.nix args;
|
"ocaml" = import ./ocaml.nix args;
|
||||||
"nim" = import ./nim.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