\documentclass[a4paper]{article} \usepackage{baskervald} \usepackage{booktabs} \usepackage{courierten} \usepackage{cuted} \usepackage{helvet} \usepackage[hmargin=4.5cm,vmargin=3.5cm]{geometry} \usepackage{mathtools} \usepackage{sectsty} \usepackage{tabularx} \pagenumbering{gobble} \setcounter{secnumdepth}{0} \allsectionsfont{\sffamily} \begin{document} \begin{center} \LARGE\sffamily\bfseries Basic AMD64 Linux Syscalls \vspace{1em} \end{center} \noindent \begin{center} \begin{tabular}{>{\ttfamily}cl} \toprule \multicolumn{2}{>{\sffamily\bfseries}c}{Register Usage} \\ \midrule rax & Syscall number \\ & Return value \\ rdi & First argument \\ rsi & Second argument \\ rdx & Third argument \\ \bottomrule \end{tabular} \hspace{1em} \begin{tabular}{l>{$}r<{$}} \toprule \multicolumn{2}{>{\sffamily\bfseries}c}{Common open(2) Flags} \\ \midrule Read-only & 0_h \\ Write-only & 1_h \\ Read/write & 2_h \\ Create & 40_h \\ Truncate & 200_h \\ Append & 400_h \\ \bottomrule \end{tabular} \end{center} \section{File I/O} \begin{tabularx}{\textwidth}{p{4em}p{2em}>{\ttfamily}cX} \toprule read & 0 & rdi & File descriptor to read from \\ & & rsi & Address of buffer \\ & & rdx & Number of bytes to read \\ \midrule write & 1 & rdi & File descriptor to write to \\ & & rsi & Address of buffer \\ & & rdx & Number of bytes to write \\ \midrule open & 2 & rdi & Address of path \\ & & rsi & Bitwise OR of flags \\ & & rdx & Mode of file, if call creates a file \\ \midrule close & 3 & rdi & File descriptor to close \\ \bottomrule \end{tabularx} \section{Process Control} \begin{tabularx}{\textwidth}{p{4em}p{2em}>{\ttfamily}cX} \toprule fork & 57 & \textrm{\textendash} & No parameters \\ \midrule execve & 59 & rdi & Address of path \\ & & rsi & Address of array of arguments \\ & & rsi & Address of array of environment variables \\ \midrule exit & 60 & rdi & Exit code \\ \bottomrule \end{tabularx} \end{document}