É possível contruir um Sistema Operacional do zero sozinho

1. É possível contruir um Sistema Operacional do zero sozinho

Nelson Cole
nelsoncole

(usa Ubuntu)

Enviado em 24/06/2017 - 05:18h

Antes se realmente alguém perguntasse Nelson é realmente possível construir um Sistema Operacional do zero sozinho? É óbvio que a resposta seria negativa. Mas hoje em parte eu diria que sim é realmente possível e qualquer programador, conhecedor de linguagens de baixo e médio nível, poderia construir um. As ferramentas de programação estão a cada vez mais poderosas no casso do gcc, tende a ser uma linguagem mais próxima ao Hardware, até mesmo é possível contruir um OS em 90% de C.

Bom isto não é exatamente um bootloader, porque não carrega nada para a memória. Mais é por onde todo mundo começa.



bits 16 ; usaremos endereçamento de 16-Bits 
org 0x7c00 ; o nosso offset 
jmp short _start ; salta para _start

msg1 db "Hello, World!",0 ;nossa string

_start: 
cli ; Desablita interrupções 
xor ax, ax ; zera ax 
mov ds, ax
mov es, ax 
mov ss, ax 
mov sp, 0x200 ;512 bytes de pilha 
sti ; Hablita interrupções

mov ax, 0x0003 ; define modo vídeo texto 80x25 
int 0x10 ; pedido de interrupção de video

mov si, msg1 ; si aponta para nossa string 
call puts ; chamando a função imprime string

xor ax, ax ; espera uma tecla 
int 0x16 ; pedido de interrupção de teclado 
int 0x19 ; pedido de interrupção de BIOS reboot

puts: 
pusha ; pões todos os registradores de uso geral na pilha
cld ; flag de direição 
.next: 
lodsb ; a cada loop pega volor em si e coloca em al, incrementando si 
cmp al, 0 
je .end 
mov ah, 0x0e ; função BIOS TTY 
int 0x10 
jmp .next 
.end: 
ret ; retorna 
popa ; desempilha todo os registradores de uso geral

times 510 - ($-$$) db 0 
dw 0xaa55 ; Assinatura de inicialização






Para complar vai quer fazer assim:
$ nasm -f bin exemplo.asm -o exemplo.bin

E para testar:
$ qemu-system-i386 -drive file=exemplo.bin


  


2. Re: É possível contruir um Sistema Operacional do zero sozinho

Perfil removido
removido

(usa Nenhuma)

Enviado em 24/06/2017 - 12:05h

Como eu rodo ele no VirtualBox?


3. Re: É possível contruir um Sistema Operacional do zero sozinho

Nelson Cole
nelsoncole

(usa Ubuntu)

Enviado em 25/06/2017 - 14:27h

listeiro_037 escreveu:

Como eu rodo ele no VirtualBox?



Terás que complar o programa de outro modo, como:

$ nasm -f bin exemplo.asm -o exemplo.img

Ou ainda deres um $ cat exemplo.bin > exemplo.img

E depois colocar a imagem de disquete no VBox




4. Legal :D

Lucas Silva
Ashura

(usa Ubuntu)

Enviado em 10/07/2017 - 23:28h

:D
I Love Programming!


5. Re: É possível contruir um Sistema Operacional do zero sozinho

Perfil removido
removido

(usa Nenhuma)

Enviado em 10/07/2017 - 23:36h

Rodei com QEMU. Abriu uma janela com "Hello, World!". Deu crash e mensagem de erro. Esperei que apenas travasse.

qemu-system-i386 --drive file=exemplo-so.bin
WARNING: Image format was not specified for 'exemplo-so.bin' and probing guessed raw.
Automatically detecting the format is dangerous for raw images, write operations on block 0 will be restricted.
Specify the 'raw' format explicitly to remove the restrictions.
qemu-system-i386: Trying to execute code outside RAM or ROM at 0x000a0000
This usually means one of the following happened:

(1) You told QEMU to execute a kernel for the wrong machine type, and it crashed on startup (eg trying to run a raspberry pi kernel on a versatilepb QEMU machine)
(2) You didn't give QEMU a kernel or BIOS filename at all, and QEMU executed a ROM full of no-op instructions until it fell off the end
(3) Your guest kernel has a bug and crashed by jumping off into nowhere

This is almost always one of the first two, so check your command line and that you are using the right type of kernel for this machine.
If you think option (3) is likely then you can try debugging your guest with the -d debug options; in particular -d guest_errors will cause the log to include a dump of the guest register state at this point.

Execution cannot continue; stopping here.







Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts