libmiasmaelf

libmiasmaelf es una biblioteca para generar archivos de objetos reubicables que se ajustan al formato ELF.
Descargar ahora

libmiasmaelf Clasificación y resumen

Anuncio publicitario

  • Rating:
  • Licencia:
  • GPL
  • Precio:
  • FREE
  • Nombre del editor:
  • Hareesh Nagarajan
  • Sitio web del editor:
  • http://puggy.symonds.net/~hareesh/kidwai/

libmiasmaelf Etiquetas


libmiasmaelf Descripción

libmiasmaelf es una biblioteca para generar archivos de objetos reubicables que se ajustan al formato ELF. LibmiasMaelf es una biblioteca para generar archivos de objetos reubicables que se ajustan a la biblioteca Format.LibmiasAlfelf de Elf, no tiene una jerarquía de clase compleja, por lo que es extremadamente fácil de usar, a diferencia de la mayoría de las otras bibliotecas que realizan la misma tarea. Se proporcionan documentación y ejemplos para demostrar el uso de la biblioteca. ¿Cómo se usa la biblioteca? / * hola.c * / # incluye #include #include "libmiasmaelf.h "INT Main (Void) {Char Text [] = {'XB8', 'X04', 'X00', 'X00', 'X00', // MOV EAX, 4 'XBB', 'X01', 'X00' , 'X00', 'X00', // MOV EBX, 1 'XB9', 'X00', 'X00', 'X00', 'X00', 'X00', 'X00', // MOV ECX, MyVariable 'XBA', 'X0E', ' X00 ',' X00 ',' X00 ', // MOV EDX, 14' XCD ',' x80 ',' x80 ', // int 0x80' xb8 ',' x01 ',' x00 ',' x00 ',' x00 ', / / / MOV EAX, 1 'XCD', 'x80' // int 0x80}; datos [] = {'x48', 'x65', 'x6c', 'x6c', 'x6c', 'x6f', 'x2c', 'x20', 'x57', 'x6f', 'x6f', 'x72', 'x6c', 'x6c', 'x64', 'x21', 'x0a'}; //¡Hola Mundo! vector vtext (texto , texto ); vector vdata (datos , datos ); miasmaelf obj; obj.initializeeFeer (); obj.initializeymboltable (); obj.addNewsección (". Shstrtab", sht_strtab, 0,0,0,0,0); obj.addnewsection (". texto", sht_progbits, 6,0,0,0,16,0); Obj.AddNewsección (". Datos", SHT_PROGBITS, 3,0,0,0,16,0); obj.addnewsection (". Symtab", sht_symtab, 0,0, obj.getsectionIndexoftype (sht_strtab, ".strtab"), 0, 4, sizeof (elf32_sym)); obj.addnewsection (". Rel.Text", sht_rel, 0,0, obj.getsectionIndexoftype (sht_symtab), obj.getsectionIndexoftype (sht_progbits, ".text"), 4, sizeof (elf32_rel)); obj.addcontents (vtext, obj.getsectionIndexoftype (sht_progbits, ". Texto")); obj.addcontents (vdata, obj.getsectionIndexoftype (sht_progbits, ". Datos")); obj.addsymbol ("_ start", 0,0, stb_weak, stt_func, obj.getsectionindexoftype (sht_progbits, ".text")); obj.addsymbol ("MyVariable", 0,0, stb_global, stt_object, obj.getsectionIndexoftype (sht_progbits, ".data")); obj.AdrelocationEntry (11, obj.returnsymbolindex ("MyVariable"), R_386_Relativo, obj.getsectionIndexoftype (sht_rel, ".rel.text")); obj.preparefile (); obj.writefile ("hola.o"); } La biblioteca realiza un uso extensivo de vectores: una estructura de datos que forma parte de la biblioteca de plantillas estándar. Primero creamos los equivalentes de lenguaje de la máquina de cada instrucción y rellamos los vectores en consecuencia. Luego inicializamos el ElfHeader, la inicialización de la mesa de símbolo sigue a continuación. Esto se hace después de definir un objeto de tipo MIASMAELF. Luego continuamos inicializamos secciones individuales. La función obj.getsectionIndexoftype (sht_progbits, ".Text") se usa cuando uno quiere obtener la secciónIdeja de una sección determinada. Encontramos que esta función ayuda en gran medida a la vinculación de las diversas estructuras que se describen en Elf.H. Aquí, se utiliza en la construcción del encabezado de la sección de una sección en particular. Es imperativo que el usuario de la biblioteca debe tener una idea general de las diversas estructuras involucradas. Luego invocamos obj.addcontents (vtext, obj.getsectionIndexoftype (sht_progbits, ". Texto")); que agregue los contenidos a la sección de texto. El segundo argumento a Addcontents es la sección a la que nos referimos. En este caso, es la sección .text, y de nuestro ejemplo, el índice = 3. Empleamos una técnica similar para agregar símbolos y entradas de reubicación. Para finalmente, escribir el archivo, primero debe prepararlo invocando la función PrepareFile (...), y solo luego invoca el archivo de escritura (nombre de archivo) para compilar hello.c, debe vincularlo con libmiasmaelf.o


libmiasmaelf Software relacionado

Rspell

RSPell es una biblioteca de software que se puede vincular a su programa para proporcionar rutinas de corrección de hechizos. ...

135

Descargar

Libdnsres

LIBDNSRES proporciona una API sin bloqueo, Safe Safe para resolver los nombres DNS. ...

124

Descargar

SmartSplitter

SmartSplitter es una clase de divisor de control de código abierto multiplataforma para RealBasic 5 o más. ...

155

Descargar