Manejo y uso del compilador gcc
Martin Candurra (astor) disponible en hackemate.com.ar martincad@yahoo.com Lunes, 20 de Octubre de 2003, a las 14:46:00 ART
Con este humilde art´ ıculo espero facilitar la comprensi´n del Inline Assembly en Gcc. Si bien existen varios o documentos escritos sobre el tema (incluido el manual oficial de Gcc) espero lograr un enfoque diferente con este texto. Mi parteest´ cumplida si alguien, leyendo este art´ a ıculo, logra mezclar lenguaje C y ensamblador con facilidad.
Contents
1 Introducci´n o 1.1 1.2 1.3 1.4 1.5 Que es y para que sirve el inline assembly ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . Por qu´ otro texto de Inline Assembly ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . e Requisitos b´sicos . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . a Aclaraci´n o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 2 2 2 2 3 3 3 4 4 5 5 5 6 6 6 7 7 8 9 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 9 10
Copyright y reproducci´n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . o2 Inline Assembly 2.1 2.2 2.3 Ejemplo muy simple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Otro ejemplo sencillo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Ejemplos m´s utiles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . a ´
3 Extended Inline Assembly 3.1 3.2 3.3 3.4 3.5 3.63.7 3.8 Introducci´n o Ejemplo 1 Ejemplo 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ..
Modificadores Ejemplo 3 Ejemplo 4
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Modificador ”r” Clobber List
. . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . .
4 Varios 4.1 4.2 Modificadores ’\n’ y ’\t’
Que es volatile ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5 Comentario final
1. Introducci´n o
2
6 Contacto
10
1
1.1
Introducci´n o
Que es y para que sirve el inline assembly ?
Existen muchos casos donde debemos utilizar en nuestro c´digo (enlenguaje C) un poco de assembly debido a o que queremos optimizar algunas lineas un poco m´s ”a mano”, o sencillamente necesitamos usar instrucciones a las cuales no poseen ning´n tipo de funci´n o macro asociada en C(por ejemplo LGDT, LTR, IRET, etc).Es u o en estos casos en los cuales es necesario recurrir al inline assembly (o ensamblado en linea). Esta herramienta que nos brinda el Gcc no s´loes muy util, si no que despu´s de acostumbrarse a su utilizaci´n termina siendo o ´ e o realmente c´moda o
1.2
Por qu´ otro texto de Inline Assembly ? e
Por la simple raz´n que cuando necesite aprender inline assembly considero me costo m´s de lo que hubiera o a querido. No encontre la cantidad de ejemplos que me hubiera gustado, y sent´ que esos textos estaban a otro ı nivel. Desde yaque con este humilde texto no pretendo brindar m´s inforci´n de la queda el manual de Gcc, si a o no que intentar´ ser lo mas claro posible, utilizando ejemplos sencillos, que cualquier novato entender´ Al e ıa. igual que a varios conocidos que tengo, me costo bastante entender ese t´ ıpico ejemplo de la multiplicaci´n o de n´meros via Inline Assembly que aprovecha la arquitectura super-escalar...
Regístrate para leer el documento completo.