Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





alguien me enseña a manejar el winnt.h???

Iniciado por boubou, 01 de Enero de 1970, 01:00:00 AM

« anterior - próximo »

Emotion

                                jur... yo alucino... no se si reir o llorar, porque esto pasa ya de claro a oscuro... bueno, a oscuriiisimo...

vamos a ver, boubou... parece que haces caso omiso de los consejos que aqui te hemos dado, y eso me parece que ya va como minimo para pitorreo...

parece que sigues empecinado en construir un compilador, y TE GARANTIZO DE FORMA TOTAL Y ABSOLUTA que NO LO VAS A LOGRAR a ese paso...

primero aprende los fundamentos de un compilador, cosas como la pila de variables, el reconocimiento de caracteres, direccionamiento de memoria, almacenamiento en ficheros, arrays, etc, etc, etc... es inutil que sigas por donde vas porque no pareces tener mucha idea de lo que pretendes hacer, asi que se realista... porque no empiezas por proyectos mas simples?

no es por insultar, pero... has conseguido compilar con exito el 'hola, mundo!'??? creo que no... pero bueno...

y por una vez, y sin que sirva de precedente, estoy totalmente de acuerdo con Gunder... si vas a seguir por ese camino, deberias pensar en dedicarte a otras cosas, como la cria del geranio tibetano, o la doma del caracol silvestre, etc, etc, etc... :sonriendo:

un saludo                                
G3: Get the Power!

synchrnzr

                                Vale, ya está, estoy hasta las narices:

ESTRUCTURA DE UN MALDITO ARCHIVO EXE:

00-01  0x5a, 0x4d. This is the "magic number" of an EXE file. The first byte of the file is 0x4d and the second is 0x5a.
02-03  The number of bytes in the last block of the program that are actually used. If this value is zero, that means the entire last block is used (i.e. the effective value is 512).
04-05  Number of blocks in the file that are part of the EXE file. If [02-03] is non-zero, only that much of the last block is used.
06-07  Number of relocation entries stored after the header. May be zero.
08-09  Number of paragraphs in the header. The program's data begins just after the header, and this field can be used to calculate the appropriate file offset. The header includes the relocation entries. Note that some OSs and/or programs may fail if the header is not a multiple of 512 bytes.
0A-0B  Number of paragraphs of additional memory that the program will need. This is the equivalent of the BSS size in a Unix program. The program can't be loaded if there isn't at least this much memory available to it.
0C-0D  Maximum number of paragraphs of additional memory. Normally, the OS reserves all the remaining conventional memory for your program, but you can limit it with this field.
0E-0F  Relative value of the stack segment. This value is added to the segment the program was loaded at, and the result is used to initialize the SS register.
10-11  Initial value of the SP register.
12-13  Word checksum. If set properly, the 16-bit sum of all words in the file should be zero. Usually, this isn't filled in.
14-15  Initial value of the IP register.
16-17  Initial value of the CS register, relative to the segment the program was loaded at.
18-19  Offset of the first relocation item in the file.
1A-1B  Overlay number. Normally zero, meaning that it's the main program.

Here is a structure that can be used to represend the EXE header and relocation entries, assuming a 16-bit LSB machine:

struct EXE {
 unsigned short signature; /* == 0x5a4D */
 unsigned short bytes_in_last_block;
 unsigned short blocks_in_file;
 unsigned short num_relocs;
 unsigned short header_paragraphs;
 unsigned short min_extra_paragraphs;
 unsigned short max_extra_paragraphs;
 unsigned short ss;
 unsigned short sp;
 unsigned short checksum;
 unsigned short ip;
 unsigned short cs;
 unsigned short reloc_table_offset;
 unsigned short overlay_number;
};

struct EXE_RELOC {
 unsigned short offset;
 unsigned short segment;
};

¿Vale? ¿Todos contentos? Venga boubou, a currar, ya no tienes excusa

Sync :guay:
                               

sés

                               
Citar
mICrO (Publicado: 2002-09-03 18:13)
Ahora si que no tienes impedimentos para tu mega-proyecto  

Citar
synchrnzr (Publicado: 2002-09-06 10:08)

Ya no tienes excusa boubou

Citar
synchrnzr (Publicado: 2002-09-06 18:20)

Venga boubou, a currar, ya no tienes excusa

...                                
Soy indeciso... ¿o no?

synchrnzr

                                Por lo menos no nos volverá a preguntar la estructura de un EXE (¡¡¡espero!!!)

Sync                                

Javi SJ Cervera

                                no se yo, sync... eso ya se lo pase yo hace tiempo, pero el problema es que está en ingles...
                               
== Jedive ==

synchrnzr

                                ...                                

Juan Mellado

                               
http://es.geocities.com/bou_bou_pe/win32_02_1.html

