• Martes 13 de Mayo de 2025, 05:59

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Mensajes - Eternal Idol

Páginas: 1 ... 186 187 [188] 189 190 ... 205
4676
ASM (Ensamblador) / Re: De Que Depende?
« en: Martes 6 de Septiembre de 2005, 15:20 »
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.

4677
La taberna del BIT / Re: Internet Explorer 7
« en: Martes 6 de Septiembre de 2005, 08:37 »
A mi me suena que se le van a saturar los servidores  :D  :D

4678
ASM (Ensamblador) / Re: De Que Depende?
« en: Martes 6 de Septiembre de 2005, 00:02 »
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:

4679
ASM (Ensamblador) / Re: De Que Depende?
« en: Domingo 4 de Septiembre de 2005, 23:58 »
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:

4680
Visual C++ / Re: Crear Instalador De Mi Aplicacion
« en: Viernes 2 de Septiembre de 2005, 10:37 »
Esa libreria (OPENGL32) solo funciona en XP porque tiene importada la funcion IsWow64Process cuyos requisitos son:

Cita de: "MSDN"
Requirements
Client: Requires Windows XP.
Server: Requires Windows Server 2003.
Header: Declared in Winbase.h; include Windows.h.
Library: Use Kernel32.lib.

Intenta conseguir una version un poco mas compatible.  :devil:

4681
Visual C++ / Re: Crear Instalador De Mi Aplicacion
« en: Jueves 1 de Septiembre de 2005, 19:09 »
En Ingles lo tengo aca:
\Program Files\Microsoft Visual Studio\Common\Tools

 :devil:

4682
Visual C++ / Re: Crear Instalador De Mi Aplicacion
« en: Jueves 1 de Septiembre de 2005, 18:25 »
Cita de: "Diodo"
Esta bien el programilla.

¿Seguro que viene con Visual C++ 6.0?

No me suena mucho el nombre.¿Que viene en el menu de herramientas o a parte?
Si, no viene con el .NET 2003 pero si con el 6.0, esta en la carpeta tools (no tengo instalado el 6.0 aca).

 :devil:

4683
Visual FoxPro / Re: Error "c0000005" - ¿por Qué Ocurre?
« en: Jueves 1 de Septiembre de 2005, 17:52 »
Es un error del ejecutable, un acceso a memoria que no es valida. ¿Como evitarlo? No conozco casi nada de VFP, intenta depurar tu programa y ver en que punto se da la excepcion.

4684
Visual C++ / Re: Crear Instalador De Mi Aplicacion
« en: Jueves 1 de Septiembre de 2005, 17:51 »
El Dependency Walker te permite ver las librerias de las cuales depende (estaticamente) un ejecutable, viene con VC++ 6 y tambien lo podes bajar de aca:

http://www.dependencywalker.com/

 :devil:  :comp:  :smartass:

4685
ASM (Ensamblador) / Re: Asm En C++
« en: Jueves 1 de Septiembre de 2005, 09:50 »
El modo no tiene ningun contenido, en info tenes las informacion sobre ese modo si la funcion te devuelve 0 en AH, si te devuelve 1 es porque hubo un error.
Todo eso teniendo en cuenta que VESA esta soportado y en AL te devuelve 4Fh.

Si todo va bien en ES:DI vas a tener los datos sobre el modo, que podes ver en este pagina http://www.opferman.net/Text/svga.txt son algo asi:

/* VESA Mode Information Structure */
typedef struct vesa_type {
    short ModeAttrib;
    char WindowA_Attrib, WindowB_Attrib;
    short WinGran, WinSize, SegWinA, SegWinB;
    long WindowPointer;
    short Bits_Per_Scanline, HorzRes, VertRes;
   
    char Width, Height, MemPlanes,
          BPP, NumBanks, MemType,
          SizeBank, NumberPages, Reserved,
          RedMaskSize, RedFieldPos, GreenMaskSize,
          GreenFieldSize, BlueMaskSize, BlueFieldSize,
          ReservedMaskSize, ReservedMaskPos,
          DirectColorModeInfo, ReservedBlock[216];
         
} VesaInfo, *VesaInfoPtr;

