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
Chyby
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
Upozorně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