elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Buscar Ingresar Registrarse
28 Mayo 2012, 21:30  


Tema destacado: [AIO elhacker.NET] Compilación herramientas análisis y desinfección malware

+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General (Moderador: Littlehorse)
| | |-+  ASM, arquitecturas y procesadores compatibles
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: ASM, arquitecturas y procesadores compatibles  (Leído 1,753 veces)
GeorgArming

Desconectado Desconectado

Mensajes: 236


Ver Perfil
ASM, arquitecturas y procesadores compatibles
« en: 29 Noviembre 2011, 19:54 »

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?


En línea

Quieres colaborar con un proyecto innovador? Si sabes C/C++, lenguajes web o entiendes de Linux y Debian, ponte en contacto conmigo a través del foro o por gmail: georgarming@gmail.com
RHL


Conectado Conectado

Mensajes: 966


mental


Ver Perfil
Re: ASM, arquitecturas y procesadores compatibles
« Respuesta #1 en: 29 Noviembre 2011, 20:26 »

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


En línea
GeorgArming

Desconectado Desconectado

Mensajes: 236


Ver Perfil
Re: ASM, arquitecturas y procesadores compatibles
« Respuesta #2 en: 29 Noviembre 2011, 22:17 »

¿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?
En línea

Quieres colaborar con un proyecto innovador? Si sabes C/C++, lenguajes web o entiendes de Linux y Debian, ponte en contacto conmigo a través del foro o por gmail: georgarming@gmail.com
GeorgArming

Desconectado Desconectado

Mensajes: 236


Ver Perfil
Re: ASM, arquitecturas y procesadores compatibles
« Respuesta #3 en: 29 Noviembre 2011, 22:48 »

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?
En línea

Quieres colaborar con un proyecto innovador? Si sabes C/C++, lenguajes web o entiendes de Linux y Debian, ponte en contacto conmigo a través del foro o por gmail: georgarming@gmail.com
pucheto

Desconectado Desconectado

Mensajes: 214


Ver Perfil
Re: ASM, arquitecturas y procesadores compatibles
« Respuesta #4 en: 30 Noviembre 2011, 03:58 »

¿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.
En línea
GeorgArming

Desconectado Desconectado

Mensajes: 236


Ver Perfil
Re: ASM, arquitecturas y procesadores compatibles
« Respuesta #5 en: 30 Noviembre 2011, 16:19 »

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?
En línea

Quieres colaborar con un proyecto innovador? Si sabes C/C++, lenguajes web o entiendes de Linux y Debian, ponte en contacto conmigo a través del foro o por gmail: georgarming@gmail.com
Unbr0ken

Desconectado Desconectado

Mensajes: 248



Ver Perfil
Re: ASM, arquitecturas y procesadores compatibles
« Respuesta #6 en: 30 Noviembre 2011, 20:40 »

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.
En línea

Cita de: Snowcrash
Discutir 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

Desconectado Desconectado

Mensajes: 236


Ver Perfil
Re: ASM, arquitecturas y procesadores compatibles
« Respuesta #7 en: 30 Noviembre 2011, 20:54 »

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...
En línea

Quieres colaborar con un proyecto innovador? Si sabes C/C++, lenguajes web o entiendes de Linux y Debian, ponte en contacto conmigo a través del foro o por gmail: georgarming@gmail.com
GeorgArming

Desconectado Desconectado

Mensajes: 236


Ver Perfil
Re: ASM, arquitecturas y procesadores compatibles
« Respuesta #8 en: 30 Noviembre 2011, 23:27 »

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?
« Última modificación: 30 Noviembre 2011, 23:31 por GeorgArming » En línea

Quieres colaborar con un proyecto innovador? Si sabes C/C++, lenguajes web o entiendes de Linux y Debian, ponte en contacto conmigo a través del foro o por gmail: georgarming@gmail.com
pucheto

Desconectado Desconectado

Mensajes: 214


