diff --git a/free/.gitignore b/free/.gitignore new file mode 100644 index 0000000..70ffe74 --- /dev/null +++ b/free/.gitignore @@ -0,0 +1,2 @@ +free +*.o diff --git a/free/build.sh b/free/build.sh new file mode 100755 index 0000000..1710f48 --- /dev/null +++ b/free/build.sh @@ -0,0 +1,3 @@ +#!/bin/sh + +g++ -m32 -c -o free.o free.cpp -ffreestanding && ld -m elf_i386 -o free free.o diff --git a/free/free.cpp b/free/free.cpp new file mode 100644 index 0000000..46d6cb2 --- /dev/null +++ b/free/free.cpp @@ -0,0 +1,7 @@ +extern "C" void _start() { + asm volatile ( + "mov $1, %eax\n" + "mov $0, %ebx\n" + "int $0x80" + ); +} \ No newline at end of file diff --git a/free/readme.md b/free/readme.md new file mode 100644 index 0000000..c52c628 --- /dev/null +++ b/free/readme.md @@ -0,0 +1,10 @@ +# freestanding + +```bash +g++ -c -o free.o free.cpp +ld -o free free.o + +objdump -x free + +# g++ -c -nostdlib -o free free.cpp +```