gnupic: some question about the directive GLOBAL in the source code.


Previous by date: 17 Aug 2012 11:37:16 -0000 Re: some question about the directive GLOBAL in the source code., Tamas Rudnai
Next by date: 17 Aug 2012 11:37:16 -0000 Re: some question about the directive GLOBAL in the source code., Marko Kohtala
Previous in thread: 17 Aug 2012 11:37:16 -0000 Re: some question about the directive GLOBAL in the source code., Tamas Rudnai
Next in thread: 17 Aug 2012 11:37:16 -0000 Re: some question about the directive GLOBAL in the source code., Marko Kohtala

Subject: Re: some question about the directive GLOBAL in the source code.
From: feqin fan ####@####.####
Date: 17 Aug 2012 11:37:16 -0000
Message-Id: <CAOfAq_rOnBbK3DRL3=TEup1NNWQGLeRzvP=N5RevwrUt-vEPzQ@mail.gmail.com>

THX..

:-)


2012/8/17 Tamas Rudnai ####@####.####

> No worries with your English :-) So you mean must be processed by the
> assembler (compiler), right?
>
> I think I got you. Are you claiming that the compiler is not working
> properly and when a 'global' directive is used before declaring the
> variable, it should create the symbol in the symbol table as opposed to
> return with 'no symbol' ? In this case I think you are right.
>
> How it works in gpuitls -- I do not know, I have not looked at the source
> code yet. Hope someone is seeing this who does and can help you with
> debugging the compiler's source.
>
> Tamas
>
>
>
>
> On 16 August 2012 23:24, feqin fan ####@####.#### wrote:
>
> > My english writing is poor, Maybe it misled you, Sorry , It’s my fault.
> >
> >
> >
> > I’m here discussing the assembler source code’s behavior, Not CPU’s
> > behavior.
> >
> > the directive “global var” must be executed by assembler.
> >
> > and in line 5,the function maybe_evaluate_concat() does not to query
> symbol
> > table, it just do some macro process, and must be return the string
> “var”.
> >
> >
> > Thanks for you letter..
> >
> > :-)
> >
> >
> >
> > 2012/8/17 Tamas Rudnai ####@####.####
> >
> > > The "global var" will never be "executed" as that is not an instruction
> > but
> > > a directive. But that is not important right now.
> > >
> > > What is important that although I have never looked at the full source
> > code
> > > and therefore not sure what are those functions and macros doing there,
> > but
> > > following your logic in the comments, the "p will point to var" in line
> > 5.
> > > Now if var is unknown at that stage, then maybe p will be NULL, right?
> So
> > > because of the condition at line 6, the compiler will never make it to
> > the
> > > line 7... Just my cents.
> > >
> > > Tamas
> > >
> > >
> > >
> > > On 15 August 2012 19:50, feqin fan ####@####.#### wrote:
> > >
> > > > 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: ####@####.####
> > > > >
> > > > >
> > > >
> > >
> > >
> > >
> > > --
> > > int main() { char *a,*s,*q; printf(s="int main() { char *a,*s,*q;
> > > printf(s=%s%s%s, q=%s%s%s%s,s,q,q,a=%s%s%s%s,q,q,q,a,a,q); }",
> > > q="\"",s,q,q,a="\\",q,q,q,a,a,q); }
> > >
> >
>
>
>
> --
> int main() { char *a,*s,*q; printf(s="int main() { char *a,*s,*q;
> printf(s=%s%s%s, q=%s%s%s%s,s,q,q,a=%s%s%s%s,q,q,q,a,a,q); }",
> q="\"",s,q,q,a="\\",q,q,q,a,a,q); }
>

Previous by date: 17 Aug 2012 11:37:16 -0000 Re: some question about the directive GLOBAL in the source code., Tamas Rudnai
Next by date: 17 Aug 2012 11:37:16 -0000 Re: some question about the directive GLOBAL in the source code., Marko Kohtala
Previous in thread: 17 Aug 2012 11:37:16 -0000 Re: some question about the directive GLOBAL in the source code., Tamas Rudnai
Next in thread: 17 Aug 2012 11:37:16 -0000 Re: some question about the directive GLOBAL in the source code., Marko Kohtala


Powered by ezmlm-browse 0.20.