• Domingo 22 de Diciembre de 2024, 08:16

Autor Tema:  De Que Depende?  (Leído 3230 veces)

su -

  • Moderador
  • ******
  • Mensajes: 2349
    • Ver Perfil
De Que Depende?
« en: Domingo 4 de Septiembre de 2005, 23:15 »
0
Hey, Hey, Solocodige@s!
me pregunto, de que depende un programa  compilado (de ASM) para correr en una maquina.
libc.so.6, ld...?
*******PELIGRO LEE ESTO!!*******

There is no place like 127.0.0.1

Conecto luego existo, no conecto luego insisto.

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: De Que Depende?
« Respuesta #1 en: Domingo 4 de Septiembre de 2005, 23:58 »
0
Cita de: "su -"
Hey, Hey, Solocodige@s!
me pregunto, de que depende un programa  compilado (de ASM) para correr en una maquina.
libc.so.6, ld...?
Si el programa es para un Sistema Operativo en concreto y este tiene un formato de ejecutable el programa debera seguirlo, teniendo sus respectivas cabeceras.

Desde ese momento el programa no depende de nadie, un programa puede ser tan corto como una instruccion ret. En Linux concretamente ld es un enlazador que generara un archivo ejecutable con el formato requerido (elf comunmente) partiendo del codigo objeto. En este S.O. es posible interactuar directament a base de interrupciones por lo tanto la libc tampoco es indispensable.

Lo mismo pasaria en Windows, aunque sus servicios no estan definidos estaticamente y varian version a version. De cualquier manera el ejemplo del ret sigue siendo valido.

Si el programa es para MS-DOS los ejecutables tipo COM no tienen ningun tipo de cabecera, son el codigo simplemente con lo cual no necesitan ni dependen absolutamente de nada. Incluso pueden no usar los servicios de MS-DOS sino de la BIOS directamente.

Por cierto el termino correcto es ensamblar y no compilar. Ese es mas o menos un panorama, si tenes alguna duda mas concreta tal vez te pueda responder mejor  :devil:  :comp:  :ph34r:

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

su -

  • Moderador
  • ******
  • Mensajes: 2349
    • Ver Perfil
Re: De Que Depende?
« Respuesta #2 en: Lunes 5 de Septiembre de 2005, 23:36 »
0
:o Je-Ni-Al!
Gracias, esta :good:
Lo siento por lo de compilar, tienes razon es ensamblar.
Bueno, entonses es pocible ensamblar un programa en x OS y correrlo en otro OS totalmente diferente?
Tiene que ser directo al BIOS?
Ha, si, los codigos ensamblados son mas pequeños que los de c, c++, cobolt...?
Grasias una vez mas.
 :hola:
*******PELIGRO LEE ESTO!!*******

There is no place like 127.0.0.1

Conecto luego existo, no conecto luego insisto.

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: De Que Depende?
« Respuesta #3 en: Martes 6 de Septiembre de 2005, 00:02 »
0
Cita de: "su -"
:o Je-Ni-Al!
Gracias, esta :good:
Lo siento por lo de compilar, tienes razon es ensamblar.
Bueno, entonses es pocible ensamblar un programa en x OS y correrlo en otro OS totalmente diferente?
Tiene que ser directo al BIOS?
Ha, si, los codigos ensamblados son mas pequeños que los de c, c++, cobolt...?
Grasias una vez mas.
 :hola:
En la practica no es posible porque, como te comentaba antes, los Sistemas Operativos suelen tener un formato de ejecutable propio. Sin tener en cuenta que la BIOS solo es accesible directamente en S.O. de 16 bits (MS-DOS) y no en S.O. de 32 bits como Windows o Linux.
Por lo tanto no es posible hacer siquiera un programa que solo haga ret ya que no es reconocido como un ejecutable por los dos S.O. al mismo tiempo.

Si lo podrias hacer para CP/M y MS-DOS (el segundo esta MUY basado en el primero) con un ejecutable COM que justamente no tiene cabecera.

Olvidandonos del formato que seria solo un problema del binario y no del codigo el verdadero inconveniente es la interfaz de los servicios que hace imposible portar un programa hecho en assembly de un S.O. a otro.

En general al carecer de libreria de run time (rutinas de IO, cadenas, etc) el programa de assembly suele ser mas chico por menos codigo. El tamaño de las rutinas existentes en ambos binarios ya depende de la calidad del programador vs la calidad del compilador  :devil:

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

JuanK

  • Miembro de ORO
  • ******
  • Mensajes: 5393
  • Nacionalidad: co
    • Ver Perfil
    • http://juank.io
Re: De Que Depende?
« Respuesta #4 en: Martes 6 de Septiembre de 2005, 14:59 »
0
Cita de: "su -"
:o Je-Ni-Al!
Gracias, esta :good:
Lo siento por lo de compilar, tienes razon es ensamblar.
Bueno, entonses es pocible ensamblar un programa en x OS y correrlo en otro OS totalmente diferente?
Tiene que ser directo al BIOS?
Ha, si, los codigos ensamblados son mas pequeños que los de c, c++, cobolt...?
Grasias una vez mas.
 :hola:
