Assembly Languages / Assemblers

x86-64 Assembly

Intel Syntax

  • Demonstrates: register moves, system call.

; Linux x86-64: exit(0)
section .text
global _start

_start:
    mov rax, 60      ; syscall: exit
    mov rdi, 0       ; status
    syscall
  • Key traits

    • CISC

    • variable-length instructions

    • many addressing modes

AT&T syntax

  • Same behavior, different syntax.

.globl _start
.text
_start:
    mov $60, %rax
    mov $0, %rdi
    syscall
  • Notable differences

    • source, destination order reversed

    • registers prefixed with %

    • immediates prefixed with $

    • These are syntactic differences only — same machine code.

ARM (AArch64) Assembly

  • Demonstrates: fixed-width RISC instructions and syscall convention.

// Linux AArch64: exit(0)
.global _start
_start:
    mov x0, #0      // status
    mov x8, #93     // syscall: exit
    svc #0
  • Key traits

    • load/store architecture

    • fixed instruction width

    • many registers

RISC-V Assembly

  • Modern open ISA.

  • open standard

  • modular ISA

  • growing ecosystem

  • Used in:

    • research

    • embedded

    • experimental CPUs

  • Demonstrates: very clean RISC design.

# Linux RISC-V: exit(0)
.global _start
_start:
    li a0, 0        # status
    li a7, 93       # syscall: exit
    ecall
  • Key traits

    • minimal ISA

    • highly regular

    • open standard

AVR Assembly

  • Demonstrates: simple microcontroller style.

; AVR: infinite loop
.global main
main:
loop:
    rjmp loop
  • Key traits

    • tiny register file

    • Harvard architecture

    • common in microcontrollers

PIC Assembly

  • Demonstrates: banked register style.

  • Generic example

; PIC: infinite loop
org 0x0000
goto $

end
  • Key traits

    • very small cores

    • banked memory

    • embedded focus

flat assembler

URCL (Universal Reduced Computer Language)