Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros temas > La Taberna
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

 
 
Herramientas Buscar en Tema Desplegado
  #8  
Antiguo 13-02-2012
Avatar de Ñuño Martínez
Ñuño Martínez Ñuño Martínez is offline
Moderador
 
Registrado: jul 2006
Ubicación: Ciudad Catedral, Españistán
Posts: 6.000
Poder: 25
Ñuño Martínez Tiene un aura espectacularÑuño Martínez Tiene un aura espectacular
Un lenguaje que inventé hace un tiempo y que, por fin, le he encontrado una aplicación (si aceptan un presupuesto que he hecho, claro ):

Código:
  0
  @
    1 +
    DUP 3 %
    0 = IF
      "fizz" CALL:WRITE
    FI
    DUP 5 %
    0 = IF
      "buzz" CALL:WRITE
    FI
    DUP DUP 3 % SWAP 5 %
    0 = SWAP 0 = & IF
      DUP CALL:WRITE
    FI
    "" CALL:WRITELN
    DUP 100 < IF
      RET
    FI
"Ahora vas y lo cascas"

Explicación:

Este lenguaje es, en realidad, el "Ensamblador" de una máquina virtual basada en pilas, al estilo FORTH. DUP duplica el elemento en la cima de la pila, mientras que SWAP intercambia los dos valores de la cima. Los operadores extraen uno o dos elementos de la pila, lo operan y lo devuelven a la pila; y son los normales (+, -, >, <...) siendo "%" el cálculo del resto en una división entera. "CALL" llama a una rutina (WRITE y WRITELN en este caso). @ apila en la pila de código (separada de la pila de datos, como en FORTH) la dirección de dicha arroba, mientras que RET desapila la cima de la pila de código en el registro de ejecución.

Vamos, muy sencillo.

El código puede optimizarse duplicando e intercambiando los resultados de las operaciones (que en principio es más rápido que calcular el módulo y hacer comparaciones), pero entonces ya te lías...
__________________
Proyectos actuales --> Allegro 5 Pascal ¡y Delphi!|MinGRo Game Engine

Última edición por Ñuño Martínez fecha: 13-02-2012 a las 11:16:20.
Responder Con Cita
 



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 12:29:19.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi