que instrucciones querrias?

Hola, les pongo en el siguiente caso, si crearan un microcontrolador, donde lo único que les interesa son las instrucciones que este soporte, cuales serian?
Las mias serian estas:

Nulo----- Un siclo de instrucción, no hace nada
Suma---- Suma 2 valores
Resta---- Resta 2 valores
Borrar---- Borra un registro
AND---- Hace una operación AND entre 2 registros
OR--- Hace una operación OR entre 2 registros
XOR---- Hace una operación XOR entre 2 registros
Reduce---- Reduce en una unidad el registro especificado
Aumenta---- Aumenta en una unidad el registro especificado
Complemento---- Devuelve el complemento de un registro
Borrar---- Bit Borra el bit especificado en el registro indicado
Setear---- BIT Coloca en 1 el bit especificado en el registro espesificado
Cargar Numero----- Carga el numero indicado en el registro espesificado
Evaluar BIT ------Evalua si el bit es 1, si lo es, salta la instrucción siguiente
Evaluar BYTE- Evalua si el byte es un valor especifico, si lo es, salta la instrucción siguiente
Mover registro---- Mueve el valor de un registro a otro, dejando el registro original en 0
Copiar registro---- Copia el valor de un registro a otro, sin modificar el original
Ir a --- Lleva el control a la instrucción espesificada
Llamar ----- Lleva el control hacia la instrucción espesificada en espera de un regreso
Regreso ---- Lleva el control hacia la instrucción siguiente de la instrucción llamar
Rotar derecha---- Rota hacia la derecha los bits del registro especificado
Rotar izquierda---- Rota hacia la izquierda los bits del registro especificado
 
Pues estarian las basicas... creo que solo faltaria Intercambiar, que intercambia una direccion de memoria con la del acumulador...
 
Un 18f puede hacer eso y mucho mas, no entiendo a que apunta el post...

Osea atrás de un microcontrolador hay muchos ingenieros que pasaron por esto, y puedo asegurar en un 100% que evaluaron cada una de las instrucciones si valían o no la pena.
 
la verdadera intencion de este tema es que necesito ideas para instrucciones, esas que di son las que mas utilizo, con este tema me enteraria de las instrucciones que necesitarian las demas personas... es que estoy diseñando un microprocesador a base de un pic (se que suena extraño, pero es un proyecto).
 
de que lo boy a construir lo construire, puedo agregarle un maximo de 63 instrucciones, y si cambio el pic que uso, puedo acerlo para 255 instrucciones (bastantes no lo creen), y resulta que hasta haora solo tengo 22, y por lo que me an dicho hasta haora, cubren lo basico.

este microprocesador usa una arquitectura von neuman ( creo que se escrive asi), con un bus de datos de 8 bits y un bus de direcciones de 16 bits, por lo que llebo hasta haora en el mapeo de memoria, puedo colocarle lo que se me ocurra, hasta haora le he puesto puertos paralelos, puertos SPI, puertos I2C, puertos RS-232, EEPROM extraibles, EEPROM fijas, y lo que se me ocurra para el futuro, solo tengo que cambiar unos parametros del programa principal del pic, lo reprogramo, y listo, tengo soporte para mas perifericos, osea, un psdomicroprosesador reprogramable hasta en como ejecuta sus instrucciones...

lo he basado en un 16F877A, a 20MHz.

primero me ire diseñando, y despues... contruyendo....

se me ha ido la oya no lo creen.

como anecdota, ace 2 años ise uno parecido, pero nunca lo pude construir, usaba un pic que no encontre nunca y ademas usava arquitectura harbard, po lo que necesitaba un pic gigante...(en cuanto al numero de pines, porque en cuanto al tamaño solo media 1cm por 1cm)...
 
Mucha suerte.

Te falta instrucciones de multiplicar directamente y dvidir también, en los PIC18F lo shace, claro que el resto de la división debes guardarlo en un registro.

Esto de hacer microprocesadores es más complejo de lo que crees.

:)
 
Tambien faltan instrucciones para conversion Binario a BCD... algunos micros tienen la instruccion SWAP que intercambia los nibles de la palabra.. y tambien sumas y restas en BCD
 
Hay algunos micros que poseen un registrro llamado INDICE, que se utiliza mucha para el armado y recorrido de tablas internas. Tambien hay una instruccion que guarda el contenido del registro de estado en la pila, como tambien la instruccion que almacena el valor del acumulador en la pila.
 
Si vas a diseñar las cosas que tienen los demás, pierdes el timepo, excepto si vas a aprneder de verdad y dedicarte a ello.

Suerte...
 
hola, se me ha echo un lio todo este proyecto, y con el fin de ordenar mis ideas, programe esto, revisenlo, y diganme si les parece bien lo que he hecho hasta ahora...

