From d103cc99e36e0579c3891f6f8e9666bf9fa0f44d Mon Sep 17 00:00:00 2001 From: johannst Date: Wed, 25 Nov 2020 17:53:53 +0100 Subject: ch02 adding goals --- 02_process_init/README.md | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) (limited to '02_process_init') diff --git a/02_process_init/README.md b/02_process_init/README.md index 5e4e7b3..9dcda8d 100644 --- a/02_process_init/README.md +++ b/02_process_init/README.md @@ -1,5 +1,12 @@ # Process Initialization +### Goals +- Understand process state on process entry as specified by the + [SystemV x86-64 ABI][sysv_x86_64] +- Build `no-std` program to visualize process state + +--- + Before starting to implement a minimal dynamic linker the first step is to understand the `process initialization` in further depth. Which is important because when starting a new process @@ -12,7 +19,7 @@ Which is important because when starting a new process Before transferring control to a new user process the Linux Kernel provides some data on the `stack` with the format following the specification in the -[`SystemV x86-64 ABI`][sysv_x86_64] chapter _Initial Stack and Register State_. +[SystemV x86-64 ABI][sysv_x86_64] chapter _Initial Stack and Register State_. ## Stack state on process entry @@ -91,7 +98,7 @@ Where `AT_NULL` is used to indicate the end of `AUXV`. ## Register state on process entry Regarding the state of general purpose registers on process entry the -[`x86-64 SystemV ABI`][sysv_x86_64] states that all registers except the ones listed +[x86-64 SystemV ABI][sysv_x86_64] states that all registers except the ones listed below are in an unspecified state: - `$rbp`: content is unspecified, but user code should set it to zero to mark the deepest stack frame @@ -280,7 +287,7 @@ Print auxiliary vector ## Things to remember - On process entry the Linux Kernel provides data on the stack as specified in - the `SystemV ABI` + the [SystemV ABI][sysv_x86_64] - By default the `static linker` adds additional code which contains the `_start` symbol being the default process `entry point` -- cgit v1.2.3