Estás en: Inicio >> Foros >> Informática >> Programación
Programación /

duda filosofica

Participa en el tema duda filosofica en el foro Programación.
Originalmente publicado por joshua1983...2

Buscar en este tema:
< 1 2
 
  •  
    joshua1983 escribió hace 2 meses
     
  • #11 Re: duda filosofica

    Originalmente publicado por joshua1983 Ver mensaje
    si miramos con detenimiento un kernel seria entonces como un programa que brinda servicios a otros programas como el acceso a los archivos y las interrupciones de procesador y todo eso; segun lo que yo entendi de ExtrañoInocente, el codigo ensamblador no interactua con ningun kernel, sino directamente sobre la maquina... por lo que no se necesitaria ningun kernel para crear un compilador y sobre este compilador programar en C y asm y asi seria el nacimiento de un nuevo kernel.. bonito cierto?
    Exacto, vos pensa que tu arquitectura de maquina en particular soporta un assembler determinado y con este assembler un conjunto de instrucciones maquina, que de por si las interpreta y las sabe ejecutar, que generalmente se definen en hexadecimal para nosotros (pero se escriben en disco / memoria / en binario) y la arquitectura misma (lease procesador, Unidad Aritmetica y Logica) de la arquitectura en particular ya tiene implementadas como hacerlas o ejecutarlas...

    En un principio cuando querias programar para una maquina en particular tenias un libro de instrucciones que te daba el formato de la instruccion, si era instruccion de un solo operando, de varios operandos, si era de palabra a palabra, de palabra a un registro de la Unidad Aritmetica y Logica, con sus respectivos codigos en hexadecimal y uno iba progamando escribiendo cada instruccion maquina en binario...

    Sobre eso decidieron hacerle la vida mas facil al programador y desarrollaron los primeros assembler, que en vez de tragarte un libro de no se cuantas paginas y aprenderte el hexadecimal de cada instruccion y demas, tenias el lenguaje ensamblador que te permitia escribir codigo "legible" con nombres para las instrucciones, como LOAD, MVI (Move Inmediate), ST (Store), CLC (Compare Logical Character), etc, generalmente estas instrucciones se correlacionaban 1 a 1 con las instrucciones maquina del micro o arquitectura a programar... Y el ensamblador transformaba dicha instruccion en assembler a su codigo binario maquina para que la maquina sepa interpretarla...

    Esto estra mas abajo que el kernel del sistema operativo, programas directamente sobre la maquina son instrucciones que interactuan directamente sobre la maquina y podes acceder a todos los perifericos, interrupciones y demas, cosa que sobre eso se programan los kernels que facilitan y prestan servicios de mas alto nivel a los programas...

    En vez de programar 100 lineas de assembler cada vez que vas a guardar datos en un archivo, directamente ya tenes abstraido eso desde el kernel que te provee una funcion mas alto nivel para que vos accedas a arcihvos, y asi sucesivamente...

    Saludos
    Pablo
    Me gusta este mensaje
  • #12 Re: duda filosofica

    pero el assembler reside en algun lado? no se si me equivoco pero tengo la creencia que el aseembler es un programa o es solamente una tabla de sinonimos que esta "quemada" en el procesador?, seria entonces por eso cada nuevo procesador trae un set de instrucciones nuevo para la multimedia y cosas asi cierto?
    Me gusta este mensaje
  • #13 Re: duda filosofica

    Originalmente publicado por joshua1983 Ver mensaje
    pero el assembler reside en algun lado? no se si me equivoco pero tengo la creencia que el aseembler es un programa o es solamente una tabla de sinonimos que esta "quemada" en el procesador?, seria entonces por eso cada nuevo procesador trae un set de instrucciones nuevo para la multimedia y cosas asi cierto?
    El assembler como bien dice su nombre es solamente un ensamblador, lo que hace es sacar el nmemotecnico(mov, push, etc) y te lo traduce a binario, asi lo almacena en disco, cuando el S.O. lo levanta "lee" ese binario y asi como esta lo manda a la pila de ejecucion, por eso es que el assembler es particular para cada tipo de micro, pero los micros de alguna forma se estandarizaron, por eso es que esta el x86(entiende el set de instrucciones de toda la familia x86), otros el i386, etc. con assembler tenes la facilidad de sacarle el mayor provecho al hardware pero sonaste, te quedas atado al tipo de micro, por ejemplo yo hice un programa de procesamiento de imagenes y en la primera version use las extensiones MMX del micro que te proveen muchoas operaciones matematicas piolas para hacer una transformacion pero ahi tenes la contra de que el requerimiento seria micro pentium MMX o mayor.
    Para hacer un S.O. deberias programar en assembler por lo menos las primeras interrupciones que te gestione el disco, la memoria y que te proporcione una pila de ejecucion y eso instalarlo en el sector 0 del disco, a partir de ahi.........................................
    Me gusta este mensaje
  • #14 Re: duda filosofica

    De hecho, el sistema operativo no es el que se encarga de arrancar la maquina ni nada x el estilo, todas las computadoras de hoy en dia tienen un BIOS junto con un programa de arranque que se instala en el MBR, ese programa de arranque lo que hace es interpretar la tabla de particiones de tu disco / discos y luego de esos seleccionar el primer disco a bootear, el disco a bootear tiene en el sector cero de esa particion codigo escrito en binario con las instrucciones maquinas que permiten que el sistema operativo arranque, almenos eso esta programado en assembler y es dependiendo de la arquitectura de maquina que tengas, luego de ahi ya hace gestionar y levantar el kernell y demas servicios del sistema operativo...

    Saludos
    Pablo
    Me gusta este mensaje
  • #15 Re: duda filosofica

    Suele haber una confusión entre "assembler" y "Lenguaje de máquina". El lenguaje de máquina es el único que entiende la cpu. Finalmente, todos los programas, sistemas operativos, kernels, etc. quedan en lenguaje de máquina.
    El assembler es un "compaginador", una especie de compilador muy simple, que traduce un lenguaje mnemotécnico ("Assemby Language") a lenguaje de máquina.
    Esto es muy similar al lenguaje C, muy cercano al Assembly Language, que se traduce por medio de un compilador (Borland, Visual C++, Bloodshed Dev, etc.) a lenguaje de máquina.
    Luego están otros lenguajes tales como el Basic, COBOL, etc., etc., pero TODOS deben ser traducidos a lenguaje de máquina para poder funcionar.
    Me gusta este mensaje
  • #16 Re: duda filosofica

    Gracias a Dios los dilemas tipo "primero el huevo o la gallina" en sistemas son mas sencillos que en la naturaleza... ... gracias por todos sus aportes... otro dia me fumo un cigarrillo y filosofamos sobre aquellas cosas que damos por sentadas... ... por cierto ExtrañoInocente... esa frase me pareció escucharla en "Revolution OS"
    Me gusta este mensaje
< 1 2
Estás en: Inicio >> Foros >> Informática >> Programación


Estadísticas del tema
  • 15 RESPUESTAS
  • 174 VISTAS
  • 6 USUARIOS RESPONDIERON
 
Ir arriba
Contacto | Acerca de | Ayuda | Términos Legales | privacidad | Pautas de convivencia | Mapa de los foros | TrabajÁ con nosotros
©2008 Psicofxp.com S.A. - Todos los derechos reservados
Certifica IAB