elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Ingresar Registrarse
07 Octubre 2008, 22:25  



+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (Moderadores: BADBYTE-K, hadess_inf)
| | | |-+  Crear código nativo con Mono
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Imprimir
Autor Tema: Crear código nativo con Mono  (Leído 644 veces)
Casidiablo
Colaborador

Desconectado Desconectado

Mensajes: 2.812


Más inteligente que el simio promedio


Ver Perfil WWW
Crear código nativo con Mono
« en: 26 Julio 2006, 19:36 »


Si, ya sé que para crear codigo nativo se utiliza la bandera --aot. Al utilizar esto en linux en un archivo llamado programa.exe (por ejemplo), se crea un archivo llamado programa.exe.so. Pero vaya sorpresa me llevo, al darme cuenta que al intentar ejecutarlo me sale el siguiente error:


Código:
Violación de segmento

Pero, ¿què coñ0s es eso? Analicé el archivo con el comando file, y todo normal, el archivo programa.exe.so es un ELF de 32 bits. Inclusive, miré su código en assembler con el comando objdump, y parece estar bien.

Intenté probarlo en windows, y nisiquiera  puedo crear el archivo que estaría supuestamente en código nativo.

Espero vuestra ayuda....
En línea

Masturba tu cerebro y eyacularán tus ideas...



Visita mi blog:

JuanK_solocodigo

Desconectado Desconectado

Mensajes: 268



Ver Perfil WWW
Re: Crear código nativo con Mono
« Respuesta #1 en: 26 Julio 2006, 20:43 »

Aunque este en codigo nativo debes ejecutarlo usando
mono miprograma.

Por otro lado en windows la opcion no esta incuida en el compilador  sino que es una utilidad aparte que se usa por la consola de comandos llamada ngen.

ngen nombreensamblado
« Última modificación: 26 Julio 2006, 20:46 por JuanK_solocodigo » En línea

Juan Carlos Ruiz
Ingeniero de Sistemas
Mi Blog
http://foros.solocodigo.com
programacion,c,c++,
C#,java
JuanK_solocodigo

Desconectado Desconectado

Mensajes: 268



Ver Perfil WWW
Re: Crear código nativo con Mono
« Respuesta #2 en: 26 Julio 2006, 20:56 »

hasta donde entiendo la opcion de codigo nativo no implica que el programa cambie la manera en que se ejecuta, es decir tambien requiere que se use como intermediario el framework puesto que aun depende de sus servicios como por ejemplo el GC.

Lo que realmente hace esta utilidad es llevar a cabo el proceso que hace el JIT  por anticipado, lo cual acelera el tiempo de carga de la aplicacion ya que esta previamente convertida en codigo nativo.

Recordemos que en .NET el codigo se encuentra en estado de compilacion intermedia y una vez se ejecuta se termina la compilacion del codigo, sin embargo esta compilacion no es total y se va pasando por el JIT solo lo que se va necesitando, por ello la primera vez que ase accede a una funcion o modulo se demora un poco más mientras se realiza el proceso de compilacion final, pero ya una vez sucede esto la función se ejecuta en codigo nativo y es identica en rendimiento que un programa hecho en lenguaje nativo directamente; asi que la utilidad de convertir a codigo nativo lo que hace es terminar el proceso de compilacion del ensamblado de tal froma que cuando se use el programa no existan tiempos de carga porque ya esta todo convertido a codigo nativo. ;D

La desventaja de esto es que el proceso que convierte todo a codigo nativo no es tan eficiente como el JIT, ya que el JIT genera codigo nativo de acuerdo a una situacion particular de la maquina incluso dependiendo de en un momento determinado en el consumo de recursos.

La opcion de generar el ensamblado en codigo nativo tambien tiene el problema que al llevar tu ejecutab le o tus librerias .net a otra plataforma no van a funcionar por lo cual se recomienda hacer algo como lo que hace el instalador de Sharp develop, es decir una vez copiados o instalados los ensamblados en codigo CIL se ejecuta un batch que inicia el proceso de generacion de codigo nativo utilizando ngen.
En línea

Juan Carlos Ruiz
Ingeniero de Sistemas
Mi Blog
http://foros.solocodigo.com
programacion,c,c++,
C#,java
Casidiablo
Colaborador