Saludos                                

HaltedMode

                                Yo me se de un tal boubou que tendria que estar varios dias dandole las gracias a este señor :riendo:.                                

synchrnzr

                                00-01 0x5a, 0x4d. Número mágico de los ficheros EXE. El primer byte es siempre 0x4d y el segundo 0x5a (corresponde a los carácteres "MZ")
02-03 Número de bytes del último bloque de programa usado. Si es cero significa que se utiliza todo el bloque (es decir, el bloque ocupa 512).
04-05 Número de bloques en el archivo que pertencen al fichero EXE. Si [02-03] es distinto de cero, sólo se utiliza la cantidad de bytes indicada en [02-03].
06-07 Número de entradas de relocalización después de la cabecera. Puede ser 0.
08-09 Número de párrafos en la cabecera (supongo que con párrafo se refiere a bloques de 16 bytes) La información del programa empieza justo detrás de la cabecera y este campo puede servir para calcular su desplazamiento dentro del fichero.. La cabecera incluye las entradas de relocalización. Algunos sistemas operativos y/o programas pueden fallar si el tamaño de la cabecera no es múltiplo de 512 bytes.
0A-0B Número adicional de párrafos de memoria que necesita el programa. Equivalente al tamaño BSS en los programas de Unix. El programa no se cargará si no hay por lo menos el espacio necesario indicado en este campo.
0C-0D Número máximo de párrafos de memoria adicional. Normalmente, el sistema operativo reserva el resto de memoria convencional para cada programa, pero puedes limitar es cantidad con este campo.
0E-0F Valor relativo del segmento de pila. Éste valor se suma al segmento el que fue cargado el programa y el resultado se utiliza para inicializar el registro SS.
10-11 Valor inicial del registro SP.
12-13 Suma de comprobación. El valor de estos 16 bits se suman al resto de palabras en el fichero de forma que el resultado debe ser cero. No se suele utilizar.
14-15 Valor inicial del registro IP.
16-17 Valor inicial del registro CS, relativo al segmento en que fue cargado el programa.
18-19 Desplazamiento del primer objeto relocalizado.
1A-1B Overlay. Normalmente cero, indicando que éste es el programa principal.

(traducido por Sync :lengua:)

Algo más?

Sync :guay:

PD: boubou, esto servirá para llenar tu vacío mental cuando te mires la estructura DOS_Header del winnt.h para los PE, de todas formas, si no sabes ensamblador... ¿sabes lo que son los factores de relocalización? ¿o por lo menos los registros CS, IP, SS...?

[ Este Mensaje fue editado por: synchrnzr el 2002-09-06 19:40 ]                                

boubou

                                bueno, ustedes que se creen que yo paso horas y horas delante del foro????
no es que no haga caso, es que no paso todo el tiempo delante del ordenador de los cojones                                
onstruo Bou... Ha vuelto Mwhahahahahahahahahahahahahah!

Es la unica esperanza de los trolls tras el envio al "infienno
" de WhiteBlaizer y X-Alien

boubou

                                y si, gracias
pero no me insinueis cosas como "yo se de un tal boubou que tiene que dar las gracias"                                
onstruo Bou... Ha vuelto Mwhahahahahahahahahahahahahah!

Es la unica esperanza de los trolls tras el envio al "infienno
" de WhiteBlaizer y X-Alien

synchrnzr

                                A lo mejor podrías dar las gracias pq lo he traducido yo mismo "manualmente" y por el enlace que te han dado más arriba ¿vale?

PD: Ok, he escrito esto antes q tú escribieras el mensaje anterior, sorry

[ Este Mensaje fue editado por: synchrnzr el 2002-09-06 19:44 ]                                

NeLo

                               
Citar
¿sabes lo que son los factores de relocalización? ¿o por lo menos los registros CS, IP, SS...?

¿Pero es que lo dudas?
                               
Drowning deep in my sea of loathing

seryu

                                enga, yo tb colaboro, el volcado a pantalla para la lib grafica:

push ds
push es
lds si, pd
mov ax,0A000h
mov es,ax
xor di,di
mov cx,32000
cld
rep movsw   
pop es
pop ds

igual asi a trozos hasta sacamos el compilador, no? xD

P.D.: hacer un mov ax,13h antes de poner el tocho de antes.                                

CordayUK

                                alguien tiene por ahi la estructura de un caracol silvestre??? :sonriendo:

es que no se que he leido antes sobre el tema y me interesaria ya que me dedico a la cria y doma de los mismos en el tibet. gracias

-----------

:ojo: ahora en serio, tampoco veo mal los mensajes de bou bou... dan un poquillo de vidilla al foro, no?
quizas deberiamos abrir un nuevo foro en exclusiva para ello  :ojo:

salu2
                               






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.