global add global bit_and global bit_or global bit_xor section .text add: mov eax, edi ;first argument mov ebx, esi ;second argument add eax, ebx ret bit_and: mov eax, edi ;first argument mov ebx, esi ;second argument and eax, ebx ret bit_or: mov eax, edi mov ebx, esi or eax, ebx ret bit_xor: mov eax, edi mov ebx, esi xor eax, ebx ret ;x86_64 UNIX systems passes the ;first argument goes to rdi/edi ;second argument goes to rsi esi section .note.GNU-stack noalloc noexec nowrite progbits ;this is for the linker ;just says we do not need an executable stack