Ver Perfil
Re: ASM, arquitecturas y procesadores compatibles
« Respuesta #9 en: 1 Diciembre 2011, 14:40 »

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.
En línea
.:UND3R:.


Desconectado Desconectado

Mensajes: 1.960


Ingeniería inversa


Ver Perfil WWW
Re: ASM, arquitecturas y procesadores compatibles
« Respuesta #10 en: 1 Diciembre 2011, 17:10 »

Podríamos decir que tenemos los siguientes niveles de programación:

Lenguaje Alto nivel                                   <-Nivel 5
Lenguaje ensamblador                             <-Nivel 4
Sistema operativo                                   <-Nivel 3
Arquitectura del conjunto de instrucciones <-Nivel 2
Microarquitectura                                    <-Nivel 1
Lógica digital                                          <-Nivel 0

Desde el nivel 2 es en donde el usuario puede comenzar a programar, este nivel es en donde se trabaja bajo instrucciones binarias

La única posibilidad a mi parecer sería crear una Máquina virtual (todos sabemos que las máquinas virtuales son creadas para facilitar al programador con instrucciones mucho más cómodas), un ejemplo claro de ella es cualquier computador que tenga instalado VJM (Virtual java machine) podrá ejecutar aplicaciones java sin importar la Arquitectura del procesador, esto debido a que el código va descendiendo hasta llegar a la lógica digital en donde se interpretará las instrucciones.

El paso de un nivel a otro se puede realizar a través de dos métodos:

1-Traducción: la traducción consiste en que un programa traduzca un lenguaje a un nivel inferior, este programa debe estar hecho con el lenguaje del nivel anterior para que puede ser interpretado.

2-Interpretación: consiste en que mientras el programa está siendo ejecutado las instrucciones son interpretadas en los otros lenguaje

en ambos métodos los lenguajes deben ser progresivos ya que el tiempo de Interpretación o Traducción podría relentizar el proceso de ejecución de este debido a la pérdida de tiempo que se demorará en pasar de un lenguaje a otro

El gran problema es que con anterioridad se debe tener instalada la máquina virtual y para lograr eso la única forma de poder instarla es que este sea instalado con un lenguaje inferior. Esto puede ser problema si queremos diseñar un virus multiplataforma o programas de ese estilo, pero si nos enfocamos en la programación comercial la creación de una máquina virtual solucionaría el problema, pero insisto que la máquina virtual debería ser programada para cada arquitectura por lo que se convertiría en lo mismo

Saludos
En línea

GeorgArming

Desconectado Desconectado

Mensajes: 236


Ver Perfil
Re: ASM, arquitecturas y procesadores compatibles
« Respuesta #11 en: 1 Diciembre 2011, 19:24 »

vale, comprendo. última pregunta (de momento XD): ¿el lenguaje C es portable? es decir, un programa en C que no tenga ninguna instrucción en ASM, es portable, no?

EDITO: otra pregunta (y no digo que es la última porque a saber XD): si cada arquitectura requiere un ASM diferente, cómo es que cuando vas a descargarte ubuntu sólo te dan 2 opciones (32 bits y 64 bits)? ¿eso significa que da igual que sea x86 o otra arquitectura y, por tanto, este ubuntu que te descargas es portable? ¿cómo es posible que cuando vayas a descargarte el kernel linux sólo haya un tipo de kernel (no hay kernel versión 2.5 de x86, ARM,... sólo hay kernel 2.5)?
« Última modificación: 1 Diciembre 2011, 20:53 por GeorgArming » En línea

Quieres colaborar con un proyecto innovador? Si sabes C/C++, lenguajes web o entiendes de Linux y Debian, ponte en contacto conmigo a través del foro o por gmail: georgarming@gmail.com
GeorgArming

Desconectado Desconectado

Mensajes: 236


Ver Perfil
Re: ASM, arquitecturas y procesadores compatibles
« Respuesta #12 en: 1 Diciembre 2011, 21:00 »

más concretamente:

