delorie.com/djgpp/bugs/show.cgi   search  
Bug 000106

When Created: 08/14/1996 15:51:27
Against DJGPP version: 2.00
By whom: jrubin@bix.com
Abstract: Insufficient section alignment onf 486's and above
When gcc is used with -m486, the generated assembly code uses
.align 4 (16 byte alignment) before branch targets, but
the compiled image has only 4 byte alignment.
  This disables cache optimizations on all processors above the 386.
  This is a significant performance loss!

Note added: 11/08/1996 08:48:01
By whom: nighttiger@dmidnight.ncdl.com
First of all, only the 486 requires 16 byte alignment for code sections.  The
Pentium doesn't require 16 byte alignment for cache optimization.

Second, .align is not necessarily 'supposed' to align to 2^xx bytes.  If you
look at the as documentation, you'll find that the actual alignment amount
varies from system to system.  If you want guaranteed 16 byte alignment, you
should use .balign 16.

I do agree that sections should be aligned at 16 byte boundries however.
I wouldn't know how to change this however and it isn't all that important to me
at this point.

Closed on 04/13/1999 08:00:36: Binutils problem. The alignment is improved in v2.02.
By whom: eliz@is.elta.co.il



  webmaster     delorie software   privacy  
  Copyright © 2010   by DJ Delorie     Updated Jul 2010