Pliant talk forum

Pliant talk forum

Discussion: On the documentation of meta programming

Message posted by maybe Marcus on 2002/05/30 15:47:12
The documentation says:

---------------------------------
An argument is a compile time object that defines a data on which the program will deal at run time.An argument contains:

   *  a link to the type of the argument 
   *  the location of the argument 

The argument location may be:

   *  the argument is a constant value 
   * ...
-------------------------------------

I did not understand this first item regarding the argument location. Did
you mean

* a constant value

Message posted by maybe Hubert Tonneau on 2002/05/30 16:33:18
As an overview, you can think about an argument as the definition of a
variable or something like that, or as if you prefer the specification of
what an identifier would be.
In other words, an argument is not a data, but something specifying what the
data will be at run time, just as in math, a variable is not a value, but
a name that will be a value when applying the formula.

Let's assume that the argument is named 'x' (also an argument may well have
no name in facts).

Then 'x' as a well defined type pointed in one of the fields of the argument,

and 'x' can be either (depending on one of the fields of the argument):
. a constant (then the argument contains a pointer to it's value)
. a processor register (then the argument specifies what register)
. a local variable (then the argument will specifies it's offset on the stack)
. an indirect value (then the argument will specifies what other argument gives
  the data address at run time, and the offset)

About 'indirect' think that the value of 'x' is pointed by a variable 'y' and
that a fixed offset has to be applied to the value of 'y' to get the actual
address of 'x'.
Message posted by maybe Marcus on 2002/05/30 18:25:26
Excellent!

Thanks, Hubert.