Assembler (as): - Only support ELF format. - Options: -c - Suppress the link-edit phase of compilation, and do not remove any object files that are produced. -G - Produce position independent executable. (Similar to cc). -o outfile - Produce object named outfile. -s - Strip debug information from symbol table. - Syntax: - Intel syntax only (op dest, source) - No support for AT&T syntax. - Case insensitive. - Use architecture addressing and immediate notation: x86-64/AMD64: [rax+4] ; Allow linker to decide if GOT entry is generated. ; Or provide assembler flag for explicit PIC. lea rax, [rel function_name] ; No @GOTPCREL syntax. AArch64: [x0, 4] ldr x2, [x2, function_name] ; Same as x86-64/AMD64. - Use architecture register naming conventions: x86/i386: eax, ax, ah/al ebx, bx, bh/bl ecx, cx, ch/cl edx, dx, dh/dl esi, si edi, di ebp, bp esp, sp eip x86-64/AMD64: rax, eax, ax, ah/al rbx, ebx, bx, bh/bl rcx, ecx, cx, ch/cl rdx, edx, dx, dh/dl rsi, esi, si rdi, edi, di rbp, ebp, bp rsp, esp, sp rip r8-r15, r8b-r15b ARM: r0-r15, cpsr AArch64: x0-x30, w0-w30, x31/w31, sp, nzcv PowerPC/PowerPC64: r0-r32 lr, ctr, xer, cr, pc SPARC: g0-g7 o0-o7 l0-l7 i0-i7 pc, npc, y, psr/pstate/pil MIPS: $t0-$s0 RISC-V: x0-x31 - Comments: Single line comments: ; or #