Ir al contenido


Foto

ASM en Delphi?


  • Por favor identifícate para responder
4 respuestas en este tema

#1 c0lo

c0lo

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 241 mensajes
  • LocationLima-Peru

Escrito 15 febrero 2010 - 04:01

Hola a todos y mi pregunta es si existe alguna libreria para delphi el cual podria usar algunas llamadas o funciones o etc cuando trabaja con algunas llamadas de asm en delphi?



delphi
  1. asm
  2. call near dword ptr ds:[edx+$2C]
  3. end;




Me sale el siguiente error :
[Error] Project31.pas(38): Undeclared identifier: 'near'

Alguna ayudita please...
  • 0

#2 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.446 mensajes
  • LocationMéxico

Escrito 15 febrero 2010 - 04:08

No recuerdo muy bien , pero el call de asm ¿ no es una llamada a otro procedimiento ó función ? quiero decir, near debería de existir ¿no?.

Salud OS
  • 0

#3 escafandra

escafandra

    Advanced Member

  • Administrador
  • 4.107 mensajes
  • LocationMadrid - España

Escrito 15 febrero 2010 - 05:36

En los tiempos de los microprocesadores de 16 bits, el direccionamiento de memoria se trucaba para conseguir hacerlo "casi" desde un sistema de 32 bits. El truco consistía en utilizar segmentos y un offeset relativo a ellos. Una llamada a un procedimiento NEAR era aquella que se realizaba dentro del mismo segmento. Si el procedimiento era FAR, significaba que estaba en un segmento diferente.

Con los sistemas de 32 bits o mas y el uso del modo protegido del procesador, el direccionamiento de la memoria es lineal y ya no se precisan las directivas de procedimiento NEAR o FAR. Es por eso que delphi no reconoce near.

En su lugar, existen saltos relativos o absolutos.  Los relativos vienen dados por un entero con signo, de forma que saltará tantos Bytes a delante o atrás. Los Absolutos definen de forma absoluta la dirección del salto. Normalmente los compiladores sólo nos permiten saltos relativos (si queremos uno absoluto no deberemos usar nemónicos sino los Opcodes).

Saludos.
  • 0

#4 enecumene

enecumene

    Webmaster

  • Administrador
  • 7.419 mensajes
  • LocationRepública Dominicana

Escrito 15 febrero 2010 - 06:33

Muevo el tema al foro correspondiente (y).

Saludos.
  • 0

#5 c0lo

c0lo

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 241 mensajes
  • LocationLima-Peru

Escrito 15 febrero 2010 - 06:57

En los tiempos de los microprocesadores de 16 bits, el direccionamiento de memoria se trucaba para conseguir hacerlo "casi" desde un sistema de 32 bits. El truco consistía en utilizar segmentos y un offeset relativo a ellos. Una llamada a un procedimiento NEAR era aquella que se realizaba dentro del mismo segmento. Si el procedimiento era FAR, significaba que estaba en un segmento diferente.

Con los sistemas de 32 bits o mas y el uso del modo protegido del procesador, el direccionamiento de la memoria es lineal y ya no se precisan las directivas de procedimiento NEAR o FAR. Es por eso que delphi no reconoce near.

En su lugar, existen saltos relativos o absolutos.  Los relativos vienen dados por un entero con signo, de forma que saltará tantos Bytes a delante o atrás. Los Absolutos definen de forma absoluta la dirección del salto. Normalmente los compiladores sólo nos permiten saltos relativos (si queremos uno absoluto no deberemos usar nemónicos sino los Opcodes).

Saludos.


Wuaaa... muchas gracias por explicarme el tema.. :D investigare un poco mas..
  • 0




IP.Board spam blocked by CleanTalk.