Machine level representation of c programs our

Info iconThis preview shows page 1. Sign up to view the full content.

View Full Document Right Arrow Icon
This is the end of the preview. Sign up to access the rest of the document.

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

This note was uploaded on 09/02/2010 for the course ELECTRICAL 360 taught by Professor Schultz during the Spring '10 term at BYU.

Ask a homework question - tutors are online