En/Je/On 2015-11-04 16:22, [email protected] [forth-es]
escribió / skribis / wrote :

>    Realmete has hecho un trabajo increíble con la librería
>    Afera de Abersoft .

Gracias. Fue una tarea muy agradable, darle un buen repaso a Abersoft
Forth después de tantos años, y convertirlo en un sistema más potente y
versátil. Nunca antes había profundizado tanto en cómo funciona el
veterano (y lento) fig-Forth por dentro.

>    He probado la rutina DECODE y "destripa" muy bien las
>    palabras que se incluyan tras el ":" , y además proporcina
>    cada una de las direcciones , magnífico!

Me alegro de que sea útil.  Me quedé con las ganas de ampliarlo para que
aceptara también variables, constantes y otras palabras; pero en
realidad la función que hace ese `decode`, destripar las definiciones
creadas con `:`,  es la más útil.

>    En dx-forth tenemos ADDR que nos proporciona la dirección
>    de una palabra :
> 
>    ADDR ( "name" -- a-addr ) I Sa
> 
>    "address of". Return the data field address of the word
>    "name".

Esa dirección, la dirección del campo de datos (o de parámetros, como se
decía antes), es la que obtienes en Abersoft Forth con la palabra `'`.
En fig-Forth y Forth-79 `'` devolvía la dirección del campo de datos.

A partir de Forth-83, `'` devuelve la dirección del campo de código, es
decir, la dirección de ejecución, la que `execute` espera como
parámetro.

DX-Forth es un Forth-94, por lo que la palabra `'` funciona como en
Forth-83. Pero no hay una forma estándar de obtener la dirección del
campo de datos (solo `>body`, para palabras creadas con `create`). Por
eso DX-Forth lleva esa palabra propia `addr`. En otros sistemas Forth
`>body` funciona con todo tipo de palabras.

-- 
Marcos Cruz
http://programandala.net

Responder a