#### 9.55.5 Directives

The Xtensa assembler supports a region-based directive syntax:

        .begin directive [options]
        …
        .end directive

All the Xtensa-specific directives that apply to a region of code use this syntax.

The directive applies to code between the `.begin` and the `.end`. The state of the option after the `.end` reverts to what it was before the `.begin`. A nested `.begin`/`.end` region can further change the state of the directive without having to be aware of its outer state. For example, consider:

        .begin no-transform
    L:  add a0, a1, a2

        .begin transform
    M:  add a0, a1, a2
        .end transform

    N:  add a0, a1, a2
        .end no-transform

The `ADD` opcodes at `L` and `N` in the outer `no-transform` region both result in `ADD` machine instructions, but the assembler selects an `ADD.N` instruction for the `ADD` at `M` in the inner `transform` region.

The advantage of this style is that it works well inside macros which can preserve the context of their callers.

The following directives are available: