• Domingo 22 de Diciembre de 2024, 22:41

Autor Tema:  Re: far, _far o __far????  (Leído 1517 veces)

© Jonathan ©

  • Moderador
  • ******
  • Mensajes: 1671
  • Nacionalidad: ar
    • Ver Perfil
    • http://www.einstec.com.ar
Re: far, _far o __far????
« en: Miércoles 30 de Abril de 2003, 15:28 »
0
Hola a todos, quisiera saber que es lo que hace realmente esta funcion:

far, _far o __far

En algunos compiladores se escribe como  far en otros _far  o __far, no se que es lo que hace realmente, vi que la utilizaban en un programa con el cual veias que puerto paralelo tenias instalado.

Gracias de antemano, saludos
EINSTEC Tecnología «La única fuente del conocimiento es la experiencia.»

«Lo importante es no dejar de hacerse preguntas.»

JuanK

  • Miembro de ORO
  • ******
  • Mensajes: 5393
  • Nacionalidad: co
    • Ver Perfil
    • http://juank.io
Re: far, _far o __far????
« Respuesta #1 en: Miércoles 30 de Abril de 2003, 15:40 »
0
se utiliza esta sentencia para declaratr una variable que accese a alguna direccion de memoria absoluta, por lo general para "mapearse" a la memoria de algun dispositivo, como por ejemplo la tarjeta de video o un puerto paralelo o serial..
algunos compiladores como el gcc no lo soportan y traen incluidas algunas rutinas para obtener los mismo resultados esta rutinas comienzan por _far pero internamente invocan  _far, pero su simbolo, es decir una vez ya compilado es __far(los simbolos de las funciones suelen empezar con _ por convencion).

far  char *rgb;

seria un apuntador a un segmento de la memoria de video.

Espero que te haya servido de ayuda.
[size=109]Juan Carlos Ruiz Pacheco
[/size]
Microsoft Technical Evangelist
@JuanKRuiz
http://juank.io

© Jonathan ©

  • Moderador
  • ******
  • Mensajes: 1671
  • Nacionalidad: ar
    • Ver Perfil
    • http://www.einstec.com.ar
Re: far, _far o __far????
« Respuesta #2 en: Miércoles 30 de Abril de 2003, 16:01 »
0
Gracias juank, me has aclarado la duda, una vez mas te agradesco :gracias: . Saludos
 :adios:
EINSTEC Tecnología «La única fuente del conocimiento es la experiencia.»

«Lo importante es no dejar de hacerse preguntas.»

Santiago Gersback

  • Nuevo Miembro
  • *
  • Mensajes: 1
    • Ver Perfil
Re: far, _far o __far????
« Respuesta #3 en: Viernes 9 de Mayo de 2003, 02:55 »
0
La resapuesta de JuanK si esta bien fundamentada, pero creo realmente que un beginner no la entendería; se usa la directiva far en c o asm para especificar un salto de dirección larga.

Todas las instrucciones de un ejecutable (.exe) son puestas en memoria en el momento de su ejecución, osea que cada instruccion posee una direccion de memoria por medio de  la cual el registro IP del procesador la accesa.

Ahora, como la logica del program permite transferir el control del programa a instrucciones adelante o atras; muchas veces existe codigo que puede estar en modulos lejanos o que superan el limite de salto de direccion en memoria; en esos casos se debe especificar que la variable o tipo de dato estan en una direccion "LEJANA", en ingles far hace referencia a "lejano"; en el codigo de JuanK la instruccion hace referencia a memoria de video.

Recordemos que la memoria de video se encuentra en un segmento totalmente aparte del resto de la memoria del pc específicamente comenzando en direccion base A000H con desplazamiento 0000H.

Espero no ser confuso con la explicación.

Saludos.

JuanK

  • Miembro de ORO
  • ******
  • Mensajes: 5393
  • Nacionalidad: co
    • Ver Perfil
    • http://juank.io
far, _far o __far????
« Respuesta #4 en: Viernes 9 de Mayo de 2003, 14:57 »
0
Todo la informacion que tu das es muy cierta y esta bastante completa,  realmente a mi no se me hubiera ocurrido responderlo de esa manera.

Sin embargo trate de hacer mi comentario lo mas sencillo y entendible posible, para que un "beginner" lo entienda, sin adentrar en los detalles del proceso de ejecucion ni en  la arquitectura del pc, un tanto porque este tema ya hace parte un poco mas del foro de assembler, y otro tanto porque, como tu mismo te daras cuenta,  quedan muchos asuntos pendientes. Aunque tal vez jonathan si conozca algo de los registros del procesador, la inmensa mayoria en este foro no sabra a que te refieres con el registro IP del procesador, ni tampoco entendera el porque existe un limite de  salto, ni siquiera a que te refieres con salto...

Creo que tu solucion quedo aun mas lejana que la mia, para que la entienda un principiante.
Pero olvidandonos del detalle de los "beginners", si esta muy buena tu publicacion, porque aunque a decir verdad manejo estos conceptos, no lo hago cotidianamente y como ya lo dije no se me hubiese ocurrido responder asi, a veces hace falta para que algun no-beginner, aclare algunas inquietudes.

Chau

Juank
[size=109]Juan Carlos Ruiz Pacheco
[/size]
Microsoft Technical Evangelist
@JuanKRuiz
http://juank.io