E.1 Interference from Explicit Stops

In this book, we have typically shown explicit stops (;;) separating Itanium instructions into groups, although we noted that the Intel assembler by default ignores stops written by the programmer and instead groups and bundles instructions automatically. In contrast, the assembler invoked by gcc expects the programmer to specify the architecturally required stops explicitly.

There is, however, an inconsistency within the assembler invoked by gcc (at least up through version 3.0) whereby explicit stops cannot be used with the directives described in this appendix. That is, parsing of instruction lines within macro or conditional blocks does not allow double semicolons.

While this situation may be ultimately remedied, the Itanium assembler directives in Table E-1 help get around the difficulty.

Table E-1. Itanium Assembler Mode Control Directives

Directive

Effect

.auto

After this directive has been given, the assembler takes responsibility for inserting architecturally required stops. The source code can be free of explicit stops (;;).

.explicit

The programmer takes responsibility for stops, and may also specify templates. The assembler issues error messages when it finds dependency violations.

.default

This directive causes the assembler to revert to its startup mode.

The directives in Table E-1 have side effects. In particular, whenever one of these directives is encountered, the assembler will insert a stop.

With this information in mind, we use a programming model in this appendix where code segments containing macro expansions or conditional directives begin with a .auto directive and end with a .default directive.



ItaniumR Architecture for Programmers. Understanding 64-Bit Processors and EPIC Principles
ItaniumR Architecture for Programmers. Understanding 64-Bit Processors and EPIC Principles
ISBN: N/A
EAN: N/A
Year: 2003
Pages: 223

flylib.com © 2008-2017.
If you may any questions please contact us: flylib@qtcs.net