ASM, arquitecturas y procesadores compatibles

Iniciado por GeorgArming, 29 Noviembre 2011, 19:54 PM

0 Miembros y 1 Visitante están viendo este tema.

GeorgArming

Según tengo entendido, cuando se crea un OS, éste es específico de una arquitectura determinada, no es portable. Tendrías que cambiar el código ASM para adaptarse a la nueva arquitectura.

Mi pregunta es si hay algún tipo de sintaxis ASM que sea multiplataforma. Por ejemplo, que funcione con procesadores Intel, con ARM,... (O alguna arquitectura multiplataforma). ¿Sabéis algo de eso?

Otra cosa, leí sobre un programador que hizo un OS muy simple pero multiplataforma, basándose en la arquitectura ewa. ¿Sabéis si esta arquitectura es verdaderamente compatible con todos los procesadores?

Básicamente, la pregunta es: hay alguna manera de programar un OS que sea portable a todas las arquitecturas?

x64core

como tu lo has dicho no es portable, por ejemplo el so windows se adapta a todas las pc porque trae varios
páquetes de drivers, para que instala dependiendo del hardware, por eso si te has fijado tambien existe el
winx86 y el winx64 eso es para aprovechar la nueva arquitectura de microprocesadores x64.
programas talves podrian pero SO's hasta donde sé no. con los programas podrias depender  de algunas
librerias del SO pero como eso tambien estaria dependiendo del SO

GeorgArming

¿entonces se tiene que programar un OS distinto para cada arquitectura? ¿seguro que no hay ninguna manera, aunque quede un OS muy minimalista, de que sea "universal"?

y, entonces, ASM no es portable a distintos procesadores... pero si programas íntegramente en C sí tendría que serlo, no?

GeorgArming

me he estado documentando, y he encontrado algo muy interesante, que ya mencioné anteriormente. se trata de la arquitectura ewa.

resumiendo, se trata de arrancar una especie de máquina virtual directamente sobre el procesador, y a partir de ahí arrancar el OS. ¿Qué pensáis?

pucheto

Cita de: GeorgArming en 29 Noviembre 2011, 22:17 PM
¿entonces se tiene que programar un OS distinto para cada arquitectura? ¿seguro que no hay ninguna manera, aunque quede un OS muy minimalista, de que sea "universal"?

y, entonces, ASM no es portable a distintos procesadores... pero si programas íntegramente en C sí tendría que serlo, no?
El tema es que cada arquitectura tiene un juego de instrucciones distinto, y tiene estructuras y registros del procesador distintos... Lo que si se hace es tener la mayoria del codigo en C y solo una parte lo mas minima posible en ASM, asi a la hora de portar el codigo no hay q cambiar todo.

GeorgArming

Cita de: pucheto en 30 Noviembre 2011, 03:58 AM
El tema es que cada arquitectura tiene un juego de instrucciones distinto, y tiene estructuras y registros del procesador distintos... Lo que si se hace es tener la mayoria del codigo en C y solo una parte lo mas minima posible en ASM, asi a la hora de portar el codigo no hay q cambiar todo.

vale, es eso a lo que me refería. y una pregunta, y si hubiera un bootloader en ASM que cargase un programa en C... la parte en C sería portable, no?

si incluyes ASM en C inline y lo compilas, es portable?

Unbr0ken

Respondiendo a la pregunta principal:

Subjetivamente diría que sí es posible. Mi afirmación se basa en el proyecto eWa.

Claro está que mi opinión es relativamente cierta.

Veamos el esquema eWa...


Visto ésto, diría yo que sí es posible hacer un sistema multiplatafórmico, no obstante, con una imagen no se puede asegurar una afirmación; aquí te dejo el enlace del Proyecto eWa. (Le veo muy bueno, pero... tengo que profundizar un poco más para saber de qué va éste) Espero le des una hojeada, a lo mejor te sirva de algo ;).

P.D.: Aquí está el cómo funciona su arquitectura, no está culminado, pero... es la idea principal.

Salud.
Cita de: SnowcrashDiscutir con desconocidos por internet es un ejercicio de imbéciles; todos acaban siendo quinceañeros arrogantes con cantidades infinitas de tiempo libre.

NO resuelvo dudas vía MP, para algo está el foro.

GeorgArming

muchísimas gracias, Unbr0ken. yo ya sabía de la arquitectura ewa, pero que alguien que entienda del tema lo explique te dice mucho sobre el valor de dicha arquitectura. además, esta imagen no la había encontrado...

GeorgArming

#8
entonces me voy a documentar con el tema ewa.

otra cosa que se me ha ocurrido. hay varias máquinas virtuales. seguro que alguna está programada íntegramente en C. como C es portable, si se cargara de inicio esa máquina virtual, y en esa máquina virtual se creara un OS... sería portable, no?

pucheto

Cita de: GeorgArming en 30 Noviembre 2011, 16:19 PM
vale, es eso a lo que me refería. y una pregunta, y si hubiera un bootloader en ASM que cargase un programa en C... la parte en C sería portable, no?

si incluyes ASM en C inline y lo compilas, es portable?
Si incluis el ASM inline no es portable.

El tema con las maquinas virtuales es muy relativo, vos podes hacer un sistema operativo para correr sobre una arquitectura virtual, pero estas atado a esa arquitectura virtual (no sos portable entre arquitecturas, dependes de estar corriendo sobre la maquina virtual). Y la maquina virtual, en algun momento va a tener q manejar registros especificos de cada procesador, manejar interrupciones (las estructuras para manejar interrupciones son distintas en cada procesador), etc.

Podes tratar de alejarte lo mas que puedas del procesador, pero en algun momento alguien va a tener q manejarlo, seas vos, la maquina virtual, etc.