Skip to content
The Depth programming language
Rust Python
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.
Makefile [feat] split build_cfg Oct 22, 2019 feat: readme Dec 30, 2019

The Depth Programming Language

a Toy Infrastructure of executable program from scratch.
Depth can compile depth-lang, assemble x86_64 assembly,
link a object file, load virtual memory by --run.


compile package

  • translate AST to three-address code
  • depth-lang -> lex -> parse -> sema -> transIR -> liveness -> codegen -> x86_64 asm
  • can emit LLVM-IR with --emit-llvm flag.

assemble package

  • a assembler which can assemble x86_64 assembly and generate ET_REL object file.

link package

  • a static linker
  • can link a objectfile
  • this linker can resolve symbols, determine entry point.

load package

  • a loader implemented in user space.
  • execute a static-linked binary with --run flag.
  • don't use execve(2) syscall.


  • a analyzer which can be used as GNU readelf.
  • --readelf [-a/-h/-r/-l/-S/-s/-d/--debug]
  • can analyze self-desined debug informations with --debug flag


  • a checker which can detect some security-mechanisms are in a binary.
    • RELRO
    • NX-bit( stack execution )
    • stack protector( canary )
    • PIE
    • DT_RPATH

Author's Profile


  • screenName: Drumato
  • Team: IPFactory / OtakuAssembly
  • Language: Rust/C/Haskell/Zen
  • Editor: Neovim
  • Occupation: Student
  • Interests: compiler/assembler/linker/OS/binary analysis(esp ELF)/ all low-level programming
You can’t perform that action at this time.