Multiplicar y sumar en ensamblador x86 y x86_64

Hola,
Por cuestiones de compatibilidad, cuando uso matrices en C las almaceno en un array unidimensional. Cuando tengo que acceder a los elementos he de calcular la posición en el vector del elemento al que quiero acceder de la siguiente forma:

Si la matriz se almacena por filas: pos = filElem*colsMatriz+colElem
Si la matriz se almacena por columnas: pos = colElem*filsMatriz+filElem

Como se puede ver, el cálculo de cada posición implica una multiplicación y una suma (de enteros sin signo de tipo size_t).
No sé nada de ensamblador, pero pregunto: ¿se mejoraría significativamente en eficiencia si la multiplicación y la suma se hiciesen en ensamblador? Supongo que, usando gcc, se puede incrustar código ensamblador en un programa en C a través de la función asm(). ¿Alguien puede poner un ejemplo?

Gracias

Gracias por contestar.
Mi consulta no persigue como fin último (aunque si alguien lo hace será bienvenido) obtener código para resolver el problema. Más bien pregunto, ya que nunca he trabajado en ensamblador, si se obtendría alguna ganancia de velocidad al sustituir una operación del tipo a*b+c (sobre enteros sin signo) de lenguaje C a su correspondiente traducción en ensamblador.

jgpallero escribió:

Gracias por contestar.
Mi consulta no persigue como fin último (aunque si alguien lo hace será bienvenido) obtener código para resolver el problema. Más bien pregunto, ya que nunca he trabajado en ensamblador, si se obtendría alguna ganancia de velocidad al sustituir una operación del tipo a*b+c (sobre enteros sin signo) de lenguaje C a su correspondiente traducción en ensamblador.

Se supone que si pero con operaciones tan simples no creo que se note.