Creating Our Own Fibers 110 When we pass a pointer, we need to make sure we pass in a pointer to either address 0016, 0008, or 0000 in the example. The stack grows downwards, so we start at the top and work our way down. When we set the stack pointer in a 16-byte aligned stack, we need to make sure to put our stack pointer to an address that is a multiple of 16. In the example, the only address that satisfies this requirement is 0008 (remember the stack starts on the top). If we add the following lines of code to our example in the last chapter just before we do the switch in our main function, we can effectively print out our stack and have a look at it: ch05/b-show-stack for i in 0..SSIZE { println!("mem: {}, val: {}", sb_aligned. offset(-i as isize) as usize, *sb_aligned. offset(-i as isize)) } The output we get is as follows: mem: 2643866716720, val: 0 mem: 2643866716719, val: 0 mem: 2643866716718, val: 0 mem: 2643866716717, val: 0 mem: 2643866716716, val: 0 mem: 2643866716715, val: 0 mem: 2643866716714, val: 0 mem: 2643866716713, val: 0 mem: 2643866716712, val: 0 mem: 2643866716711, val: 0 mem: 2643866716710, val: 0 mem: 2643866716709, val: 127 mem: 2643866716708, val: 247 mem: 2643866716707, val: 172 mem: 2643866716706, val: 15 mem: 2643866716705, val: 29 mem: 2643866716704, val: 240 mem: 2643866716703, val: 0 mem: 2643866716702, val: 0 mem: 2643866716701, val: 0 mem: 2643866716700, val: 0 mem: 2643866716699, val: 0...