elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Guía rápida para descarga de herramientas gratuitas de seguridad y desinfección


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

Mensajes: 3.118


Ingeniería inversa / MASM


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

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


Solicitudes de crack, keygen, serial solo a través de mensajes privados (PM)
GeorgArming


Desconectado Desconectado

Mensajes: 350


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

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 pm por GeorgArming » En línea

GeorgArming


Desconectado Desconectado

Mensajes: 350


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

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

skapunky
Electronik Engineer &
Colaborador
***
Desconectado Desconectado

Mensajes: 3.667


www.killtrojan.net


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

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

Killtrojan Syslog v1.44: ENTRAR
GeorgArming


Desconectado Desconectado

Mensajes: 350


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

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

skapunky
Electronik Engineer &
Colaborador
***
Desconectado Desconectado

Mensajes: 3.667


www.killtrojan.net


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

El kernel de linux está optimizado para trabajar en mas de 1 tipo de procesador, pero eso no quita que cada empresa (intel,amd...)tenga que aportar codigo para que el kernel de linux sea compatible en su procesador.

Cada empresa ya se a encargado de dar su granito de arena para hacer compatible el kernel de linux y seguirán optimizando el codigo para corregir o mejorar su rendimiento.

El kernel de linux es algo complego, no es un solo archivo de codigo fuente. 
En línea

Killtrojan Syslog v1.44: ENTRAR
GeorgArming


Desconectado Desconectado

Mensajes: 350


Ver Perfil
Re: ASM, arquitecturas y procesadores compatibles
« Respuesta #16 en: 1 Diciembre 2011, 22:01 pm »

muchísimas gracias a todos, mi duda ha quedado resuelta (aunque he descubierto que lo que quería no existe  :-\).

disculpad que vaya haciendo una pregunta tras otra  :D, pero ya que estamos, para no abrir un tema nuevo, y con relación con los OS: ¿por qué los sistemas operativos no tienen función main? hasta donde yo sé, cuando se ejecuta un programa, se va siguiendo la función main y se van haciendo las diferentes funciones. pero si un OS no tiene main, cuando se inicia el sistema operativo, ¿qué parte del código indica que tiene que comenzar por el bootloader, y no por otra parte del código?
En línea

skapunky
Electronik Engineer &
Colaborador
***
Desconectado Desconectado

Mensajes: 3.667


www.killtrojan.net


Ver Perfil WWW
Re: ASM, arquitecturas y procesadores compatibles
« Respuesta #17 en: 3 Diciembre 2011, 12:41 pm »

Piensa que si un SO tuviera un MAIN como lo conocemos en programación, solo se ejecutaria una instrucción en cada momento y la utilidad del pc seria nula, es decir, no funcionaria.

Un SO es mas complejo que un programa hecho por ejemplo en C, incluso mas complejo que un programa hecho en un microcontrolador. Yo te pondré el caso de un microcontrolador.

Un microcontrolador tiene una parte de programa principal (main) y aparte de forma paralela puede utilizar dos tipos de interrupciónes, las externas e internas. Es decir cuando se activan ejecutan el codigo que se les asigna. La función de estas es ejecutar un codigo paralelo al codigo del programa.

Un procesador de ordenador, para que me entiendas tendría una gran cantidad de "interrupciones" piensa que mientras se le el puerto del USB, se debe leer el teclado, o enviar una señal a la tarjeta grafica, o procesar el borrado de un archivo..como veras la lista es muy grande. Si el SO se ejecutase en una secuencia lineal en un MAIN todo eso no podría ser posible.

El tema del bootloader es otra cuestión, el bootloader se ejecuta directamente en el procesador a 16 bits en ensamblador, éste puede tener diferentes funciónes entre otras cargar archivos del SO para que se inície y estos ya pueden estar escritos en ensamblador o C.
En línea

Killtrojan Syslog v1.44: ENTRAR
GeorgArming


Desconectado Desconectado

Mensajes: 350


Ver Perfil
Re: ASM, arquitecturas y procesadores compatibles
« Respuesta #18 en: 3 Diciembre 2011, 16:02 pm »

muchas gracias. veo que aquí hay auténticos cracks  :D.
En línea

pucheto

Desconectado Desconectado

Mensajes: 215


Ver Perfil
Re: ASM, arquitecturas y procesadores compatibles
« Respuesta #19 en: 3 Diciembre 2011, 16:28 pm »

Fijate de conseguir http://www.amazon.com/Essentials-Computer-Organization-Architecture/dp/0763737690

Si queres saber mas sobre arquitecturas de computadoras ( Es introductorio, pero vale la pena leerlo ).
En línea

Páginas: 1 [2] 3 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Compilar para distintas arquitecturas
Programación General
jankoitt 1 2,380 Último mensaje 16 Noviembre 2010, 05:30 am
por Littlehorse
Futuro de las arquitecturas: ARM o x86
Hardware
GeorgArming 4 4,466 Último mensaje 30 Diciembre 2011, 13:49 pm
por GeorgArming
Los nuevos Mac de Apple con procesadores ARM no serán compatibles con Windows 10
Noticias
El_Andaluz 0 4,912 Último mensaje 25 Junio 2020, 19:13 pm
por El_Andaluz
Procesadores Compatibles « 1 2 »
Hardware
B€T€B€ 12 10,255 Último mensaje 9 Junio 2022, 23:36 pm
por AC1
Exploiting en arquitecturas i386 Parte 1
Bugs y Exploits
D4lt0n 1 3,088 Último mensaje 1 Diciembre 2023, 17:30 pm
por D3s0rd3n
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines