88 lines
2.0 KiB
TeX

\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}