libmiasmaelf.

libmiasmaelf é uma biblioteca para gerar arquivos de objeto relocatable que estão em conformidade com o formato ELF.
Baixe Agora

libmiasmaelf. Classificação e resumo

Propaganda

  • Rating:
  • Licença:
  • GPL
  • Preço:
  • FREE
  • Nome do editor:
  • Hareesh Nagarajan
  • Site do editor:
  • http://puggy.symonds.net/~hareesh/kidwai/

libmiasmaelf. Tag


libmiasmaelf. Descrição

libmiASMaELF é uma biblioteca para geração de arquivos de objetos relocáveis que estejam em conformidade com o formato ELF. libmiASMaELF é uma biblioteca para geração de arquivos de objetos relocáveis que estejam em conformidade com a biblioteca ELF format.libmiASMaELF não tem hierarquia de classes complexa, portanto, é extemamente fácil de usar, ao contrário da maioria outras bibliotecas que realizar a mesma tarefa. Documentação e exemplos são fornecidos para demonstrar o uso da biblioteca. Como se usar a biblioteca? / * hello.c * / # include #include #include "libmiasmaelf.h "int main (void) {text char [] = { 'XB8', 'x04', 'x00', 'x00', 'x00', // mov eax, 4 'xbb', 'x01', 'x00' 'x00', 'x00', // ebx mov, 1 'xB9', 'x00', 'x00', 'x00', 'x00', // mov ecx, myVariable 'Xba', 'X0e', ' x00' , 'x00', 'x00', // mov edx, 14 'XCD', 'x80', // int 0x80 'XB8', 'x01', 'x00', 'x00', 'x00', / / mov eax, 1 'XCD', 'X80' // int 0x80}; dados char [] = { 'x48', 'x65', 'x6C', 'x6C', 'x6F', 'X2C', 'X20', 'x57', 'x6F', 'x 72', 'x6C', 'x64', 'x21', 'x0A'}; //Olá Mundo! vector vtext (texto , texto ); vector vData (dados , de dados ); miasmaELF obj; obj.InitializeELFHeader (); obj.InitializeSymbolTable (); obj.AddNewSection (, SHT_STRTAB, 0,0,0,0,0,0 "shstrtab."); obj.AddNewSection ( "texto", SHT_PROGBITS, 6,0,0,0,16,0); obj.AddNewSection (, SHT_PROGBITS, 3,0,0,0,16,0 "de dados."); obj.AddNewSection (, SHT_SYMTAB, 0,0, obj.GetSectionIndexOfType (SHT_STRTAB, ".strtab"), 0, 4, sizeof (Elf32_Sym) "symtab."); obj.AddNewSection (, SHT_REL, 0,0, obj.GetSectionIndexOfType (SHT_SYMTAB), obj.GetSectionIndexOfType (SHT_PROGBITS, ".text"), 4, sizeof (Elf32_Rel) "rel.text."); obj.AddContents (vtext, obj.GetSectionIndexOfType (SHT_PROGBITS, "texto.")); obj.AddContents (vData, obj.GetSectionIndexOfType (SHT_PROGBITS, "dados.")); obj.AddSymbol ( "_ começar", 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.AddRelocationEntry (11, obj.ReturnSymbolIndex ( "myVariable"), R_386_RELATIVE, obj.GetSectionIndexOfType (SHT_REL, ".rel.text")); obj.PrepareFile (); obj.WriteFile ( "hello.o"); } A biblioteca faz uso extensivo de vetores - uma estrutura de dados que é uma parte da Standard Template Library. Primeiro criamos os equivalentes em linguagem de máquina de todas as instruções e preencher os vetores em conformidade. Em seguida, inicializar o ELFHeader, o SymbolTable Inicialização segue em seguida. Isso é feito depois de definir um objecto do tipo miasmaELF. Em seguida, ir para inicializar seções individuais. A função obj.GetSectionIndexOfType (SHT_PROGBITS, ".text") é utilizado quando se deseja obter o SectionIndex de uma determinada secção. Encontramos esta função ajuda muito na ligação entre as várias estruturas que são descritos no elf.h. Aqui, ele é usado na construção do cabeçalho da seção de uma seção particular. É imperativo que o usuário da biblioteca deve ter uma idéia geral das várias estruturas que estão envolvidos. Nós então invocar obj.AddContents (vtext, obj.GetSectionIndexOfType (SHT_PROGBITS, "texto.")); que adicionar o conteúdo para a seção de texto. O 2º argumento para AddContents é a seção que estamos nos referindo. Neste caso, é a seção .text, e do nosso exemplo, o Índice = 3. Nós empregamos uma técnica semelhante para adicionar símbolos e inscrições Relocation. Para escrever, finalmente, a um arquivo deve primeiro deve prepará-lo invocando a função PrepareFile (...), e só então invocar WriteFile (FileName) Para compilar hello.c é preciso vinculá-lo com libmiasmaelf.o


libmiasmaelf. Software Relacionado

Rspell.

RSPELL é uma biblioteca de software que pode ser vinculada ao seu programa para fornecer rotinas de verificação ortográfica. ...

135

Download

Libdnsres.

libdnsres fornece uma API sem bloqueio, seguro de thread para resolver nomes de DNS. ...

124

Download

SmartSplitter.

SmartSplitter é uma classe de divisor de controle de código aberto de plataforma cruzada para RealBasic 5 ou superior. ...

155

Download