Desconectado Desconectado

Mensajes: 2.812


Más inteligente que el simio promedio


Ver Perfil WWW
Re: Crear código nativo con Mono
« Respuesta #3 en: 27 Julio 2006, 23:26 »

Ok, gracias. Ahora lo entiendo.... gracias por la aclaración; desafortunadamente, para mi, en la documentación de mono no me decían eso... talvez no supe leer (todo en inglés).

Gracias, y saludos!!!
En línea

Masturba tu cerebro y eyacularán tus ideas...



Visita mi blog:

JuanK_solocodigo

Desconectado Desconectado

Mensajes: 268



Ver Perfil WWW
Re: Crear código nativo con Mono
« Respuesta #4 en: 27 Julio 2006, 23:27 »

en la documentacion de microsoft si esta, mono no ha hecho documentacion al respecto pero en el estandart del CIL debe de estar.
« Última modificación: 27 Julio 2006, 23:33 por JuanK_solocodigo » En línea

Juan Carlos Ruiz
Ingeniero de Sistemas
Mi Blog
http://foros.solocodigo.com
programacion,c,c++,
C#,java
Casidiablo
Colaborador

Desconectado Desconectado

Mensajes: 2.812


Más inteligente que el simio promedio


Ver Perfil WWW
Re: Crear código nativo con Mono
« Respuesta #5 en: 27 Julio 2006, 23:32 »

El problema es que solo he trasteado con la de Mono. ¿olvidé decir gracias?
En línea

Masturba tu cerebro y eyacularán tus ideas...



Visita mi blog:

JuanK_solocodigo

Desconectado Desconectado

Mensajes: 268



Ver Perfil WWW
Re: Crear código nativo con Mono
« Respuesta #6 en: 27 Julio 2006, 23:34 »

Ok, gracias. Ahora lo entiendo.... gracias por la aclaración; desafortunadamente, para mi, en la documentación de mono no me decían eso... talvez no supe leer (todo en inglés).

Gracias, y saludos!!!


No, ahí estaba.  :D ;D ;)
En línea

Juan Carlos Ruiz
Ingeniero de Sistemas
Mi Blog
http://foros.solocodigo.com
programacion,c,c++,
C#,java
Casidiablo
Colaborador

Desconectado Desconectado

Mensajes: 2.812


Más inteligente que el simio promedio


Ver Perfil WWW
Re: Crear código nativo con Mono
« Respuesta #7 en: 29 Julio 2006, 01:06 »

Nada, después de intentar lo leído anteriormente me sigue pasando lo mismo... explico mis pasos detalladamente:

Haber, tengo el archivo en C# (*.cs):


Código:
casidiablo@casidiablo:~/fuentes/csharp/Ejemplo1$ ls
Ejemplo.cs
casidiablo@casidiablo:~/fuentes/csharp/Ejemplo1$ cat Ejemplo.cs
using System;
public class Ejemplo
{
        static int a, b, c;
        public static void Main(string[] args)
        {
                a = 25;
                b = a * 2;
                c = b * b + a;
                Console.WriteLine ("Hello parce!!!");
                Console.WriteLine ("El valor de A, B y C es: "+a+" "+b+" "+c);
                Console.WriteLine ("A + B + C es "+(a+b+c));
                Console.WriteLine ("Fin de la putada");
        }
}

Despues de ello compilo el archivo con el comando mcs...

Código:
casidiablo@casidiablo:~/fuentes/csharp/Ejemplo1$ mcs Ejemplo.cs
casidiablo@casidiablo:~/fuentes/csharp/Ejemplo1$ ls
Ejemplo.cs  Ejemplo.exe

Lo ejecuto con el comando mono:

Código:
casidiablo@casidiablo:~/fuentes/csharp/Ejemplo1$ mono Ejemplo.exe
Hello parce!!!
El valor de A, B y C es: 25 50 2525
A + B + C es 2600
Fin de la putada

Lo "traduzco al codigo nativo" utilizando el falg --aot.