Tambien aca podes encontrar informacion al respecto:
http://www.ctyme.com/intr/rb-0274.htm

Probablemente tu problema sea que no estas configurando bien el registro ES, ¿tu programa es un EXE?


Si lo que queres es obtener el modo actual aca tenes como hacerlo:
http://www.ctyme.com/intr/rb-0276.htm

 :smartass:  :devil:  :comp:  :ph34r:

4686
ASM (Ensamblador) / Re: Como Puedo Escribir En Sector 0 De A
« en: Miércoles 31 de Agosto de 2005, 07:34 »
Cita de: "juanito20"
hola, gracias por la ayuda, ya se como escribir en el sector 0, averigue sobre una rutina de C llamada biosdisk y hare uso de ella, pero, ahora descubri que lo que debo escribir no es ni un exe ni un com (o almenos eso entiendo), sino un .bin el cual no se como generar con tasm, y ademas el codigo que he hecho no compila asi no mas creo que es porque no tiene la estructura normal de un programa corriente de ensamblador por lo que entiendo que debo traducir directamente a unos y ceros pero no se como, gracias
Por partes:

biosdisk no es de C, es de un compilador de Borland, NO TE RECOMIENDO que uses eso sino alguna de las alternativas descriptas arriba, son las maneras correctas de hacerlo.

exe no podes usar porque tiene cabecera y el codigo del boot sector tiene que ser eso simplemente codigo. COM podes usar tranquilamente al ser un formato sin cabeceras, codigo puro. BIN es simplemente codigo en hexadecimal, no existe nada que sea binario en archivos, la minima unidad de datos es el byte, despues el micro (creo) lo interpretara en binario.
En resumen si haces un .COM con su org a 07C00h lo podes usar en el primer sector del diskette.

4687
ASM (Ensamblador) / Re: Como Puedo Escribir En Sector 0 De A
« en: Martes 30 de Agosto de 2005, 08:35 »

4688
Visual C++ / Re: Dll Creada En Visual C++ No Funciona En Vb
« en: Martes 30 de Agosto de 2005, 07:41 »
Era mucho mas simple como venias haciendolo (sin archivo de definiciones). Por cierto WINAPI es una macro que esta definida jutsamente a __stdcall, con lo cual pusiste lo que te dije extern "C" y __stdcall pero sacaste algo que ya usabas antes (dllexport).

 :smartass:  :devil:

4689
C/C++ / Re: Imprimir En Impresora Remota
« en: Martes 30 de Agosto de 2005, 07:40 »
Cita de: "JuanK"
que raro  :blink:
ahi v a de nuevo  :kicking:
Ahora si  :smartass:  :hola:

4690
C/C++ / Re: Imprimir En Impresora Remota
« en: Lunes 29 de Agosto de 2005, 21:40 »
Yo lo sigo viendo en retos  :blink:  :blink:

4691
Visual C++ / Re: Dll Creada En Visual C++ No Funciona En Vb
« en: Lunes 29 de Agosto de 2005, 12:11 »
El problema es el que marca VB, no encuentra la funcion GetCharX exportada en la libreria. Esto pasa porque la estas exportando como C++: ?GetCharX@@YAPADHH@Z.

La tenes que exportar como C y stdcall para que no te decore el nombre y VB la pueda usar (VB no soporta otra convencion de llamada que no sea stdcall).

En el .H:

extern "C" EXPORT char * __stdcall GetCharX(int, int);

En el .CPP:

extern "C" EXPORT char * __stdcall GetCharX(int iCode, int bPage)

De cualquier manera tampoco esta correcto el codigo, estas devolviendo un puntero a una variable local y estas variables estan en la pila, tenes un par de opciones pero la mas facil es que pongas sTheCode fuera de la funcion.

 :smartass:  :devil:

