Edinho Sousa Posted November 19, 2020 at 06:07 PM Share Posted November 19, 2020 at 06:07 PM Ola me chamo Edinho! Bom a alguns messes venho estudando por conta própria "teoria dos compiladores". E venho fazendo alguns projetos de teste, mas ai surgiu uma duvida: como faço para gerar o codigo executável?(arquivos .exe), pois ate agora uso uma "maquina virtual" ou o compilador gera um codigo assembly onde uso o nasm para gerar o executável. Então queria saber como criar tais arquivos sem precisar do nasm, porque se enviar o projeto para meu amigo e ele nao tiver o nasm em seu computador nao poderar compilar o programa. Essa é minha dúvida alguém pode me ajudar com link, videos ou livros sobre. Link to comment Share on other sites More sharing options...
Fernando Mercês Posted November 20, 2020 at 05:36 PM Share Posted November 20, 2020 at 05:36 PM Oi Edinho, tudo bem? Não tenho nenhuma referência específica, mas acho que consigo citar alguns termos para ajudar na sua busca. Acontece que os compiladores geram diferentes formatos de executável. Para Windows, normalmente é PE. Para Linux, normalmente é ELF. Mas existem vários outros. O nasm suporta uma longa lista (na opção -f). Você vai ter que escolher qual formato seu compilador vai gerar primeiro. Mesmo que queira gerar vários, vai ter que começar por um. Como via de regra, você vai escrever um arquivo em disco contendo: Cabeçalho do formato específico. Seção de código. Seção de dados. Mas este é um resumo beeeem de longe. Dependendo do formato, você vai ter que lidar com muita coisa, principalmente na linkedição. Alguns links Tutorial do @Leandro Fróes sobre o formato PE: Parte do código do nasm que gera o PE - https://github.com/netwide-assembler/nasm/blob/master/output/outcoff.c Abraço e boa sorte! Link to comment Share on other sites More sharing options...
Edinho Sousa Posted November 20, 2020 at 08:56 PM Author Share Posted November 20, 2020 at 08:56 PM Ta muito obrigado! Link to comment Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.