When you pass structures by value and compile the code for a 64-bit environment, the structure is passed in registers rather than as a pointer to a copy if it is small enough. This process can cause problems if you try to pass structures between C code and handwritten assembly code.
Floating-point parameters work in a similar fashion: some floating-point values passed by value are passed in floating-point registers.