4692
Programación de Videojuegos / Re: Compatibilidad Xp
« en: Lunes 29 de Agosto de 2005, 07:37 »
Cita de: "Darktigerhell"
Hola a todos, saben hace ya algun tiempo tengo una libreria vesa, y de hecho corre bien en sistemas operativos que no tengan tecnologia nt(como XP), precisamente juank menciono que no corren el este tipo de sistemas operativos, pero he descubierto que en algunos computadores si corren mientras tanto en otros no, y quisiera saber por que es capaz de correr en algunas computadoras si, es mas por que en una misma computadora con XP, en ocasiones corre y en otras ocasiones, ya con un sistema nuevo pero al fin al cabo XP no.
XP es 100% NT.

4693
ASM (Ensamblador) / Re: Como Bootear Una Maquina
« en: Domingo 28 de Agosto de 2005, 20:49 »
Cita de: "juanito20"
Hola, es mi primer post y soy algo novato en asm, estoy trabajando en este proyecto y lo que no logro comprender bien es como escribir en el diskette, entiendo lo del sector 0, y cargar en memoria 7C00, pero me he encontrado con que aparentemente hay que escribir ceros y unos, o un .bin, en realidad no comprendo como, vi el ejemplo aki mostrado (el de BOB) pero lo que necesito saber es como funciona el COPYBOOT.EXE, y tengo la misma duda de otro colega que preguntaba por los parametros, gracias a quien lea esto!
La cuestion es escribir en el primer sector porque la BIOS carga ese sector en la direccion 7C00:000 y le transfiere el control mediante un jmp, entonces ahi tiene que estar el codigo inicial.

Sino me equivoco El COPYBOOT.EXE tiene un parametro para especificar el sector de comienzo de escritura, para escribir el loader usa el 0 (por lo explicado anteriormente) y para escribir el Kernel usa el 1, sector que es cargado en memoria mediante el loader.

No se como hace exactamente el COPYBOOT.exe y la verdad estoy bastante cansado como para mirarlo (podes usar el debug.com para verlo por ej.) pero podes usar la BIOS, mas concretamente la interrupcion 13h provee varios servicios, entre otros el 02h para leer y el 03h para escribir.

Tambien MS-DOS provee servicios para leer y escribir en las interrupciones 25h y 26h respectivamente.

Aca podes encontrar informacion sobre las interrupciones mencionadas anteriormente:
http://www.ctyme.com/rbrown.htm

 :smartass:  :devil:  :ph34r:

4694
ASM (Ensamblador) / Re: Proyecto Sistema Operativo
« en: Domingo 28 de Agosto de 2005, 18:35 »
Cita de: "bob esponja"
una pregunta?

vamos a usar las funciones de la BIOS donde se pueda? o vamos a programar todo?

me parece a mi que en un inicio la parte de teclado pantalla y diskette se lo dejemos a la bios que muy bien lo hace  :D  y cuando tengamos algo consistente empecemos a reemplazar ese codigo on el nuestro.

estoy de acuerdo con el tema de los modulos
BIOS sin dudas, mas rapido y mas seguro (años de desarrollo tienen sobre sus espaldas) y mas compatible  :devil:  :ph34r:

4695
ASM (Ensamblador) / Re: Proyecto Sistema Operativo
« en: Viernes 26 de Agosto de 2005, 10:46 »
Estuve pensando un ratito mas, lastima que no lo hago mucho  :D , y me parece que el Shell no tiene porque estar en el Kernel. En realidad ni siquiera me parece logico, podriamos proveer los servicios de ejecucion y de file system mediante interrupciones y dejar al shell ser un ejecutable mas (estilo command.com).

4696
ASM (Ensamblador) / Re: Proyecto Sistema Operativo
« en: Viernes 26 de Agosto de 2005, 10:03 »
Si, concuerdo con Bob, seria mejor solo usar herramientas de terceros para construir el S.O. y que sea todo el codigo hecho por nosotros.

