Static rustc_ap_rustc_lint_defs::builtin::BAD_ASM_STYLE[][src]

pub static BAD_ASM_STYLE: &Lint
Expand description

The bad_asm_style lint detects the use of the .intel_syntax and .att_syntax directives.

Example

#![feature(asm)]

fn main() {
    #[cfg(target_arch="x86_64")]
    unsafe {
        asm!(
            ".att_syntax",
            "movl {0}, {0}", in(reg) 0usize
        );
    }
}

This will produce:

 warning: avoid using `.att_syntax`, prefer using `options(att_syntax)` instead
 --> test.rs:7:14
  |
7 |             ".att_syntax",
  |              ^^^^^^^^^^^
8 |             "movq {0}, {0}", out(reg) _,
9 |         );
  |         - help: add option: `, options(att_syntax)`
  |
  = note: `#[warn(bad_asm_style)]` on by default

Explanation

On x86, asm! uses the intel assembly syntax by default. While this can be switched using assembler directives like .att_syntax, using the att_syntax option is recommended instead because it will also properly prefix register placeholders with % as required by AT&T syntax.