Programación General > Visual C++
La Pregunta Más Básica...
Eternal Idol:
--- Cita de: "patitofeo" ---Si lo que pretendes es utilizar solamente las librerias que incluye windows en su instalacion inicial, entonces cualquier compilador y lenguaje te lo permite. :lol:
--- Fin de la cita ---
No, como ya dije anteriormente:
VB necesita SIEMPRE de su Run Time (MSVBVMx0.DLL) con lo cual no cumple el requisito. No todas las versiones de Windows traen la Run Time Library de VB instalada por defecto.
--- Cita de: "patitofeo" ---Y sin animo de molestarles ¿Han intentado alguna vez construir una aplicacion en ensamblador para una aplicacion win32?
Que locos!!! yo no lo habria incluido en la lista de posibles lenguajes. Solo una llamada a una funcion de la api debe llevar horas de escribir código... jejeje
--- Fin de la cita ---
Hice bastantes aplicaciones de Windows 32 (GUI) en ensamblador y con MASM32 es tan facil como con C. A modo de demostracion:
C:
DestroyWindow(hwnd);
assembly puro:
push hwnd
call DestroyWindow
MASM32:
invoke DestroyWindow, hwnd
:devil: :devil:
Alpha_:
(...)
mov ax, [bp]+26
push ax
call [di]+8
Eso es assembly puro! Jeje... sin variables, sin nada.. pero bueno, todo se traduce fácilmente, se reemplazan los nombres por los offsets y listo.
Sólo para aclarar... y no, sé que parece muy difícil, pero como bien dijo Idol, no lo es tanto.
Sobre los ejecutables, justo el ejemplo de Visual Basic y de .NET son aquellos que no cumplirían el requisito. TODO programa tiene dependencias, pero el resto de los lenguajes que nombraron son aquellos en donde esas dependencias ya están incluidas en una instalación común de Windows, facilitando que con ejecutar el programa ya armado, no haya mayores problemas.
Eternal Idol:
--- Cita de: "Alpha_" --- (...)
mov ax, [bp]+26
push ax
call [di]+8
Eso es assembly puro! Jeje... sin variables, sin nada.. pero bueno, todo se traduce fácilmente, se reemplazan los nombres por los offsets y listo.
Sólo para aclarar... y no, sé que parece muy difícil, pero como bien dijo Idol, no lo es tanto.
--- Fin de la cita ---
Obviamente el codigo que puse yo, como bien decis, necesita del preprocesador pero es totalmente puro porque cualquier ensamblador para x86 lo tiene que entender mientras que el otro codigo no lo es porque la directiva invoke es propia de MASM32. Creo que la diferencia estaba muy clara.
Lo que pusiste tambien es 100% assembly pero no sirve para ilustrar nuestro ejemplo ya que es codigo de 16 bits. Solo para aclarar ...
patitofeo:
Bueno, gracias por la aclaracion y perdon por haber creado confusion.
De todos modos, ¿Cuales son las versiones de windows que no incorporan el Run Time Library?
Yo ejecuto sin problemas programas basicos creados en visual basic sobre windows 98 SE sin necesidad de incluir ninguna DLL que no traiga ya el sistema operativo.
Los programas los compilo en XP, 2000 o el propio 98 y ya digo que funciona. ¿Son versiones anteriores o posteriores?
En cuanto a programar sobre la Api en asembler... Yo nunca dije que no se pudiese.
Ya se que se puede y que no es dificil. Simplemente es tedioso. El ejemplo esta muy bien, pero las funciones de Win32 suelen tener mas de un paramentro y no siempre es tan facil como un entero.
Realmente hace falta mucho codigo (siempre que lo compares con cualquier lenguaje de alto nivel) para hacer una llamada a una funcion que utilice 12 o 13 parametros, y aun mucho mas codigo para mover la pila y las estructuras propias del entorno grafico. Y claro, si pretendes usar algun control, la inicializacion ya es un buen tocho.
Es muy facil pero yo no lo haria....
Muchas gracias por la aclaracion sobre la Run Time Library.
Saludos y perdon por mi error :hola:
Eternal Idol:
--- Cita de: "patitofeo" ---De todos modos, ¿Cuales son las versiones de windows que no incorporan el Run Time Library?
--- Fin de la cita ---
No soy un experto en saber que versiones de Windows la traen pero segun esta pagina ninguna anterior a Windows 2000 (o sea NT 3.x, NT 4.0 y todo Windows 9x) trae la version para VB 5.0, supongo que la 6 sera lo mismo ya que es posterior.
http://support.microsoft.com/dllhelp/?dllt...LL&S=1&x=2&y=12
De cualquier manera el punto es que esa libreria no es del S.O. sino de VB, sin ella seguirian funcionando todos los demas programas hechos en otros lenguajes. :devil:
--- Cita de: "patitofeo" ---Realmente hace falta mucho codigo (siempre que lo compares con cualquier lenguaje de alto nivel) para hacer una llamada a una funcion que utilice 12 o 13 parametros, y aun mucho mas codigo para mover la pila y las estructuras propias del entorno grafico. Y claro, si pretendes usar algun control, la inicializacion ya es un buen tocho.
--- Fin de la cita ---
Las funciones de 12 o 13 parametros son una abominacion :whistling: Pero de cualquier manera, comparacion entre C y MASM32.
C:
Funcion_Con_Muchos_Parametros(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12);
MASM32:
invoke Funcion_Con_Muchos_Parametros, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12
Y los parametros en 32 bits son la amplia mayoria de las veces 4 bytes (un DWORD) ya sea un valor o un puntero.
Navegación
[*] Página Anterior
Ir a la versión completa