Some assembler programs evolved to a point where numerous conveniences for the programmer had been added to the indispensable primary functions of formulating machine instructions from mnemonic statements and interrelating symbolic addresses for both instructions and data. The GCC assembler offers capabilities for repeat blocks, conditional assembly, and macros. When these are intermixed and nested, quite exquisite control may be exercised over the details in an assembly language program. In particular, greater control over storage allocation and establishment of interrelationships among data is both necessary and possible at the assembly language level as contrasted to some high-level languages. We have highlighted this point with an illustration using object file sections. |