Código:
casidiablo@casidiablo:~/fuentes/csharp/Ejemplo1$ mono --aot Ejemplo.exe
Mono Ahead of Time compiler - compiling assembly /home/casidiablo/fuentes/csharp/Ejemplo1/Ejemplo.exe
Code: 419 Info: 148 Ex Info: 9 Class Info: 30 GOT: 156
Executing the native assembler: as /tmp/mono_aot_zZxuHc -o /tmp/mono_aot_zZxuHc.o
Executing the native linker: ld -shared -o /home/casidiablo/fuentes/csharp/Ejemplo1/Ejemplo.exe.so /tmp/mono_aot_zZxuHc.o
Compiled 2 out of 2 methods (100%)
0 methods contain absolute addresses (0%)
0 methods contain wrapper references (0%)
0 methods contain lmf pointers (0%)
0 methods have other problems (0%)
AOT RESULT 0
casidiablo@casidiablo:~/fuentes/csharp/Ejemplo1$ ls
Ejemplo.cs  Ejemplo.exe  Ejemplo.exe.so

Pero al intentar correr el programa con mono, o con el comando ./ me sale:

Código:
casidiablo@casidiablo:~/fuentes/csharp/Ejemplo1$ mono Ejemplo.exe.so
cannot open assembly Ejemplo.exe.so
casidiablo@casidiablo:~/fuentes/csharp/Ejemplo1$./Ejemplo.exe.so
Violación de Segmento

Analizo el archivo que es, supuestamente, código nativo, con el comando file y aparentemente es un ejecutable común y corriente:

Código:
casidiablo@casidiablo:~/fuentes/csharp/Ejemplo1$ file Ejemplo.exe.so
Ejemplo.exe.so: ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), not stripped

Y vuelvo a la pregunta inicial... ¿como le hago?
En línea

Masturba tu cerebro y eyacularán tus ideas...



Visita mi blog:

Casidiablo
Colaborador

Desconectado Desconectado

Mensajes: 2.812


Más inteligente que el simio promedio


Ver Perfil WWW
Re: Crear código nativo con Mono
« Respuesta #8 en: 31 Julio 2006, 18:39 »

¿Nadie sabe?
En línea

Masturba tu cerebro y eyacularán tus ideas...



Visita mi blog:

JuanK_solocodigo

Desconectado Desconectado

Mensajes: 268



Ver Perfil WWW
Re: Crear código nativo con Mono
« Respuesta #9 en: 31 Julio 2006, 19:29 »

ya le diste el atributo de ejecucion al ejecutable creado?

en todo caso? par
En línea

Juan Carlos Ruiz
Ingeniero de Sistemas
Mi Blog
http://foros.solocodigo.com
programacion,c,c++,
C#,java
JuanK_solocodigo

Desconectado Desconectado

Mensajes: 268



Ver Perfil WWW
Re: Crear código nativo con Mono
« Respuesta #10 en: 31 Julio 2006, 19:35 »

ya le diste el atributo de ejecucion al ejecutable creado?

en todo caso? para que quieres usar esa caracteristica de .NET? pierde la gracia un poco.
Ademas, ya revisaste la documentacion de mono? estas seguro que ya esta soportado totalmente para tu plataforma?
En línea

Juan Carlos Ruiz
Ingeniero de Sistemas
Mi Blog
http://foros.solocodigo.com
programacion,c,c++,
C#,java
Casidiablo
Colaborador

Desconectado Desconectado

Mensajes: 2.812


Más inteligente que el simio promedio


Ver Perfil WWW
Re: Crear código nativo con Mono
« Respuesta #11 en: 01 Agosto 2006, 17:07 »

Concuerdo con que pierde la gracia utilizando esta caracteristica. Pero conocimiento en conocimiento, y el hecho no es ese. El verdadero hecho es poder utilizar alguna vez ésta característica, saber que existe y que está disponible. Pero no he podido ;(
En línea

Masturba tu cerebro y eyacularán tus ideas...



Visita mi blog:

Páginas: [1] Ir Arriba Imprimir 
Ir a:  







Consolas     La Web de Goku     MilW0rm     MundoDivx

Hispabyte     Truzone     TodoReviews     ZonaPhotoshop

hard-h2o modding    Foros de ayuda    Yashira.org    Videojuegos    indetectables.net   

Noticias Informatica    Seguridad Informática    ADSL    Foros en español    eNYe Sec

Todas las webs afiliadas están libres de publicidad engañosa.

Powered by SMF 1.1.6 | SMF © 2006-2008, Simple Machines LLC