
Buckminster
(usa Debian)
Enviado em 28/11/2013 - 13:09h
marceloiaverafa escreveu:
Olá amigos, fiquei sabendo em outro tópico que o linux possui partes em assembly. Mais como isso aconteci? Como ele funciona? já que assembly não é portável. se alguém poder me explicar eu agradeço.
O GCC provê um construtor especial, asm, para inserir instrucões de linguagem de montagem em C.
Como a maioria dos processadores mais usuais hoje em dia são x86, o Assembly utilizado é para x86.
O código Assembly fica embutido no código em C.
Por exemplo, o Kernel Linux tem instruções para diversas arquiteturas, instruções estas separadas em arquivos para cada arquitetura. No momento da compilação o Kernel verifica qual a arquitetura da máquina, se não for uma arquitetura compatível dará erro.
Por isso também que existem distribuições Linux para cada arquitetura de máquina.
No caso específico do Kernel, ele verifica a arquitetura da máquina e chama o arquivo correspondente (x86, PowerPC, etc).
Para as ocasiões em que os programadores precisam usar instruções Assembly em seus programas, a coleção de compiladores GNU (GNU Compiler Collection) permite aos programadores usar instruções em Assembly, independente da arquitetura das máquinas.
Contudo, se você for fazer um programa em C, por exemplo, e usar código Assembly, logicamente este programa será utilizado em um sistema já instalado em uma determinada arquitetura, então o Assembly deverá ser obrigatoriamente para esta arquitetura.
É mais ou menos isso.
Já postei essa resposta no teu outro tópico também.