"La Portabilidad del núcleo Linux y arquitecturas soportadas, se refiere a que originalmente escrito para procesadores Intel i386, el núcleo Linux fue recodificado para facilitar la portabilidad de éste.
Habiendo sido reescrito una vez para la arquitectura Motorola 68K, la perspectiva de las tediosas reescrituras para cada arquitectura posible, incitada por Linus Torvalds, se enfocaba en poseer una base de código modular que pudiese ser portada hacia diferentes arquitecturas con un mínimo de esfuerzo.
Carpetas específicas de arquitectura en las fuentes del núcleo, se dirigen a detalles particulares de cada procesador soportado, mientras todas las ventajas radican el en hecho de compartir un idéntico código de núcleo."
En línea

Quieres colaborar con un proyecto innovador? Si sabes C/C++, lenguajes web o entiendes de Linux y Debian, ponte en contacto conmigo a través del foro o por gmail: georgarming@gmail.com
skapunky
Electronik Engineer &
CoAdmin
***
Desconectado Desconectado

Mensajes: 3.439



Ver Perfil WWW
Re: ASM, arquitecturas y procesadores compatibles
« Respuesta #13 en: 1 Diciembre 2011, 21:08 »

vale, comprendo. última pregunta (de momento XD): ¿el lenguaje C es portable? es decir, un programa en C que no tenga ninguna instrucción en ASM, es portable, no?

El lenguaje C es universal pero no portable, a ver si me explico: Si tu programas directamente en la ROM del procesador en C éste programa debe tener enlazada una libreria del procesador que uses, no es lo mismo un intel, que un AMD un Zilog Z80... Este "include" simplemente defines cada parámetro del C a una dirección de memória donde evidentemente depende el procesador esta cambia.

El asm independiemente que cambie según la arquitectura, se le defínen igualmente posiciónes de memória. Por ejemplo las llamadas IRQ's que procesan en general los perfiféricos cada una tiene una dirección de memória (te lo digo como ejemplo).
En línea

GeorgArming

Desconectado Desconectado

Mensajes: 236


Ver Perfil
Re: ASM, arquitecturas y procesadores compatibles
« Respuesta #14 en: 1 Diciembre 2011, 21:14 »

El lenguaje C es universal pero no portable, a ver si me explico: Si tu programas directamente en la ROM del procesador en C éste programa debe tener enlazada una libreria del procesador que uses, no es lo mismo un intel, que un AMD un Zilog Z80... Este "include" simplemente defines cada parámetro del C a una dirección de memória donde evidentemente depende el procesador esta cambia.

El asm independiemente que cambie según la arquitectura, se le defínen igualmente posiciónes de memória. Por ejemplo las llamadas IRQ's que procesan en general los perfiféricos cada una tiene una dirección de memória (te lo digo como ejemplo).

vale, te entiendo. ¿pero entonces cómo es que sólo hay una versión del kernel linux?
En línea

Quieres colaborar con un proyecto innovador? Si sabes C/C++, lenguajes web o entiendes de Linux y Debian, ponte en contacto conmigo a través del foro o por gmail: georgarming@gmail.com
Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
A ver si alguien que controle de arquitecturas me puede comentar ASM...
Programación General
Firos 1 448 Último mensaje 23 Julio 2005, 20:26
por oldcap
Arquitecturas y versiones del Kernel
GNU/Linux
SirLanceCC 4 418 Último mensaje 16 Febrero 2008, 20:59
por tuxsource
Arquitecturas en LINUX
GNU/Linux
Myth.ck 2 435 Último mensaje 4 Mayo 2009, 14:39
por Myth.ck
Compilar para distintas arquitecturas
Programación General
jankoitt 1 661 Último mensaje 16 Noviembre 2010, 05:30
por Littlehorse
Futuro de las arquitecturas: ARM o x86
Hardware
GeorgArming 4 869 Último mensaje 30 Diciembre 2011, 13:49
por GeorgArming
Powered by SMF 1.1.16 | SMF © 2006-2008, Simple Machines