ayuda con punteros y arquitecturas

will
10 de Mayo del 2005
Hola soy yo otra vez
al menos ya entendi lo que son punteros near y far
y agradezco por ello, pero tambien me entere que estos punteros se usaban en viejas arquitecturas 80x86
a proposito tengo un procesador Intel pemtium Iv que tipo de arquitectura tiene?
ademas creo que ya no se puede usar estos punteros(near y far) sobre esta arquitectura,
entonces como puedo sustituir el siguiente codigo:
...
unsigned int __far *puntero_a_direccion;
puntero_a_direccion = (unsigned int __far *)0x00000408;
...

gracias por su ayuda

hiei
10 de Mayo del 2005
L politica de INTEL (lease INTEL-AMS-CYRYX-X86-Compatible) es que sus procesadores sean retrocompatibles...
Esto es, que tu P4 funciona (al encender la PC) como mi 8086 de la XT que anda en mi galpon del fondo (exeptuando la velocidad de ejecucion...)
La arquitectura de un P4 y de los anteriores le permite operar (al encendido) como un 8086 normal y corriente porque INTEL se comprometio a que sus procesadores ivan a ser retrocompatibles hasta... (¿El fin de los tiempos?)
El codigo no necesitas sustituirlo si arrancas en DOS crudo... en "otros" OS (como el que se menciona por ahi) creo que no se puede acceder "tan" directamente al hardware, pero esto no es problema de arquitectura sino de compilador y OS.
Si usas Borland/Turbo C/C++ no hay problema... (mientras compiles programas para DOS)
Si usas el GCC (en DevC++ y MingW) no necesitas de los punteros far ni near... sino un descriptor de segmentos que apunte al area que estas buscando (y por supuesto los permisos que necesias para acceder a esta area)
Si usas GCC en Linux seguro

hiei
10 de Mayo del 2005
Perdon, aprete algo que no era... continuo.
...si usas GCC en Linux seguro que no necesitas ver esta zona de memoria (alli no habra nada coerente) hay otras formas de ver lo que tu quieres...
Y vuelvo a recalcar... no uses WinXP... arranca el programa cono DOS crudo, es mas estable, seguro, rapido y aprovecha mejor los recursos de la maquina... (si de tu procesador 8086 interno al P4)...

pitukilloloco
10 de Mayo del 2005
El problema con esa instrucción que pusiste es que está haciendo acceso directo a la memoria de la máquina. Dependiendo en que sistema operativo lo estés usando eso te puede dar error o no a la hora de ejecutar esta instrucción. Por ejemplo, en el antiguo sistema operativo MS-DOS, el cual te permitía hacer casi todo con la computadora (escribir en puertos, accesar la tarjeta de video, manejar interrupciones del BIOS, etc), para manejar menus y ventanas en modo texto (el modo gráfico no se usaba mucho en ese sistema operativo) se accesaba directamente a la memoria de video por medio de una instrucción parecida a
char far *video = (char far *)0xB8000000;
y todos los caracteres que ponías a partir de esa dirección se desplegaban en la pantalla. Esta instrucción la acepta el compilador de Turbo C de Borland, y si la usas en un programa y lo compilas para ejecutarlo en una ventana de consola con Windows XP, el programa se ejecuta sin ningún problema. Esto es debido a que Windows XP hace una simulación de como si tuviéramos en una sesión de MS-DOS; pero si queremos usar área críticas del sistema, como accesar directamente al disco usando interrupciones o accesar a los puerto, entonces lo más seguro es que el programa aborte al querer ejecutarlo.