Doy mi voto para FASM y les propongo un par de cositas para un futuro no tan lejano, esto se podria leer reemplazando FAT12 por _nuestro_file_system como decia Bob:

_El OS ya que va en diskette podria soportar FAT12

_El loader obviamente se escribiria en el primer sector pero segun el formato de FAT12 (que empieza con un jmp al codigo del loader y sigue con campos indicativos)

http://www.mega-tokyo.com/osfaq2/index.php/FAT12%20document

_El Kernel (un solo archivo de codigo finalmente) podria escribirse en el diskette con un copy paste desde Windows o un copy desde MS-DOS

Modulitos:

loader: se encargaria de leer el disquette en busca del kernel, podria usar un nombre fijo siempre, podria complementar eso con la espera de una tecla como F5 para permitir elegir el nombre, todas las ideas que se nos ocurran y podamos implementar. Seria un modulo de codigo separado. :devil:

kernel: se encargaria entre otras cosas de establecer las interrupciones que proveera el S.O. (sus servicios) que inicialmente serian init_app y exit_app. Seria un modulo de codigo separado con otro submodulos que en este caso serian archivos en realidad.

Dentro del Kernel podriamos tener (y serviria para distribuir tareas):

Keyboard: encargado de entrada y salida por teclado
Shell: encargado de la interfaz (con sus comandos como ls/dir, info del sistema y de iniciar el proceso de ejecucion de otros programas)
FileSystem: encargado de todo lo relacionado con el FileSystem, enumeracion de directorios/archivos, lectura de los mismos y eventualmente escritura
Utils: encargado de cosas como strings
Video: encargado de salida grafica (mas adelante)

Bueno, me voy unos dias de vacaciones asi que les dejo un par de cosas para que las vayan pensando y comenten lo que les parece  :devil:  :comp:  :ph34r:

4697
La taberna del BIT / Re: Google Messenger
« en: Viernes 26 de Agosto de 2005, 01:51 »
Cita de: "Diodo"
No se exactamente  como es el del messenger 7.0, quizas te refieras a la ventana a parte que salia con los mensajes de correo y las news.
En el Google Talk te aparece nada mas conectarte en el tray icon una ventanita emergente con un resumen de cada mensaje no leido y una s flechitas para ir pasando de uno a otro.Es bastante practico
Ah, como las del Outlook, ¿Estan tan buenas como las del Outlook?

4698
ASM (Ensamblador) / Re: Proyecto Sistema Operativo
« en: Viernes 26 de Agosto de 2005, 00:41 »
Como comentaba en el otro foro creo que no se puede hacer (legalmente) un Sistema Operativo con MASM con lo cual queda excluido, habria que decidir entre FASM y NASM como bien decis.

En cuanto al primer objetivo me parece correcto y en sintonia con todos tus mensajes. Primero intentemos hacer algo que podamos hacer y no pensemos hacer un Windows/Linux que es una utopia.

Un nanoDOS no estaria mal para empezar, podriamos delinear un par de modulos asi todos pueden contribuir.

 :smartass:

4699
Vulnerabilidades / Re: Ocultamiento De Información En Editor De Registro
« en: Jueves 25 de Agosto de 2005, 20:30 »
Primero que nada no es un error de Windows sino de un ejecutable en particular REGEDT32.EXE, seria interesante saber si tambien existe el error en REGEDIT.exe porque no conozco a mucha gente que use el otro ...  :whistling:

4700
C/C++ / Re: Abrir Consola De Dos Desde Aplicasion Grafica
« en: Miércoles 24 de Agosto de 2005, 18:34 »
Código: Text
  1.  
  2. AllocConsole();
  3. HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE);
  4. DWORD ret = 0;
  5. char str[] = "hola mundo";
  6. WriteFile(hOut, str, strlen(str), &ret, 0);
  7.  
  8.  

Páginas: 1 ... 186 187 [188] 189 190 ... 205