no esta completo, asi que no se asombren si ven que algunos botones no acen nada...

les paso, todo, incluido el codigo fuente...

el lenguaje es VB6
 

Adjuntos

  • Programa Descriptivo.rar
    763.6 KB · Visitas: 7
¿Es como un interprete?

Supongo que es algo parecido los basicStamp, pero que interpreta un codigo de mas bajo nivel. Me agrada mucho tu proyecto, yo habia pensado en algo parecido, pero en vez de interpretar asm que fuera algo parecido a java o c++. Esque he utilizado varios micros de los que las siguientes caracteristicas me agradan:

-Programacion en un lenguaje de alto nivel que puede ser gráfico. (Como flow code o nipple)
-Programacion orientada a objetos. (como c++ o java). Ej. el javelin de parallax
-Multitarea. El lenguaje multitarea que mas me ha gustado es DinamicC. Spin tambien es multitarea pero es porque su procesador lo implementa por hardware (Del propeller de parallax)

Se que crear un lenguaje de programación es un verdadero reto, pero un interprete quizas sea un poco menos complicado.

Quizas me sali un poco de la idea original, pero si yo contara con el tiempo para hacer algo así, tambien trataria de hacer un lenguaje que te genere codigo intermedio. Por ejemplo, en vez de usar varios add para hacer una suma de dos numeros de 32 bits, tuvieras una sola instrucción que lo hiciera. Me refiero a no tratar de emular un procesador, sino mejor hacer un procesador que implemente una maquina virtual como en java. Y si es posible (o necesario) un sistema operativo que lea archivos ejecutables desde una memoria SD.

Bueno, ya te di la idea ahora hazlo!! :D:D
 
pues mi proyecto es modificable.. esta orientado como tu dices a ejecutar instrucciones en lengiaje ensamblado, pero si tefijas, no tiene ni registro W ni acumulador, por lo que trabaja ahorrandonos problemas en programacion, y de hecho, el consepto de multitare no existye, si la maquina trabaja con un unico procesador, no ejecuta 2instrucciones a la vez, lo que ace es que lo ace tan rapido que pareciera que ejecuta mas de una a la vez... pero si la maquina tubiera 2 procesadores, hay no lo se con certeza, pero como son 2, ejecuta 2 instrucciones a la vez, supongo...

pero, bolviendo al tema, este proyecto incluye una memoria eeprom, que es la que contiene al Programa controlador basico, y es la que le dice lo primero que tiene que acer el sistema al arrancar, por lo que se le podria guiar a un archivo en la memoria no bolatil, que seria un interprete de comandos, con un archibo prederterminado, lo leeria y ejecutaria las instrucciones como si fuera un programa cualquiera, es comparable lo que pasa con los archivos por lotes en MS-DOS, devido que el COMMAND.COM lee el archivo con extencion .BAT, y ejecuta las instrucciones como si las escriviesen... algo como eso podria acerse con un interprete de lenguaje de alto nivel, como un basic, c, u otro... pero todo se basaria en lo mismo, por lo que el proyecto no cambiaria, lo unico que le falta es un programa en la memoria, que aga las veces de interprete... y no cambia en nada el proyecto en si.

y diganme su opinion, le faltara alguna instruccion?, y estoy casi seguro que existe una redundancia en cuanto a la existencia de 2 instrucciones que son muy parecidas encuanto a su utilidad, y son NULO Y PAUSA, devido que NULO es una instruccion que no ace nada y sirve para acer retrazos en la ejecucion del programa, pero la instruccion PAUSA, sirve pára lo mismo, solo que esta es mas dosil deviso que es configurable en cuanto a su duracion... denme su opinion, descarto la instruccion NULO?

necesito que me den ideas para selecionar el tipo de memoria a utilizar en la memoria no volatil (disco duro), he pensado en utilizar memorias EEPROM, pero tienen un limite para ser borradas y grabadas, por lo que no se asegura una larga vida util, otra opcion aunque mas exagerada es utilizar memoria SRAM, con unas pilas de boton y un regulador, todo esto para evitar que los datos se borren al quitar la alimentacion.. otra opcion que contenple fue la utilizacion de memorias flash, pero al contrario de lo que yo creia, estas tambien tienen un limite de veses que pueden ser borradas... asi que les pido su ayuda para elegir la mejor opcion o si tienen una idea nueva en cuanto a lo que les pregunto en este parrafo.

un comentario: si este proyecto resulta funcionar, liverare sus planos para que los modifiquen o simplemente le encuentren una aplicacion que les sea util algun dia...
 
Volviendo al tema hace tiempo me hice un set de instrucciones extendido. Tan solo eran macros del ensambldor con las cosas que repetía mucho; salto si cero, si no cero, si mayor, si menor etc.
Cada macro eran unas pocas instrucciones.
 
Atrás
Arriba