title: c++ passing arguments by reference and pointer
body: <p>in c++  </p>
  
  <pre><code>class bar
  {
      int i;
      char b;
      float d;
  };
  
  void foo ( bar arg );
  void foo ( bar &amp;arg );
  void foo ( bar *arg );
  </code></pre>
  
  <p>this is a sample class/struct and functions<br>
  i have some Qs  </p>
  
  <ul>
  <li>what's the difference between 1st and 2nd way of passing the argument in 'asm', size, speed ?  </li>
  <li>how the arguments are passed to the functions foo in each case ( in case of pointer i know the pointer is pushed on the stack )  </li>
  <li>when passing arguments, in terms of efficiency at ( speed, size, preferability ) which is better ?  </li>
  <li>what's the intel 'asm' syntax that corresponds each of the ways of passing arguments ?  </li>
  </ul>
  
  <p>i know what most say about "it doesn't matter on modern compilers and CPUs" but what if we're talking about Old CPUs or compilers?  </p>
  
  <p>thanks in advance</p>