<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Blog OSDevBrasil.net</title>
	
	<link>http://www.osdevbrasil.net/blog</link>
	<description>A primeira comunidade de OSDev do Brasil!</description>
	<pubDate>Mon, 13 Jul 2009 20:59:51 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.6.2</generator>
	<language>en</language>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/BlogOsdevbrasilnet" type="application/rss+xml" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><item>
		<title>Bona Fide OS Development</title>
		<link>http://feedproxy.google.com/~r/BlogOsdevbrasilnet/~3/OegwIlrpG6Q/</link>
		<comments>http://www.osdevbrasil.net/blog/bona-fide-os-development/#comments</comments>
		<pubDate>Mon, 13 Jul 2009 20:56:15 +0000</pubDate>
		<dc:creator>Mounter</dc:creator>
		
		<category><![CDATA[Novidades]]></category>

		<category><![CDATA[OSDev]]></category>

		<guid isPermaLink="false">http://www.osdevbrasil.net/blog/?p=22</guid>
		<description><![CDATA[Depois de mais de dois anos parado, o site da OSDever.net ou mais conhecido como Bona Fide OS Development está novamente recebendo novas atualizações.
Brenden (aka xsism), autor do site, começa expondo a notícia de seu retorno no site principal:
It&#8217;s been almost 2 years since anything has been updated here. All I could do in the [...]]]></description>
			<content:encoded><![CDATA[<p>Depois de mais de dois anos parado, o site da <a href="http://www.osdever.net/">OSDever.net</a> ou mais conhecido como <strong>Bona Fide OS Development </strong>está novamente recebendo novas atualizações.</p>
<p><strong>Brenden (aka xsism)</strong>, autor do site, começa expondo a notícia de seu retorno no site principal:</p>
<blockquote><p>It&#8217;s been almost 2 years since anything has been updated here. All I could do in the mean time is keep the server online and renew the domain once a year(or forget about it and have it go down and then grab the domain back from DNS pergatory before it became a squat site). Well, 2 years is flippin&#8217; rediculous.</p>
<p>I haven&#8217;t been talking to Cody at all; not in at least a year. I don&#8217;t know where he went, but I do see him in gtalk every so often. Either way, I am taking ownership back. I already pay for hosting and the domain, so I&#8217;m going to start maintaining the content, too.</p></blockquote>
<p>Que diz o seguinte em português:</p>
<blockquote><p>Se passou quase 2 anos desde que tudo foi atualizado aqui. Tudo que eu poderia fazer no tempo médio é manter o servidor online e renovar o domínio, uma vez por ano (ou esquecer-se e deixa-lo cair, em seguida, pagar o domínio de volta a partir do purgatório de DNS). Bem, 2 anos é muito ridículo.</p>
<p>Eu não fui falar com Cody ao todo; não em pelo menos um ano. Não sei onde ele foi, mas eu o vejo no gtalk tantas vezes. De qualquer maneira, estou tomando a posse de volta. Já para pagar hospedagem e do domínio, então eu vou começar a manutenção do conteúdo, também.</p></blockquote>
<p>Assim como acontece com a OSDever.net, a OSDev Brasil anda meio parada, mas estou para preparar mais algumas novidades  ao site. Assim que possível estaremos com mais conteúdo na área de desenvolvimento de sistemas operacionais.</p>
<img src="http://feeds.feedburner.com/~r/BlogOsdevbrasilnet/~4/OegwIlrpG6Q" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.osdevbrasil.net/blog/bona-fide-os-development/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.osdevbrasil.net/blog/bona-fide-os-development/</feedburner:origLink></item>
		<item>
		<title>Site de James Molloy</title>
		<link>http://feedproxy.google.com/~r/BlogOsdevbrasilnet/~3/I-evRu84BJk/</link>
		<comments>http://www.osdevbrasil.net/blog/site-de-james-molloy/#comments</comments>
		<pubDate>Fri, 13 Jun 2008 05:57:17 +0000</pubDate>
		<dc:creator>Mounter</dc:creator>
		
		<category><![CDATA[Sistemas Operacionais]]></category>

		<category><![CDATA[Tutoriais]]></category>

		<category><![CDATA[C++]]></category>

		<category><![CDATA[Clone Unix]]></category>

		<category><![CDATA[Tutorial]]></category>

		<guid isPermaLink="false">http://www.osdevbrasil.net/blog/?p=16</guid>
		<description><![CDATA[Como não poderia deixar de falar de sites de alguns projetos de sistemas operacionais, venho aqui anunciar o site de um engenheiro de software que anda trabalhando em um sistema operacional em C++ e ainda mostra em um tutorial como fazer seu próprio clone Unix.
Para quem quer conferir é só entrar no site do autor [...]]]></description>
			<content:encoded><![CDATA[<p>Como não poderia deixar de falar de sites de alguns projetos de sistemas operacionais, venho aqui anunciar o site de um engenheiro de software que anda trabalhando em um sistema operacional em C++ e ainda mostra em um tutorial como fazer seu próprio clone Unix.<span id="more-16"></span></p>
<p>Para quem quer conferir é só entrar no site do autor <a href="http://www.jamesmolloy.co.uk/">jamesmolloy.co.uk</a> e aproveitando este post estou anúnciando que em breve estarei lançando meu projeto de sistema operacional baseado no Uni*.</p>
<p>Até mais.</p>
<img src="http://feeds.feedburner.com/~r/BlogOsdevbrasilnet/~4/I-evRu84BJk" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.osdevbrasil.net/blog/site-de-james-molloy/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.osdevbrasil.net/blog/site-de-james-molloy/</feedburner:origLink></item>
		<item>
		<title>Código Livre - O Source Forge Brasileiro</title>
		<link>http://feedproxy.google.com/~r/BlogOsdevbrasilnet/~3/G1cY7jILe8E/</link>
		<comments>http://www.osdevbrasil.net/blog/codigo-livre-o-source-forge-brasileiro/#comments</comments>
		<pubDate>Thu, 12 Jun 2008 04:03:44 +0000</pubDate>
		<dc:creator>Mounter</dc:creator>
		
		<category><![CDATA[Geral]]></category>

		<category><![CDATA[Programação]]></category>

		<category><![CDATA[CVS]]></category>

		<category><![CDATA[hospedagem]]></category>

		<category><![CDATA[Open-Source]]></category>

		<category><![CDATA[Projetos]]></category>

		<category><![CDATA[Source Forge]]></category>

		<guid isPermaLink="false">http://www.osdevbrasil.net/blog/?p=15</guid>
		<description><![CDATA[Para quem buscava uma versão brasileira do mais famoso site de criação de projetos Open-Source, poderá visitar este site.
Nele você poderá encontrar CVS, listas, controle de bugs, quadro de mensagens/fóruns, gerenciador de tarefas, hospedagem, arquivamento permanente de arquivos, backups completos e administração totalmente baseado na web.
Para conferir você poderá entrar aqui: http://codigolivre.org.br/
]]></description>
			<content:encoded><![CDATA[<p>Para quem buscava uma versão brasileira do mais famoso site de criação de projetos Open-Source, poderá visitar este site.<span id="more-15"></span></p>
<p>Nele você poderá encontrar CVS, listas, controle de bugs, quadro de mensagens/fóruns, gerenciador de tarefas, hospedagem, arquivamento permanente de arquivos, backups completos e administração totalmente baseado na web.</p>
<p>Para conferir você poderá entrar aqui: <a href="http://codigolivre.org.br/">http://codigolivre.org.br/</a></p>
<img src="http://feeds.feedburner.com/~r/BlogOsdevbrasilnet/~4/G1cY7jILe8E" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.osdevbrasil.net/blog/codigo-livre-o-source-forge-brasileiro/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.osdevbrasil.net/blog/codigo-livre-o-source-forge-brasileiro/</feedburner:origLink></item>
		<item>
		<title>Plan9 - Um Unix melhorado</title>
		<link>http://feedproxy.google.com/~r/BlogOsdevbrasilnet/~3/NK7SzwAOIUw/</link>
		<comments>http://www.osdevbrasil.net/blog/plan9-um-unix-melhorado/#comments</comments>
		<pubDate>Thu, 12 Jun 2008 04:00:49 +0000</pubDate>
		<dc:creator>Mounter</dc:creator>
		
		<category><![CDATA[Geral]]></category>

		<category><![CDATA[Sistemas Operacionais]]></category>

		<category><![CDATA[Open-Source]]></category>

		<category><![CDATA[Plan9]]></category>

		<category><![CDATA[Unix]]></category>

		<guid isPermaLink="false">http://www.osdevbrasil.net/blog/?p=14</guid>
		<description><![CDATA[É um sistema operacional criado pela Bell Labs e sob licensa open-souce e para entenderem melhor o que estou dizendo estou tirando está descrição da Wikipédia:
O Plan 9 é um sistema operacional descendente do Unix e desenvolvido pela Bell Laboratories. Ele não é uma variante Unix, mas é muito parecido. O Plan 9 explora várias [...]]]></description>
			<content:encoded><![CDATA[<p>É um sistema operacional criado pela Bell Labs e sob licensa open-souce e para entenderem melhor o que estou dizendo estou tirando está descrição da <a href="http://pt.wikipedia.org/wiki/Plan_9">Wikipédia</a>:</p>
<blockquote><p>O <strong>Plan 9</strong> é um <a class="mw-redirect" title="Sistema operacional" href="http://pt.wikipedia.org/wiki/Sistema_operacional">sistema operacional</a> descendente do <a title="Unix" href="http://pt.wikipedia.org/wiki/Unix">Unix</a> e desenvolvido pela <a class="mw-redirect" title="Bell Laboratories" href="http://pt.wikipedia.org/wiki/Bell_Laboratories">Bell Laboratories</a>. Ele não é uma variante Unix, mas é muito parecido. O Plan 9 explora várias &#8220;simplificações&#8221; do modelo Unix original. Isso incrementa a experiência de usar e programar o sistema, notavelmente em ambientes multi-usuários distribuídos. O Plan 9 foi um projeto interno da Bell Labs por muitos anos, mas a distribuição pública feita em 1993, seguida por uma versão <em>encolhe-envolve</em> em <a title="1995" href="http://pt.wikipedia.org/wiki/1995">1995</a>. A Bell perdeu o interesse comercial no projeto após a <a title="Década de 90" href="http://pt.wikipedia.org/wiki/D%C3%A9cada_de_90">década de 90</a> e distribuiu uma terceira versão sobre um licença não-livre (porém com o <a title="Código fonte" href="http://pt.wikipedia.org/wiki/C%C3%B3digo_fonte">código fonte</a> disponível) em <a title="2000" href="http://pt.wikipedia.org/wiki/2000">2000</a>, e finalmente sobre uma nova licença <a class="mw-redirect" title="Open source" href="http://pt.wikipedia.org/wiki/Open_source">open source</a> em 2002. Esta é a quarta, e atual, edição do sistema.</p></blockquote>
<p><span id="more-14"></span></p>
<p>Como podem ver o Plan9 é um sistema descendente do Unix assim herdando algumas de suas características e dando novas funcionalidades a ele. E aí pronto para testar?</p>
<p>Link para site oficial: <a href="http://plan9.bell-labs.com/plan9/">http://plan9.bell-labs.com/plan9/</a></p>
<p>Abraços</p>
<img src="http://feeds.feedburner.com/~r/BlogOsdevbrasilnet/~4/NK7SzwAOIUw" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.osdevbrasil.net/blog/plan9-um-unix-melhorado/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.osdevbrasil.net/blog/plan9-um-unix-melhorado/</feedburner:origLink></item>
		<item>
		<title>Terabeauts - Linux Floppy Disk</title>
		<link>http://feedproxy.google.com/~r/BlogOsdevbrasilnet/~3/RYosoLXvVrw/</link>
		<comments>http://www.osdevbrasil.net/blog/terabeauts-linux-floppy-disk/#comments</comments>
		<pubDate>Wed, 11 Jun 2008 06:25:53 +0000</pubDate>
		<dc:creator>Mounter</dc:creator>
		
		<category><![CDATA[Geral]]></category>

		<category><![CDATA[Linux]]></category>

		<category><![CDATA[Disquete]]></category>

		<category><![CDATA[Floppy Disk]]></category>

		<category><![CDATA[Kernel]]></category>

		<category><![CDATA[Núcleo]]></category>

		<category><![CDATA[Sistemas Operacionais]]></category>

		<category><![CDATA[Terabeauts]]></category>

		<guid isPermaLink="false">http://www.osdevbrasil.net/blog/?p=13</guid>
		<description><![CDATA[O Terabeauts é um Linux Floppy Disk, isso mesmo, um Linux que cabe em um disquete e é muito útil para você fazer uma manutenção rápida em algumas máquinas ou qualquer outra utilidade que você der a ele.
Ele usa como base o Busybox o e o Linux Kernel série 2.6, tudo isso em um disquete [...]]]></description>
			<content:encoded><![CDATA[<p>O Terabeauts é um Linux Floppy Disk, isso mesmo, um Linux que cabe em um disquete e é muito útil para você fazer uma manutenção rápida em algumas máquinas ou qualquer outra utilidade que você der a ele.</p>
<p>Ele usa como base o <a rel="nofollow" href="http://busybox.net/">Busybox</a> o e o <a rel="nofollow" href="http://kernel.org/">Linux Kernel</a> série 2.6, tudo isso em um disquete de 1.44 MB!<span id="more-13"></span></p>
<p>Atualmente a equipe de desenvolvimento está precisando de pessoal interessado para manter o sistema, quem tiver interesse é somente entrar no site abaixo.</p>
<p>Para quem quiser conferir poderá entrar em:<a href="http://code.google.com/p/terabeauts/"> http://code.google.com/p/terabeauts/</a></p>
<img src="http://feeds.feedburner.com/~r/BlogOsdevbrasilnet/~4/RYosoLXvVrw" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.osdevbrasil.net/blog/terabeauts-linux-floppy-disk/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.osdevbrasil.net/blog/terabeauts-linux-floppy-disk/</feedburner:origLink></item>
		<item>
		<title>O que é um sistema operacional?</title>
		<link>http://feedproxy.google.com/~r/BlogOsdevbrasilnet/~3/zJ6qBFRfn9M/</link>
		<comments>http://www.osdevbrasil.net/blog/o-que-e-um-sistema-operacional/#comments</comments>
		<pubDate>Tue, 10 Jun 2008 07:42:28 +0000</pubDate>
		<dc:creator>Mounter</dc:creator>
		
		<category><![CDATA[Geral]]></category>

		<category><![CDATA[Sistemas Operacionais]]></category>

		<category><![CDATA[Google]]></category>

		<category><![CDATA[Site]]></category>

		<guid isPermaLink="false">http://www.osdevbrasil.net/blog/?p=12</guid>
		<description><![CDATA[Vagando no Google achei um site bem bacana explicando os termos mais comuns nos sistemas operacionais e vim aqui compartilhar com todos vocês.
Para acompanhar o artigo entre no seguinte link: http://www.oficinadanet.com.br/artigo/851/o_que_e_um_sistema_operacional
]]></description>
			<content:encoded><![CDATA[<p>Vagando no Google achei um site bem bacana explicando os termos mais comuns nos sistemas operacionais e vim aqui compartilhar com todos vocês.<span id="more-12"></span></p>
<p>Para acompanhar o artigo entre no seguinte link: <a href="http://www.oficinadanet.com.br/artigo/851/o_que_e_um_sistema_operacional">http://www.oficinadanet.com.br/artigo/851/o_que_e_um_sistema_operacional</a></p>
<img src="http://feeds.feedburner.com/~r/BlogOsdevbrasilnet/~4/zJ6qBFRfn9M" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.osdevbrasil.net/blog/o-que-e-um-sistema-operacional/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.osdevbrasil.net/blog/o-que-e-um-sistema-operacional/</feedburner:origLink></item>
		<item>
		<title>OSRC: The Operating System Resource Center</title>
		<link>http://feedproxy.google.com/~r/BlogOsdevbrasilnet/~3/QPNqUa7kQmM/</link>
		<comments>http://www.osdevbrasil.net/blog/osrc-the-operating-system-resource-center/#comments</comments>
		<pubDate>Tue, 10 Jun 2008 06:15:31 +0000</pubDate>
		<dc:creator>Mounter</dc:creator>
		
		<category><![CDATA[Programação]]></category>

		<category><![CDATA[Sistemas Operacionais]]></category>

		<category><![CDATA[Hardware]]></category>

		<category><![CDATA[OSRC]]></category>

		<category><![CDATA[repositório]]></category>

		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://www.osdevbrasil.net/blog/?p=11</guid>
		<description><![CDATA[Como eu não poderia deixar de comentar, para quem está começando na criação de sistemas operacionais nada melhor que um grande repositório de conhecimento, certo?
Então um dos melhores sites com informações de sistemas operacionais que você poderá encontrar na Web é o OSRC, nele você poderá encontrar os seguintes tópicos:
Software:

The Boot Process
Partitions
File Systems
Memory Management
Protected Mode
Executable [...]]]></description>
			<content:encoded><![CDATA[<p>Como eu não poderia deixar de comentar, para quem está começando na criação de sistemas operacionais nada melhor que um grande repositório de conhecimento, certo?<span id="more-11"></span></p>
<p>Então um dos melhores sites com informações de sistemas operacionais que você poderá encontrar na Web é o <a href="http://www.nondot.org/sabre/os/articles/">OSRC</a>, nele você poderá encontrar os seguintes tópicos:</p>
<p><strong>Software:</strong></p>
<ol>
<li>The Boot Process</li>
<li>Partitions</li>
<li>File Systems</li>
<li>Memory Management</li>
<li>Protected Mode</li>
<li>Executable File Formats</li>
<li>Plug and Play Specs</li>
<li>Device Driver Interfaces</li>
<li>Miscellaneous Software</li>
</ol>
<p><strong>Hardware:</strong></p>
<ol>
<li>Processor Architecture</li>
<li>Interconnect Buses</li>
<li>Disk and Disc Drives</li>
<li>Human Interface Devices</li>
<li>Sound Devices</li>
<li>Communication Devices</li>
<li>Networking Devices</li>
<li>Miscellaneous Devices</li>
<li>Other Hardware</li>
</ol>
<p>Espero que isso possa ser de ajudar.</p>
<p>Até mais</p>
<img src="http://feeds.feedburner.com/~r/BlogOsdevbrasilnet/~4/QPNqUa7kQmM" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.osdevbrasil.net/blog/osrc-the-operating-system-resource-center/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.osdevbrasil.net/blog/osrc-the-operating-system-resource-center/</feedburner:origLink></item>
		<item>
		<title>The Banana Kernel</title>
		<link>http://feedproxy.google.com/~r/BlogOsdevbrasilnet/~3/-n7liCJcb5I/</link>
		<comments>http://www.osdevbrasil.net/blog/the-banana-kernel/#comments</comments>
		<pubDate>Tue, 10 Jun 2008 04:00:44 +0000</pubDate>
		<dc:creator>Mounter</dc:creator>
		
		<category><![CDATA[C/C++]]></category>

		<category><![CDATA[Sistemas Operacionais]]></category>

		<category><![CDATA[Kernel]]></category>

		<category><![CDATA[Núcleo]]></category>

		<category><![CDATA[Open-Source]]></category>

		<guid isPermaLink="false">http://www.osdevbrasil.net/blog/?p=10</guid>
		<description><![CDATA[Revendo os meus favoritos, no meio de toda aquela confusão achei um projeto didático de Sistema Operacional open-source desenvolvido por alunos da PUC-PR. Ele foi feito usando o famoso OSKit (mais tarde falo sobre ele) e pode ser compilado com o GCC, sendo um projeto bem documentado, achei importante expor ele aqui.
Para quem quiser conferir [...]]]></description>
			<content:encoded><![CDATA[<p>Revendo os meus favoritos, no meio de toda aquela confusão achei um projeto didático de Sistema Operacional open-source desenvolvido por alunos da PUC-PR. Ele foi feito usando o famoso OSKit (mais tarde falo sobre ele) e pode ser compilado com o GCC, sendo um projeto bem documentado, achei importante expor ele aqui.<span id="more-10"></span></p>
<p>Para quem quiser conferir poderá entrar no seguinte link: <a href="http://bananakernel.sourceforge.net/">http://bananakernel.sourceforge.net/</a></p>
<p>Espero que seja de bom proveito.<br />
Até mais.</p>
<img src="http://feeds.feedburner.com/~r/BlogOsdevbrasilnet/~4/-n7liCJcb5I" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.osdevbrasil.net/blog/the-banana-kernel/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.osdevbrasil.net/blog/the-banana-kernel/</feedburner:origLink></item>
		<item>
		<title>Configurar o núcleo para o GRUB</title>
		<link>http://feedproxy.google.com/~r/BlogOsdevbrasilnet/~3/HiA3zz8lbPY/</link>
		<comments>http://www.osdevbrasil.net/blog/configurar-o-nucleo-para-o-grub/#comments</comments>
		<pubDate>Tue, 10 Jun 2008 03:47:55 +0000</pubDate>
		<dc:creator>Mounter</dc:creator>
		
		<category><![CDATA[Intel X86]]></category>

		<category><![CDATA[Sistemas Operacionais]]></category>

		<category><![CDATA[Tutoriais]]></category>

		<category><![CDATA[COFF]]></category>

		<category><![CDATA[DJCOFF]]></category>

		<category><![CDATA[Driver]]></category>

		<category><![CDATA[ELF]]></category>

		<category><![CDATA[GRUB]]></category>

		<category><![CDATA[Kernel]]></category>

		<category><![CDATA[Núcleo]]></category>

		<category><![CDATA[root]]></category>

		<guid isPermaLink="false">http://www.osdevbrasil.net/blog/?p=9</guid>
		<description><![CDATA[Como muitos de nós gostaríamos de configurar nosso núcleo para funcionar com o GRUB, irei aqui dar uma breve explicação de como isso pode ser feito.
Para nosso núcleo ser executado pelo GRUB, precisamos ter um cabeçalho nos primeiros 8KB e deve ter a seguinte forma:


/*****************************************************************************
** Cabeçalho Multiboot, com &#34;aout kludge&#34;
** GRUB não irá iniciar o [...]]]></description>
			<content:encoded><![CDATA[<p>Como muitos de nós gostaríamos de configurar nosso núcleo para funcionar com o GRUB, irei aqui dar uma breve explicação de como isso pode ser feito.<span id="more-9"></span></p>
<p>Para nosso núcleo ser executado pelo GRUB, precisamos ter um cabeçalho nos primeiros 8KB e deve ter a seguinte forma:</p>
<pre name="code" class="c">

/*****************************************************************************
** Cabeçalho Multiboot, com &quot;aout kludge&quot;
** GRUB não irá iniciar o núcleo a menos que
** - está estrutura esteja presente nos primeiros 8192 bytes do arquivo do núcleo
** - está estrutura estiver alinhada em um endereço divisivel por 4-byte
** - o valor mágico Multiboot está presente na estrutura
** - o número de checagem (checksum) esteja correto
*****************************************************************************/

MBOOT_PAGE_ALIGN EQU 1&lt;&lt;0
MBOOT_MEMORY_INFO EQU 1&lt;&lt;1
MBOOT_AOUT_KLUDGE EQU 1&lt;&lt;16
MBOOT_HEADER_MAGIC EQU 0x1BADB002
MBOOT_HEADER_FLAGS EQU MBOOT_PAGE_ALIGN | MBOOT_MEMORY_INFO | MBOOT_AOUT_KLUDGE
MBOOT_CHECKSUM EQU -(MBOOT_HEADER_MAGIC + MBOOT_HEADER_FLAGS)

ALIGN 4
mboot:
dd MBOOT_HEADER_MAGIC
dd MBOOT_HEADER_FLAGS
dd MBOOT_CHECKSUM
// aout kludge
dd mboot    // Endereço do cabeçalho multiboot
dd _d_code    // Endereço da área de código
dd _d_bss    // Endereço da área de dados não inicializado
dd _end        // Fim do núcleo
dd ncl_inicio    // Endereço inicial do núcleo
</pre>
<p>E terá de configurar também o arquivo menu.lst que se encontra em /boot/grub/ e deverá ter o seguinte código:</p>
<pre name="code" class="c">

title   SOmBRA
root    (fd0)
kernel  /nucleo.cof
</pre>
<p>O title é o título que irá aparece na inicialização, o root diz qual o driver será o diretório raiz e o kernel diz onde se encontra nosso núcleo que será carregado. O grub suporta vários tipos de arquivos executáveis, tais como COFF, DJCOFF e ELF, e com ele ainda podemos acrescentar módulos, que poderão depois ser usados pelo núcleo, mas isso será matéria do próximo artigo.</p>
<p>Até mais.</p>
<img src="http://feeds.feedburner.com/~r/BlogOsdevbrasilnet/~4/HiA3zz8lbPY" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.osdevbrasil.net/blog/configurar-o-nucleo-para-o-grub/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.osdevbrasil.net/blog/configurar-o-nucleo-para-o-grub/</feedburner:origLink></item>
		<item>
		<title>Juntando código C com Assembly</title>
		<link>http://feedproxy.google.com/~r/BlogOsdevbrasilnet/~3/55h5BtbvycU/</link>
		<comments>http://www.osdevbrasil.net/blog/juntando-codigo-c-com-assembly/#comments</comments>
		<pubDate>Tue, 10 Jun 2008 03:46:36 +0000</pubDate>
		<dc:creator>Mounter</dc:creator>
		
		<category><![CDATA[Intel X86]]></category>

		<category><![CDATA[Sistemas Operacionais]]></category>

		<category><![CDATA[Tutoriais]]></category>

		<category><![CDATA[Assembly]]></category>

		<category><![CDATA[Código]]></category>

		<category><![CDATA[GCC]]></category>

		<category><![CDATA[Juntar Códigos]]></category>

		<category><![CDATA[NASM]]></category>

		<guid isPermaLink="false">http://www.osdevbrasil.net/blog/?p=8</guid>
		<description><![CDATA[Como sempre ando vendo por aí duvidas de como juntar o código em C com Assembly, hoje resolvi fazer esse artigo para tirar todas as dúvidas referente a isto.
Primeiro devemos saber como o C processa os parâmetros e o retorno de dados, na verdade isso é bem simples. Quando passamos os parâmetros para o código [...]]]></description>
			<content:encoded><![CDATA[<p>Como sempre ando vendo por aí duvidas de como juntar o código em C com Assembly, hoje resolvi fazer esse artigo para tirar todas as dúvidas referente a isto.<span id="more-8"></span></p>
<p>Primeiro devemos saber como o C processa os parâmetros e o retorno de dados, na verdade isso é bem simples. Quando passamos os parâmetros para o código o C joga os dados na pilha, então para um arquivo como:</p>
<p><strong>teste.c:</strong></p>
<pre name="code" class="c">

int soma(int x, int y)
{
return x+y;
}

int main(void)
{
int r;

r = soma(5, 6);

return 0;
}
</pre>
<p>Teremos o seguinte código assembly:</p>
<p><strong>teste.asm:</strong></p>
<pre name="code" class="c">

_soma:
push     ebp
mov    ebp, esp
mov    eax, DWORD [ebp + 12]
add    eax, DWORD [ebp + 8]
pop    ebp
ret

_main:
push    ebp
mov    ebp, esp
sub    esp, 24
and    esp, -16
mov    eax, 0
add    eax, 15
add    eax, 15
shr    eax, 4
sal    eax, 4
mov DWORD [ebp - 8], eax
mov    eax, DWORD [ebp -8]
call    __alloca
call    ___main
mov    [esp+4], 6
mov    [esp], 5
call    _soma
mov    [ebp - 4], eax
mov    eax, 0
leave
ret
</pre>
<p>Parece ser muito complicado não? Mas vou explicar cada linha!</p>
<p>Como você deve ter percebido, o<strong> C</strong> adiciona um <em>underscore </em>antes do nome de cada função, a função <strong>_soma </strong>é de longe bem fácil de entender, como a função recebe os dados da pilha primeiro ela deverá manipula-los, então ela salva o <strong>EBP </strong>na pilha e move o valor de <strong>ESP </strong>para ele, a pilha agora deverá ser algo do tipo:</p>
<blockquote><p>VALOR 6<br />
VALOR 5<br />
VALOR DE EIP<br />
VALOR DE EBP</p></blockquote>
<p>No código assembly gerado, podemos ver que o <strong>EAX</strong> é quem recebe o retorno, por isso todas as manipulação são feitas encima dele, então</p>
<p><strong>mov eax, DWORD [ebp+12]</strong></p>
<p>seria nosso Y e</p>
<p><strong>add eax, DWORD [ebp + 8]</strong></p>
<p>seria o mesmo que <strong>return x+y;</strong> depois disso o valor de <strong>EBP </strong>é retomado e a função volta de onde foi chamada.</p>
<p>Na função <strong>_main</strong>, vamos aquele amontoado de código gerado para alocar as variáveis, mas podemos ignora-lo, o que interessa mesmo é esta parte:</p>
<pre name="code" class="c">

mov    [esp+4], 6
mov    [esp], 5
call    _soma
mov    [ebp - 4], eax
mov    eax, 0
leave
ret
</pre>
<p>As três primeiras linhas de código como podemos ver seria os valores passados a pilha e a chamada a função, seria o mesmo que fazer:</p>
<pre name="code" class="c">

push 5
push 6
call _soma
</pre>
<p>E como o valor de retorno está em <strong>EAX</strong>, o <strong>[EBP - 4]</strong>, representa nossa variável <strong>r</strong> e como podemos ver, todas as variáveis criadas dentro das funções ficam na pilha, por isso o uso de <strong>EBP</strong>. Como termino <strong>return 0</strong>, é representado como:</p>
<pre name="code" class="c">

mov eax, 0
leave        ; Libera o espaço usado por _main na pilha
ret        ; Retorna
</pre>
<p>Acredito que depois disso podemos entender, em geral, como o C gerá o código Assembly, mas pera ai! Não estamos esquecendo de algo?</p>
<p>Claro e como podemos juntar um arquivo assembly com um C? Se você estiver usando o DJGPP e o NASM, você pode fazer o seguinte:</p>
<p><strong>nasm -fcoff assembly.asm -o assembly.o<br />
gcc -c arquivo.c -o arquivo.o</strong></p>
<p><strong>ld -r assembly.o arquivo.o -o combinado.o</strong></p>
<p>Para isso vou dar um exemplo final:</p>
<p><strong>arqasm.asm:</strong></p>
<pre name="code" class="c">

[BITS 32]

[SECTION .text]

_soma:
push     ebp
mov    ebp, esp
mov    eax, DWORD [ebp + 12]
add    eax, DWORD [ebp + 8]
pop    ebp
ret
</pre>
<p><strong>arqc.c:</strong></p>
<pre name="code" class="c">

int soma(int x, int y);

int teste(void)
{
int r;

r = soma(5, 6);

return 0;
}
</pre>
<p>Se alguêm tiver interesse em ver como o GCC gerá os códigos para o assembly, você poderá tentar o seguinte comando:</p>
<p><strong>gcc -c arquivo.c -S teste.s</strong></p>
<p>Espero que tenham gostado, se tiverem dúvidas ou algo estiver errado, mandem um comentário.</p>
<img src="http://feeds.feedburner.com/~r/BlogOsdevbrasilnet/~4/55h5BtbvycU" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.osdevbrasil.net/blog/juntando-codigo-c-com-assembly/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.osdevbrasil.net/blog/juntando-codigo-c-com-assembly/</feedburner:origLink></item>
	</channel>
</rss>
