pedrotuga Posted May 26, 2008 at 04:53 PM Report Share #187608 Posted May 26, 2008 at 04:53 PM Estava capaz de instalar um software qq de vistualizacao e experimentar programar ao nivel da maquina. Deve ter a sua piada. C e C++ sao duas opcoes, que outras linguagens permitem isto? Eu prefiria um linguagem mais simplificada para ser sincero. Link to comment Share on other sites More sharing options...
Warrior Posted May 26, 2008 at 04:56 PM Report Share #187609 Posted May 26, 2008 at 04:56 PM Porque não aprendes logo uma linguagem de baixo nível? Eu percebi que a ideia era ver as transformações sofridas pela compilação, mas provavelmente ficavas com conhecimentos mais sólidos se mergulhasses mesmo nesse mundo. Há linguagens relativamente acessíveis de baixo nível, como por exemplo MIPS. Link to comment Share on other sites More sharing options...
pedrotuga Posted May 26, 2008 at 05:20 PM Author Report Share #187616 Posted May 26, 2008 at 05:20 PM Eu sou de engenharia electrotécnica, já por aí passei pelo assembly, nasm, um pouco de C, etc etc para programar processadores. Era um pouco secante porque as cadeiras eram mal dadas. Eu curtia interagir com um computador enquanto máquina, e não com um sistema operativo a servir de vela, só naquela de experimentar. Mas não dou muito valor a escrever coisas byte a byte. Link to comment Share on other sites More sharing options...
David Pintassilgo Posted May 26, 2008 at 05:25 PM Report Share #187620 Posted May 26, 2008 at 05:25 PM Eu por acaso gostava era de programar em python para os microcontroladores em vez de user C. Ainda não me meti a procurar, mas breve entro nessa 😉 cool stuffs to check. http://blog.zxcoders.com// Link to comment Share on other sites More sharing options...
pedrotuga Posted May 26, 2008 at 05:30 PM Author Report Share #187623 Posted May 26, 2008 at 05:30 PM Eu por acaso gostava era de programar em python para os microcontroladores em vez de user C. Ainda não me meti a procurar, mas breve entro nessa 😉 Há alguma forma de compilar python para código máquina? Python, perl, ruby, lua, tcl, pike...qq coisa do estilo me serviria às mil maravilhas. Link to comment Share on other sites More sharing options...
David Pintassilgo Posted May 26, 2008 at 05:33 PM Report Share #187626 Posted May 26, 2008 at 05:33 PM Há alguma forma de compilar python para código máquina? Espero que sim! 😄 😉 cool stuffs to check. http://blog.zxcoders.com// Link to comment Share on other sites More sharing options...
Triton Posted May 26, 2008 at 05:53 PM Report Share #187630 Posted May 26, 2008 at 05:53 PM Atenção que Python, Java, C#, etc., também compilam para código máquina utilizando JIT, mas a compilação é feita em run-time, o que permite um maior leque de optimizações de código utilizando funcionalidades específicas do processador. Além do C / C++, tens mais opções que compilam directamente para código máqiuina como D (uma linguagem catita) e Objective-C. <3 life Link to comment Share on other sites More sharing options...
pedrotuga Posted May 26, 2008 at 06:25 PM Author Report Share #187643 Posted May 26, 2008 at 06:25 PM Compilam para código máquina no run time... mmm... estás-me a fazer pensar... 😄 ... não há nenhuma forma de congelar esse processo? O py2exe acho que é precisamente isso que faz. Mas não me serve porque tem dependencias ao nível do sistema operativo 😉 Link to comment Share on other sites More sharing options...
Triton Posted May 26, 2008 at 06:47 PM Report Share #187649 Posted May 26, 2008 at 06:47 PM Compilam para código máquina no run time... mmm... estás-me a fazer pensar... 😄 ... não há nenhuma forma de congelar esse processo? O py2exe acho que é precisamente isso que faz. Mas não me serve porque tem dependencias ao nível do sistema operativo 😉 Epa estava a falar do Psyco, um plugin de JIT para o Python que acelera bue a execução do código. Penso que o py2exe não compila para código máquina, apenas cria um executável, mas continuas dependente do python25.dll. Quanto ao Java e o C# já trazem sistemas JIT de origem. <3 life Link to comment Share on other sites More sharing options...
Betovsky Posted May 26, 2008 at 07:57 PM Report Share #187671 Posted May 26, 2008 at 07:57 PM Haskell compila para código máquina 😉 "Give a man a fish and he will eat for a day; Teach a man to fish and he will eat for a lifetime. The moral? READ THE MANUAL !" Sign on a computer system consultant's desk Link to comment Share on other sites More sharing options...
Rui Carlos Posted May 26, 2008 at 08:01 PM Report Share #187673 Posted May 26, 2008 at 08:01 PM Penso que o PERL também compila para código máquina (comando perlcc). Com o gcj também é possível compilar Java para código máquina. Rui Carlos Gonçalves Link to comment Share on other sites More sharing options...
carlosmp70 Posted June 1, 2008 at 09:58 PM Report Share #189061 Posted June 1, 2008 at 09:58 PM A linguagem Pascal compila para codigo máquina. Pode usar o freepascal, que existe compila codigo para diversas plataformas e sistemas operativos. Link to comment Share on other sites More sharing options...
pedrotuga Posted June 1, 2008 at 10:45 PM Author Report Share #189069 Posted June 1, 2008 at 10:45 PM Ok, vou reformular a pergunta: Que opções existem para escrever um sistema operativo para por exemplo para a arquitectura i386? Pelo que andei a ler, só mesmo C, ou assembly 😛 Link to comment Share on other sites More sharing options...
Betovsky Posted June 1, 2008 at 11:00 PM Report Share #189071 Posted June 1, 2008 at 11:00 PM Penso que qualquer linguagem serve, desde que possua um compilador para código máquina. Existe variadíssimos sistemas operativos em diversas linguagens. Por exemplo, tens o House em Haskell. "Give a man a fish and he will eat for a day; Teach a man to fish and he will eat for a lifetime. The moral? READ THE MANUAL !" Sign on a computer system consultant's desk Link to comment Share on other sites More sharing options...
Knitter Posted June 2, 2008 at 11:31 AM Report Share #189115 Posted June 2, 2008 at 11:31 AM Pelo que andei a ler, só mesmo C, ou assembly 😛 Tens de ler mais 😛 , JNode feito em Java, Haiku feito em C++, são dois exemplos de linguagens além das que mencionaste. Para não falar do que o Betovsky indicou. Podes escrever um sistema operativo em vários linguagens, os desafios serão quase sempre os mesmos, sendo que poderás ter alguns específicos da linguagem, como será o caso de um feito em Java em que poderás ter o desafio de como iniciar o SO se quiseres usar uma JVM. De resto, linguagens para SOs é o que não falta. www.sergiolopes.eu Link to comment Share on other sites More sharing options...
pedrotuga Posted June 5, 2008 at 03:06 PM Author Report Share #189642 Posted June 5, 2008 at 03:06 PM Quando digo C estou a referir-me tambem ao C++, o windows por exemplo acho que é escrito maioritáriamente e C++. Mas ficam umas perguntas que me intrigam: Esses sistemas operativos são compatíveis com um PC normal ou correm apoiados noutra camada de abstracção? Por exemplo, esse que é escrito em Java, corre num PC ou numa máquina de Java? É que são coisas completamente diferentes. Alguem me pode dar um exemplo de documentação em como fazer um sistema operativo super básico com um sistema de boot, que corra num PC e que não recorra a C/C++ ou assembly? Link to comment Share on other sites More sharing options...
Rui Carlos Posted June 5, 2008 at 03:09 PM Report Share #189643 Posted June 5, 2008 at 03:09 PM http://programatica.cs.pdx.edu/House/ Pelo que percebi, este corre sozinho... Rui Carlos Gonçalves Link to comment Share on other sites More sharing options...
Triton Posted June 5, 2008 at 03:29 PM Report Share #189645 Posted June 5, 2008 at 03:29 PM Alguem me pode dar um exemplo de documentação em como fazer um sistema operativo super básico com um sistema de boot, que corra num PC e que não recorra a C/C++ ou assembly? Qualquer sistema operativo vai ter sempre Assembly. Aqui tens um sistema super simples que eu fiz há uns tempos: http://code.google.com/p/flush/source/browse/trunk/kernel/ <3 life Link to comment Share on other sites More sharing options...
pedrotuga Posted June 5, 2008 at 07:08 PM Author Report Share #189674 Posted June 5, 2008 at 07:08 PM Qualquer sistema operativo vai ter sempre Assembly. Aqui tens um sistema super simples que eu fiz há uns tempos: http://code.google.com/p/flush/source/browse/trunk/kernel/ mmm parece-me um bom ponto de partida para eu começar a desbravar mato. Vamos então esmifrar isso. Onde é que está o código do boot? É o ficheiro start.S Tipo... o que eu ainda não percebi é o seguinte. Quando se liga o computador ele vai executar o código que está num endereço pré-definido (no início suponho eu) da unidade de memória externa definida na bios. Posto isto, como é que se instala um istema operativo, por exemplo, compilas esse código e depois como é que asseguras que a parte do boot está no endereço certo? Link to comment Share on other sites More sharing options...
Triton Posted June 5, 2008 at 07:25 PM Report Share #189682 Posted June 5, 2008 at 07:25 PM Posto isto, como é que se instala um istema operativo, por exemplo, compilas esse código e depois como é que asseguras que a parte do boot está no endereço certo? Eu neste caso aderi à especificação Multiboot, definida pela malta do GRUB (http://www.gnu.org/software/grub/manual/multiboot/multiboot.html). Ou seja, o GRUB vai chamar o ponto de entrada no meu código e passa várias estruturas, nomeadamente memory maps. Se tu quiseres também podes fazer o teu próprio bootloader, nem é assim tão difícil, mas a meu ver não é muito interessante. Basicamente o bootloader inicializa o processador, memória, etc, e passa o controlo para o teu sistema operativo. Quando fazes boot pelo disco, penso que ele vai buscar a informação ao MBR, e executa a partição assinalada com a flag boot. Quanto a CD-ROMs, eu faço boot utilizando a especificação El-Torito, utilizando uma imagem que vem com a distribuição do GRUB. Acho que não disse nenhum disparate, até porque já não mexo nisto há uns meses. Qualquer dúvida diz. <3 life Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now