From: | Hans-Peter Diettrich <DrDiettrich1@aol.com> |
Newsgroups: | comp.compilers |
Date: | Wed, 19 Nov 2008 04:57:01 +0100 |
Organization: | Compilers Central |
References: | 08-11-054 08-11-062 08-11-089 |
Keywords: | symbols, storage |
Posted-Date: | 19 Nov 2008 19:51:44 EST |
Tony schrieb:
> I like the multiple table method, or some kind of
> hierarchial/multi-data-structure thing. It seems to me though that
> keeping track of the current scope can be a potential source of
> inefficiency. For example:
[...]
> Compiler generates :
>
> void my_func()
> {
> EnterScope(my_func); // compiler generates
>
> // func code
>
> LeaveScope(my_func); // compiler generates
> }
I can't see anything inefficient here. When a scope requires allocation
of memory, on the stack or somewhere else, it doesn't matter whether
that memory is allocated and released by the coder or by the compiler.
In C++, Delphi etc. the compiler inserts the construction and
destruction of local objects, at the begin and end of every scope block.
Perhaps you missed that the scopes (as symbol tables) are required only
during compilation, not at runtime. Typical object files only contain
one symbol table, for use by the linker. More detailed debug information
may be created, too, but only for use by an interpreter or debugger.
DoDi
Return to the
comp.compilers page.
Search the
comp.compilers archives again.