Passing arguments - Normally via registers. Convention is %rdi, %rsi, %rdx, %rcx, %r8, %r9, in that order * This is a convention necessitated by the gcc and g++ compilers which, when linking translated code, have the convention of using those registers in that order. > g++, when translating C++ to assembler, uses this convention. - Arguments are placed in the caller or callee stack frame, ordinarily, only when there are more than 6 arguments. --------------------- Local variables in the frame - Ordinarily are placed at the beginning. The stack pointer (%rsp) holds the address of the beginning of this area. ------------- Byte ordering - Big vs little endian. We are accustomed to big-endian. ------------- Using ^D (EOD) to end data input: - scanf returns the number of items it read * That value, as are almost all return values from library functions, is placed in %rax - If ^D was used, %rax will not have a positive value (likely 0?) --------------------- Why read two chars to read the level in StructEx.m? - The first one read is the \n from entering the age.