FdT: Recomendación FEDORA.

Daniel Serpell daniel_serpell en yahoo.com
Sab Oct 16 02:06:45 CLST 2004


El Fri, Oct 15, 2004 at 07:20:35PM -0300, rodrigo ahumada escribio:
> >From: Alvaro Herrera <alvherre en dcc.uchile.cl>
> >
> >Si quieres un ejemplo practico, toma un programa sencillo y compilalo
> >con -Os, -O0, -O1, -O2, y sin ningun -O.  Y compara las diferencias del
> >assembler generado (o mide el tiempo de ejecucion, compara los profiles
> >que entrega algo como gprof, etc).
> 
> no entiendo mucho el estilo at&t (que es fmuls,flds?),

Supongo que te refieres a la sintaxis de assemlber AT&T que usa el
assembler de GNU. Puedes generar un código assembler con sintaxis
tipo Intel agregando "-masm=intel" a la línea de comandos de GCC.

Por otra parte, fmuls y flds son instrucciones estándares de
punto flotante, y se llaman igual que en los libros:
http://weblogs.asp.net/oldnewthing/archive/2003/12/23/45481.aspx
(muy buenos, e Intel los manda gratis si los pides).

> pero por ejemplo en 
> el caso de los ciclos sobre arreglos, en c uno explicitamente dice que vaya 
> recorriendo y operando de uno en uno, y el compilador no puede suponer algo
> y tiene que atenerse a lo que dice el codigo...

¿quién te dice que el compilador no puede analizar eso? Cualquier
compilador decente ya lo hace. 

Te recomiendo experimentar más con el código generado por los
compiladores en los casos simples antes de suponer demasiado.

> no se pueden usar por
> ejemplo algunas instrucciones multimedia para acelerar la cosa, se
> necesitarian nuevas formas(?) como "for-each" de C#

El compilador de intel (icc) vectoriza los lazos en forma autónoma,
y las nuevas versiones de GCC podrían ser capaces de hacerlo
también (es más difícil en GCC ya que la solución debe ser genérica,
no sólo para x86).

        Daniel.



Más información sobre la lista de distribución Linux