title: IA-32 x86 data alignment
body: <p>Everything i can find just told me that i should align because it can be more efficient, but i can't find what's the hw issue why i should do that on IA-32. It is because the address bus needs address divisible by 4 for instance? Or because the RAM can give only aligned data without performance loss? Or?</p>
  
  <p><a href="http://www-inst.eecs.berkeley.edu/~cs164/sp05/ia32-refs/ia32-chapter-two.pdf" rel="nofollow">http://www-inst.eecs.berkeley.edu/~cs164/sp05/ia32-refs/ia32-chapter-two.pdf</a></p>
  
  <blockquote>
    <p>On the ia32, there is no requirement for data alignment. A program
    will work correctly with four-byte integers regardless of where they
    are located. For example, a four byte integer could be located at
    addresses 1,2,3,4. <strong>However, the machine executes much more efficiently
    if, for example, four byte integers are on a four byte boundary, so a
    better choice of starting address for a four byte integer is an
    address that is a multiple of 4.</strong></p>
  </blockquote>