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
