Sdílet prostřednictvím


ARM Assembler diagnostické zprávy

Microsoft ARM assembler (armasm) vyzařuje diagnostické varování a chyby při jejich výskytu.Tento článek popisuje zprávy většinu běžně zjistil.

filename(lineno) : [error|warning] Anum: message

Diagnostické zprávy

Hh916384.collapse_all(cs-cz,VS.110).gifChyby

  • A2193: Tento pokyn generuje nepředvídatelné chování
    Architektura ARM nemůže zaručit co se stane, když je tento pokyn.Podrobné informace o přesně formuláře tento pokyn, ARM architektura Reference Manual.

    ADD r0, r8, pc         ; A2193: this instruction generates unpredictable behavior
    
  • A2196: instrukci nelze kódovat v 16 bitů
    Zadanou operaci nelze zakódovat jako miniatury instrukce 16 bitů.Určete 32bitový instrukce nebo uspořádání uvedou cílového popisku do rozsahu instrukce 16bitový kód.

    Překladač instrukcí může pokusit kódování pobočky v 16 bitů a tuto chybu, přestože je 32bitové pobočky encodable.Tento problém lze vyřešit pomocí .W specifikátor výslovně označit jako 32bitová pobočky.

      ADD.N r0, r1, r2      ; A2196: instruction cannot be encoded in 16 bits
    
      B.W label             ; OK
      B.N label             ; A2196: instruction cannot be encoded in 16 bits
      SPACE 10000
    label
    
  • A2202: Pre TEČNÉ instrukce syntaxe není povolen v oblasti MINIATURY
    Miniatury kód, musíte použít syntaxi Unified jazyk Assembler (TEČNÉ).Staré syntaxe již přijali.

      ADDEQS r0, r1         ; A2202: Pre-UAL instruction syntax not allowed in THUMB region
      ADDSEQ r0, r1         ; OK
    
  • A2513: Otáčení musí být i
    V režimu ARM je alternativní syntaxe určující konstanty.Namísto psaní #<const>, můžete psát #<byte>,#<rot>, která představuje konstantní hodnotu, která je získaná hodnota otočení <byte> právo <rot>.Když tuto syntaxi použít, je třeba hodnotu <rot> i.

      MOV r0, #4, #2       ; OK
      MOV r0, #4, #1       ; A2513: Rotation must be even
    
  • A2557: Nesprávný počet bajtů pro zápis zpět
    NEÓNOVÁ struktury načíst a uložit pokyny (VLDn, VSTn), je alternativní syntaxe určující zpětný zápis do rejstříku základní.Místo adresy po uvedení vykřičník (!), můžete určit okamžitou hodnotu, označující posun doplňují základní rejstříku.Pokud tuto syntaxi použít, musíte zadat přesný počet bajtů, které byly načteny nebo instrukce uložené.

      VLD1.8 {d0-d3}, [r0]!         ; OK
      VLD1.8 {d0-d3}, [r0], #32     ; OK
      VLD1.8 {d0-d3}, [r0], #100    ; A2557: Incorrect number of bytes to write back
    

Hh916384.collapse_all(cs-cz,VS.110).gifUpozornění

  • A4228: Zarovnání hodnota přesahuje zarovnání oblasti; zarovnání není zaručena.
    Zarovnání, která je určena v ALIGN je větší než zarovnání orámování směrnice AREA.Proto nelze montážnímu zaručit, že ALIGN směrnice bude použito.

    Chcete-li tento problém odstranit, můžete zadat AREA směrnice ALIGN atribut, který je roven nebo větší než požadované zarovnání.

      AREA |.myarea1|
      ALIGN 8           ; A4228: Alignment value exceeds AREA alignment; alignment not guaranteed
    
      AREA |.myarea2|,ALIGN=3
      ALIGN 8           ; OK
    
  • A4508: Nepoužívaný použít tato konstanta otočený
    V režimu ARM je alternativní syntaxe určující konstanty.Namísto psaní #<const>, můžete psát #<byte>,#<rot>, která představuje konstantní hodnotu, která je získaná hodnota otočení <byte> právo <rot>.V některých kontextech má ARM se použití těchto konstant otočený.V těchto případech použít základní #<const> syntaxe místo.

      ANDS r0, r0, #1                ; OK
      ANDS r0, r0, #4, #2            ; A4508: Use of this rotated constant is deprecated
    
  • A4509: Tento formulář podmíněné instrukce se již nepoužívá
    Tato forma instrukce podmíněného ramena v architektuře ARMv8 již nepoužívá.Doporučujeme změnit kód použití podmínkových větví.Chcete-li zjistit, které podmíněné instrukce jsou stále podporovány, naleznete ARM architektura referenční příručce.

    Toto upozornění není emitovaných při - oldit je použit přepínač příkazového řádku.

      ADDEQ r0, r1, r8              ; A4509: This form of conditional instruction is deprecated
    

Viz také

Referenční dokumentace

ARM Assembler příkazový řádek

ARM Assembler směrnic