This preview shows page 1. Sign up to view the full content.
Unformatted text preview: uble word involves reading from the top of stack location and then incrementing the stack pointer by 4. Therefore the instruction popl %eax is equivalent to the following pair of instructions:
movl (%esp),%eax addl $4,%esp 3.4.3 Data Movement Example
New to C? Function exchange (Figure 3.5) provides a good illustration of the use of pointers in C. Argument xp is a pointer to an integer, while y is an integer itself. The statement int x = *xp;
indicates that we should read the value stored in the location designated by xp and store it as a local variable named x. This read operation is known as pointer dereferencing. The C operator * performs pointer dereferencing. The statement *xp = y; 104 CHAPTER 3. MACHINE-LEVEL REPRESENTATION OF C PROGRAMS
does the reverse—it writes the value of parameter y at the location designated by xp. This also a form of pointer dereferencing (and hence the operator *), but it indicates a write operation since it is on the left hand side of the assignment statement. Here is an example of exchange in action: int a = 4; int b = exchange(&a, 3); printf("a = %d, b...
View Full Document