Digamos que usamos NASM como lo hacen en esta respuesta: how to write hellow world in assembly under windows.Creando una función de biblioteca Hello World en el ensamblado y llamándola desde C#
Tengo un par de pensamientos y preguntas sobre el ensamblaje combinado con C# o cualquier otro idioma .net para el caso.
En primer lugar yo quiero ser capaz de crear una biblioteca que tiene la siguiente función HelloWorld
que toma este parámetro:
- Nombre
En C# la firma del método sería looke como esto: void HelloWorld(string name)
y sería imprimir algo así como
Hello World desde nombre
He buscado un poco, pero no puedo encontrar tanto material bueno y limpio para que esto me ayude a empezar. Sé un poco de ensamblaje básico de antes, en su mayoría gas
sin embargo.
Por lo tanto, cualquier puntero en la dirección correcta es muy apreciado.
para resumir
- Crear una rutina en ASM (NASM) que tiene uno o más parámetros
- Compilar y crear una biblioteca de la funcionalidad por encima de
- incluyen la biblioteca en cualquier NET
- Llame a la función de la biblioteca incluida
características de la prima
- valores devueltos ¿Cómo funciona un mango?
- ¿Es posible escribir en línea el método ASM?
Al crear bibliotecas en ensamblador oc, usted sigue cierta forma "predefinida", la convección de llamada c, ¿correcto?
Cdecl almacena el valor de retorno en 'eax' ¿no? Entonces, sería bastante fácil ajustar el ASM para devolver la cadena en lugar de (hacer trampa;) llamar a printf? –
Claro, solo necesita asignar memoria para la cadena, concatenar el valor pasado con la cadena estática, y devolver ese valor en eax. –