Now that we're 64-bit: Let's interact with a C program! A minor compatibility issue: Executable stacks We don't actually need one Could set as a linker option with -z Could also put a .section .note.GNU-stack in the assembly C libary used from Assembly: Write the library in a c file Compile it with gcc -c -o library_name.o source_code.c Assemble your program as usual Link it all together! Probably something like this: ld asm_object.o library_name.o -lc -z execstack --dynamic-linker /lib64/ld-linux-x86-64.so.2 Run the binary that comes out of all this Assembly library used from C: Write the library, build with as as usual Write the C program and use the function Make a C prototype for the function, either in the main file or a header Build the program with gcc or clang: gcc c_source.c asm_library.o -z execstack Could we make a build script for this? Of course!