gnupic: some question about the directive GLOBAL in the source code.
Subject:
Re: some question about the directive GLOBAL in the source code.
From:
feqin fan ####@####.####
Date:
16 Aug 2012 02:50:49 -0000
Message-Id: <CAOfAq_prYedFfHaXKn0LQD2XmZS938M1CNuprbv4NECE6ijksQ@mail.gmail.com>
because the symbol_table stTop have nothing about symbol "var", the source
line "global var" is first line executed by assembler.
all of this are my inferences.
:-)
THX..
2012/8/16 Holger Oehm ####@####.####
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
>
> On 14.08.2012 12:35, feqin fan wrote:
> > Hello, everybody, I'm sorry to trouble you again.
> > I have read most of the source code of gputils. I have a query about
> > the implementation of the directive GLOBAL.
> > for example, Have this code:
> >
> > global var
> >
> > udata
> > var res 1
> >
> > the assembler deal with the first line "global var",
> > the calling sequence is like this : yyparse() - do_or_append_insn(char *,
> > struct pnode *) - do_insn(char *, struct pnode *) - do_global()
> > the function do_global() source code :
> >
> > 1, if (state.mode == absolute) {
> > 2, gperror(GPE_OBJECT_ONLY, NULL);
> > 3, } else {
> > 4, for (; parms; parms = TAIL(parms)) {
> > 5, p = maybe_evaluate_concat(HEAD(parms)); //p will point
> to
> > "var".
> > 6, if (p) {
> > 7, s = get_symbol(state.stTop, p); //s will be NULL
> > 8, if (s == NULL) {
> > 9, snprintf(buf,
> > 10, sizeof(buf),
> > 11 "Symbol not previously defined (%s).",
> > 12, p);
> > 13, gperror(GPE_NOSYM, buf);
> >
> >
> >
> > the line 4 must be first executed, in line 5 the p will point to "var".
> and
> > in line 7, because the source code "global var" is the first line of the
> > being assembled code.
> > So. in the function do_global() line 7, the s will be NULL,
>
> And why exactly should s be NULL after the assignment in line 7???
> -----BEGIN PGP SIGNATURE-----
> Version: GnuPG v1.4.11 (GNU/Linux)
> Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/
>
> iEYEARECAAYFAlAr48sACgkQHdk+97UOUanAAgCfYSdqul+vqfA3ARzB38GScQGT
> 8lUAoIVHttJ6BOx1WLJCph25B4ak3+dN
> =N8FO
> -----END PGP SIGNATURE-----
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: ####@####.####
> For additional commands, e-mail: ####@####.####
>
>