Citar
Bueno, entonses es pocible ensamblar un programa en x OS y correrlo en otro OS totalmente diferente?

Ademas debes tener en cuenta que no solo se depende del sistema operativo,
puedes crear u programa en assembler que solo funcione en algunos tipos de pentium 4 y en otros no...
adicionalmente maquinas con arquitetura diferente tampoco correrian tu programa, por ejemplo una maquina que use procesadores RISC generalmente no ejecutaria un programa hecho para un 8086... esto tambien implica que hay sistemas operativos que solo corren en un tipo determinado de maquina como ( por el momento) los Apple.

Programar en assembler siempre produce código mucho mas rápido, como lo dice eternal depende en gran parte del programador, pero tienes desventajas en ese sentido ya que el código muchas veces nisiquiera es portable de una maquina a otra aunque sean de la misma familia, cosa que con un lenguaje de mas alto nivel no sucede pues el compilador o la maquina virtual o como se llame en punto net el JIT del  MSIL o lo que sea... se encarga de producir código de alta calidad de acuerdo a las caracteristicas propias de la maquina y/o del sistema operativo.

En este punto creo que se podria decir que el asm mas 'portable' hoy en dia seria el bytecode que se ejecuta para la maquina virtual de java.. pero tambien resulta ser falso ya que mauina virtual es una sola aunque este instalada en maquinas diferentes  :huh:
[size=109]Juan Carlos Ruiz Pacheco
[/size]
Microsoft Technical Evangelist
@JuanKRuiz
http://juank.io

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: De Que Depende?
« Respuesta #5 en: Martes 6 de Septiembre de 2005, 15:20 »
0
Cita de: "JuanK"
Ademas debes tener en cuenta que no solo se depende del sistema operativo,
puedes crear u programa en assembler que solo funcione en algunos tipos de pentium 4 y en otros no...
adicionalmente maquinas con arquitetura diferente tampoco correrian tu programa, por ejemplo una maquina que use procesadores RISC generalmente no ejecutaria un programa hecho para un 8086... esto tambien implica que hay sistemas operativos que solo corren en un tipo determinado de maquina como ( por el momento) los Apple.

Sin lugar a dudas un apunte correcto, practicamente cada arquitectura tiene sus instrucciones y codigo binario propio.

Cita de: "JuanK"
Programar en assembler siempre produce código mucho mas rápido, como lo dice eternal depende en gran parte del programador, pero tienes desventajas en ese sentido ya que el código muchas veces nisiquiera es portable de una maquina a otra aunque sean de la misma familia, cosa que con un lenguaje de mas alto nivel no sucede pues el compilador o la maquina virtual o como se llame en punto net el JIT del  MSIL o lo que sea... se encarga de producir código de alta calidad de acuerdo a las caracteristicas propias de la maquina y/o del sistema operativo.

En este punto creo que se podria decir que el asm mas 'portable' hoy en dia seria el bytecode que se ejecuta para la maquina virtual de java.. pero tambien resulta ser falso ya que mauina virtual es una sola aunque este instalada en maquinas diferentes  :huh:

Yo no dije eso en ningun momento, no hable sobre la velocidad del codigo. En ese aspecto es incluso mucho mas dificil ganarle al compilador y se necesitan muchos mas conocimientos. No es lo mismo optimizar para tamaño que optimizar para velocidad.

Y si, .NET y Java son muy portables, mientras esten sus respectivos 'ayudantes' instalados  :devil:

PD. El lenguaje es assembly, assembler es el programa que ensambla.

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

JuanK

  • Miembro de ORO
  • ******
  • Mensajes: 5393
  • Nacionalidad: co
    • Ver Perfil
    • http://juank.io
Re: De Que Depende?
« Respuesta #6 en: Martes 6 de Septiembre de 2005, 15:27 »
0
Citar
PD. El lenguaje es assembly, assembler es el programa que ensambla
:blink:
y en español?
[size=109]Juan Carlos Ruiz Pacheco
[/size]
Microsoft Technical Evangelist
@JuanKRuiz
http://juank.io

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: De Que Depende?
« Respuesta #7 en: Martes 6 de Septiembre de 2005, 15:57 »
0
Cita de: "JuanK"
Citar
PD. El lenguaje es assembly, assembler es el programa que ensambla
:blink:
y en español?
Es ensamblador en ambos casos y al no existir esa distincion es que se produce con regularidad el equivoco en Ingles.

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

su -

  • Moderador
  • ******
  • Mensajes: 2349
    • Ver Perfil
Re: De Que Depende?
« Respuesta #8 en: Sábado 10 de Septiembre de 2005, 00:05 »
0
Grachie, ¿mejor documentacion es deifcil no?
Gracias una vez mas.
 :think:
*******PELIGRO LEE ESTO!!*******

There is no place like 127.0.0.1

Conecto luego existo, no conecto luego insisto.

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: De Que Depende?
« Respuesta #9 en: Domingo 11 de Septiembre de 2005, 19:40 »
0
Cita de: "su -"
Grachie, ¿mejor documentacion es deifcil no?
Gracias una vez mas.
 :think:
De nadas, ¿mejor documentacion?

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.