/* FILE:    peek.c 
   PURPOSE: look at gcc code generation solution
   METHOD:  compile the C and dump the x86 assembler
            32-bit and 64-bit versions
*/
 
void
peek(void) {
  double x=1, y=3, z;
  z = x+y;
}
 

/*
% cat /proc/version
Linux version 2.6.24.3-34.fc8 (mockbuild@xenbuilder1.fedora.redhat.com) 
(gcc version 4.1.2 20070925 (Red Hat 4.1.2-33)) #1 SMP 
Wed Mar 12 18:17:20 EDT 2008
 
% gcc -g -c -O0 peek.o
% objdump -d peek.o
 
peek.o:     file format elf32-i386
 
Disassembly of section .text:
 
00000000 <peek>:
   0:   55                      push   %ebp
   1:   89 e5                   mov    %esp,%ebp
   3:   83 ec 20                sub    $0x20,%esp
   6:   d9 e8                   fld1   
   8:   dd 5d e8                fstpl  -0x18(%ebp)
   b:   dd 05 00 00 00 00       fldl   0x0
  11:   dd 5d f0                fstpl  -0x10(%ebp)
  14:   dd 45 e8                fldl   -0x18(%ebp)
  17:   dc 45 f0                faddl  -0x10(%ebp)
  1a:   dd 5d f8                fstpl  -0x8(%ebp)
  1d:   c9                      leave  
  1e:   c3                      ret    
  
 
% cat /proc/version
Linux version 2.6.22.8-mw017 (root@bat1826glnxa64) (gcc version 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)) #1 SMP Tue Sep 25 13:15:57 EDT 2007
 
% gcc -g -c -O0 peek.o
% objdump -d peek.o
 
peek.o:     file format elf64-x86-64
 
Disassembly of section .text:
 
0000000000000000 <peek>:
   0:   55                      push   %rbp
   1:   48 89 e5                mov    %rsp,%rbp
   4:   48 b8 00 00 00 00 00    mov    $0x3ff0000000000000,%rax
   b:   00 f0 3f
   e:   48 89 45 e8             mov    %rax,0xffffffffffffffe8(%rbp)
  12:   48 b8 00 00 00 00 00    mov    $0x4008000000000000,%rax
  19:   00 08 40
  1c:   48 89 45 f0             mov    %rax,0xfffffffffffffff0(%rbp)
  20:   66 0f 12 45 e8          movlpd 0xffffffffffffffe8(%rbp),%xmm0
  25:   f2 0f 58 45 f0          addsd  0xfffffffffffffff0(%rbp),%xmm0
  2a:   f2 0f 11 45 f8          movsd  %xmm0,0xfffffffffffffff8(%rbp)
  2f:   c9                      leaveq
  30:   c3                      retq
 
*/