Comunidade OSDevBrasil.net
Maio 22, 2012, 07:54:02 *
Bem-vindo, Visitante. Por favor faça o Login ou Registro.

Login com nome de usuário, senha e duração da sessão
Notícias: Anuncie a nossa comunidade a amigos, fóruns...
 
   Home   Ajuda Pesquisa Login Registrar  
Páginas: [1]
  Imprimir  
Autor Tópico: Nova linguagem assembly  (Lida 1569 vezes)
Mounter
Administrador
OS Sr. Member
*****

Karma: 12
Mensagens: 432


mrjostz@hotmail.com
Ver Perfil WWW Email
« : Junho 25, 2008, 08:20:19 »

Estou desenvolvendo uma camada intermediaria entre o assembler e o programador obviamente  Língua Rolar os Olhos e que irá fazer nosso desenvolvimento muito mais produtivo e efetivo, principalmente com o projeto de novos sistemas operacionais.

Denominei o projeto de Railux (referencia a raio de luz) e que irá ter várias caracteristicas do C e Pascal. Abaixo segue um exemplo de como é a linguagem e o site do projeto no Google Code, o código fonte irei abrir quando todas as etapas do compilador (tradutor), estarão prontas.

Exemplo:
Código:
program teste;
     char a[256], c[3];
     int z;
begin  // Pode ser {
    a =  "fazendo um teste";
    c = 'ELF';
    z = 3;
    eax = z;
    ebx = 'a';
    eax += ebx;
end  // Pode ser } se não for begin no inicio

http://code.google.com/p/railux/

Espero que este tópico sirva como referencia para todos e que sugestões são bem vindas!
Registrado

╔╗╔╦══╦╗╔╦══╦╗
║╚╝║╔╗║╚╝║╔╗║║
║╔╗║╠╣║╔╗║╠╣╠╣
╚╝╚╩╝╚╩╝╚╩╝╚╩╝

Projeto SOmBRA - http://code.google.com/p/projeto-sombra

S.O.: Ubuntu 10.04
Browser: Google Chrome 10

Fergo
OS Newbie
*

Karma: 0
Mensagens: 1


Ver Perfil
« Responder #1 : Julho 05, 2008, 12:42:28 »

É uma ideia interessante. Durante um tempo eu trabalhei num parser de BASIC para Assembly (obviamente um BASIC simplificado, já que ele é alto nível demais para ser facilmente convertido para asm). Parei porque tive que devolver o livro sobre teoria de compiladores e não encontrei mais na biblioteca, além de que depois disso o código acabou se perdendo em uma formatação (fiz a cagada de deixar o código na pasta da IDE (partição que uso para programas) ao invés de deixar na partição de documentos).

Como sugestão: se tem uma coisa que eu não gosto no pascal (e conseqüentemente no delphi) é a forma como são definidos os blocos e, principalmente, quanto ao uso do ponto e vírgula, que é extremamente confuso (no begin não vai nada, no final do bloco vai um ponto e no final das instruções vai um ponto e vírgula), então recomendaria adotar o sistema do C (ponto e vírgula apenas para finalizar instruções, não para delimitação de blocos) ou o sistema do BASIC/VB, onde o início do bloco é definido pelo próprio comando, sem a necessidade de explicitar um "Begin" ou "{". Neste último caso seria interessante não utilizar o } para fechar o bloco, mas sim uma palavra, como "End If", "Next", "Loop". De forma resumida, minhas sugestões:

Estilo C:
Código:
program teste {
     char a[256], c[3];
     int z;

    a =  "fazendo um teste";
    c = 'ELF';
    z = 3;
    eax = z;
    ebx = 'a';
    eax += ebx;
}

Ou o modo BASIC:
Código:
program teste
     char a[256], c[3];
     int z;

    a =  "fazendo um teste";
    c = 'ELF';
    z = 3;
    eax = z;
    ebx = 'a';
    eax += ebx;
end program

Poderia até criar um bloco para declaração de variáveis e outro exclusivamente para o código, apesar de eu achar meio antiquado e pouco prático. Uma das grandes qualidades do C++ em relação ao C na minha opinião é a possibilidade de declarar a variável onde quer que seja, por exemplo:

Código:
for (int i = 0; i < 10; i++)

O C não permite isso, você precisa declarar a variável antes, desperdiçando linhas.

Enfim, essas são minhas sugestões para uma sintaxe, mas gosto é gosto.

Abraços,
Fergo
Registrado
Mounter
Administrador
OS Sr. Member
*****

Karma: 12
Mensagens: 432


mrjostz@hotmail.com
Ver Perfil WWW Email
« Responder #2 : Julho 05, 2008, 02:59:20 »

Eu sei que o C as declarações devem ser depois do inicio de um bloco, pelo que eu saiba, isso se deve pela alocação da pilha não precisar de correções nos ponteiros, mas ainda não sei como o C++ gerencia essa parte, vou dar uma olhada e você tem razão quanto ao bloco do pascal, atualmente tinha definido tanto ser {} ou begin e end, e ele checaria o inicio que se fosse { pediria no final o } e assim por diante.

Como deve ser um derivado do assembly, a manipulação de registradores poderá ser direta, usando as operadores do C:

Código:
eax += 5; // add eax, 5
...

E o pop e push, além de outros opcodes irei usar algo parecido com chamadas de função:

Código:
push(eax);
pop(eax);
intrp(0x25); // Confusão com a declaração de variáveis?
syscall();

mas pode ser que seja adotado outro tipo de bloco de dados, ou mesmo da linguagem Ada. A declaração de variáveis e protótipos vou assumir mesmo o do C para dar compatibilidade com outros headers desenvolvidos, por enquanto somente o interpretador de macros foi desenvolvido com um bom sucesso (50% de desenvolvimento).
Registrado

╔╗╔╦══╦╗╔╦══╦╗
║╚╝║╔╗║╚╝║╔╗║║
║╔╗║╠╣║╔╗║╠╣╠╣
╚╝╚╩╝╚╩╝╚╩╝╚╩╝

Projeto SOmBRA - http://code.google.com/p/projeto-sombra

S.O.: Ubuntu 10.04
Browser: Google Chrome 10

anthony collucci
it not exist
Moderador Global
OS Full Member
*****

Karma: 3
Mensagens: 100


Ver Perfil WWW Email
« Responder #3 : Novembro 13, 2008, 02:10:42 »

Opa,

Vi o site do Railux, como anda o projeto mounter? ja da pra desenvolver algo usando a linguagem?
Faz uma apresentaçãozinha pra gente de como esta!

flws
Registrado

Bencz
OS Full Member
***

Karma: 0
Mensagens: 112



Ver Perfil
« Responder #4 : Abril 30, 2010, 04:42:54 »

Olá, Mounter, gostaria de saber se você já pode liberar o código fonte para todos?

Registrado



Páginas: [1]
  Imprimir  
 
Ir para:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.16 | SMF © 2006-2009, Simple Machines XHTML 1.0 Válido! CSS Válido!