Mercurial > hg-old > index.cgi
diff doc/internals.txt @ 365:6a98cc90c14f
Added resolve passes
author | lost@starbug |
---|---|
date | Wed, 14 Apr 2010 20:49:04 -0600 |
parents | d96c30e60ddf |
children | 34dfc9747f23 |
line wrap: on
line diff
--- a/doc/internals.txt Tue Apr 06 21:35:09 2010 -0600 +++ b/doc/internals.txt Wed Apr 14 20:49:04 2010 -0600 @@ -24,38 +24,13 @@ ------ This pass resolves all instruction sizes that can be resolved without -setting addresses for instructions. This process is repeated until no -further instructions sizes are resolved. +forcing any instruction sizes. This pass will run repeatedly until no +no new resolution occurs. Pass 4 ------ -This pass assigns addresses to all symbols where values are known. It does -the same for instructions. Then a repeat of similar algorithms as in the -previous pass is used to resolve as many operands as possible. - -This pass is repeated multiple times until no further instructions or -symbols are resolved. - -Pass 5 ------- - -Finalization of all instruction sizes by forcing them to the maximum -addressing mode. Then all remaining instruction addresses and symbol values -are resolved. - -Pass 6 ------- - -This pass does actual code generation. This is the notional second pass. All -other passes are the notional first pass. - - -Expression Evaluation -===================== - -Each expression carries a certainty flag. Any expression in which any term -is flagged as uncertain is, itself, uncertain. There are a few specific -cases where such uncertainty can cancel out. For instance, X-X where X is -uncertain is guaranteed to be 0 and so there is no uncertainty. - +Work through all un-resolved instructions and force sizes. After each size +is forced, try re-resolving all other instructions. This is done starting +at the beginning of the source and working forward. If any instruction does +not resolve when forced, an error will be thrown.