Varning isf fel vid ogiltig instruktion i MPASM

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
Användarvisningsbild
vfr
EF Sponsor
Inlägg: 3515
Blev medlem: 31 mars 2005, 17:55:45
Ort: Kungsbacka

Varning isf fel vid ogiltig instruktion i MPASM

Inlägg av vfr »

Om man råkar skriva fel på en instruktion i MPASM så att det blir en ogiltig instruktion, så får man bara en varning (found label after column 1) och inte ett fel. Det betyder att ett automatiskt byggverktyg som "make" t.ex inte detekterar att det blev fel. Verkar idiotiskt, enligt min mening. Det har kostat mig många timmar att hitta det felet.

Sätter man däremot en label framför så får man fortfarande varning, men också ett felmeddelande. Så då fungerar det.

MPLAB Ver 8.30. Jag har inte kvar några tidigare MPLAB längre, så jag kan inte kolla om det varit så tidigare också. Men det borde jag ha märkt isåfall. Skriver fel gör man ju titt som tätt.
Kaggen
Inlägg: 432
Blev medlem: 29 januari 2005, 03:06:02

Re: Varning isf fel vid ogiltig instruktion i MPASM

Inlägg av Kaggen »

Skriver du instruktioner utan tab före (tabulator alltså)? Tror att det blir tolkat som label då. Känner igen det där "found label after column 1". Tror column 1 är utan tab, column 2 är en tab in o.s.v. Jag kan ha fel dock.
Användarvisningsbild
vfr
EF Sponsor
Inlägg: 3515
Blev medlem: 31 mars 2005, 17:55:45
Ort: Kungsbacka

Re: Varning isf fel vid ogiltig instruktion i MPASM

Inlägg av vfr »

Ja, det är ingen hard-tab i filen utan bara soft-tab. Alltså mellanslag (8st). Men det ska ju inte göra någon skillnad. Båda ska ju betraktas som "whitespace". Jag har aldrig varit med om en assembler som tillåter hard-tab men inte motsvarande mellanslag.

Edit: Testat det nu. Nej, det blir ingen skillnad om jag använder hard-tab istället för mellanslag. Ger fortfarande inget fel.
bos
Inlägg: 2314
Blev medlem: 24 februari 2007, 23:29:15
Kontakt:

Re: Varning isf fel vid ogiltig instruktion i MPASM

Inlägg av bos »

Hur ser koden som ger meddelandet ut?
Användarvisningsbild
vfr
EF Sponsor
Inlägg: 3515
Blev medlem: 31 mars 2005, 17:55:45
Ort: Kungsbacka

Re: Varning isf fel vid ogiltig instruktion i MPASM

Inlägg av vfr »

Hur som helst, höll jag på att säga. Var som helst jag lägger in en rad med nonsens efter första positionen på raden. Alltså ett eller flera mellanslag först, följt av vilket nonsens som helst som inte är en giltigt instruktion ("dddd" t.ex).
bos
Inlägg: 2314
Blev medlem: 24 februari 2007, 23:29:15
Kontakt:

Re: Varning isf fel vid ogiltig instruktion i MPASM

Inlägg av bos »

"dddd" är inte en giltig instruktion, därför tolkar MPASM det som en label, och eftersom labels "måste" ligga i kolumn 1 kommer varningen "found label after column 1". Inga konstigheter alls.
Användarvisningsbild
Icecap
Inlägg: 26660
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Re: Varning isf fel vid ogiltig instruktion i MPASM

Inlägg av Icecap »

Problemet är ju inte heller att den varnar för det men att den inte ger det som error.
bos
Inlägg: 2314
Blev medlem: 24 februari 2007, 23:29:15
Kontakt:

Re: Varning isf fel vid ogiltig instruktion i MPASM

Inlägg av bos »

Vi vet inte om han suppressar varningen eftersom han inte ville visa koden.
Användarvisningsbild
vfr
EF Sponsor
Inlägg: 3515
Blev medlem: 31 mars 2005, 17:55:45
Ort: Kungsbacka

Re: Varning isf fel vid ogiltig instruktion i MPASM

Inlägg av vfr »

Vi vet inte om han suppressar varningen eftersom han inte ville visa koden.

Nu hårddrar du det lite väl mycket! Jag har inte tillgång till själva koden där jag sitter just nu. Men är det verkligen ett problem för någon annan att få samma sak så får jag ju göra det sen när jag är på plats igen.

Och nej, det finns ingen undertryckning av fel. Det var ju felet som inte kom, precis som Icecap påpekade. Varningen får jag, men det hjälper ju inte eftersom det inte ger fel och avbryter make:n.
Användarvisningsbild
Icecap
Inlägg: 26660
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Re: Varning isf fel vid ogiltig instruktion i MPASM

Inlägg av Icecap »

Jag har inte jobbat med MPLAB på ett tag men på en del andra kompilatorer kan man ställa den till att bryta vid första varningen, är detta inte möjligt med MPLAB?
v-g
EF Sponsor
Inlägg: 7875
Blev medlem: 25 november 2005, 23:47:53
Ort: Kramforce

Re: Varning isf fel vid ogiltig instruktion i MPASM

Inlägg av v-g »

Det ska gå att ställa så den bryter vid en varning också. Default är att den bara meddelar.

Jag brukar se till att inte ha en enda warning i min kod så för mig fungerar default bra.
Användarvisningsbild
vfr
EF Sponsor
Inlägg: 3515
Blev medlem: 31 mars 2005, 17:55:45
Ort: Kungsbacka

Re: Varning isf fel vid ogiltig instruktion i MPASM

Inlägg av vfr »

Om det inte är en giltig instruktion, inte ett giltigt assemblerdirektiv och inte ett giltigt makronamn så måste den ju för sjutton ge fel, och inte varning. Sedan är det ju en annan sak om man dessutom vill att varningar tolkas som fel också. Men det är ju liksom inte fallet här. Det är ju ett helt uppenbart fel. Och sätter man en label före, så får man fel också.
Kaggen
Inlägg: 432
Blev medlem: 29 januari 2005, 03:06:02

Re: Varning isf fel vid ogiltig instruktion i MPASM

Inlägg av Kaggen »

Installerade just MPLAB 8.33 och där får jag inte ens en varning om jag skriver typ " dkfjdkjfhdkfh" (OBS! 2 mellanslag först). Men jag tror som bos säger att MPLAB försöker vara "smart" och antar att man menar att det skall vara en label. Så har jag för mig att det också var i de tidigare versionerna. Skriver jag däremot " dlfkjgldkf oieroeir", så får jag error eftersom MPLAB verkar anta att det första "ordet" är en label och då också antar att det *måste* komma en instruktion efter, vilken den då inte känner igen.

Borde iofs gå att ställa in nånstans, men jag har ej hittat det.

EDIT: Såg att jag inte fick varning för koden hade "errorlevel -207" vilket disablear dessa varningar. Tog jag bort -207 fick jag samma varning. Kanske man kan få 207 att generera ett error istället?
Användarvisningsbild
vfr
EF Sponsor
Inlägg: 3515
Blev medlem: 31 mars 2005, 17:55:45
Ort: Kungsbacka

Re: Varning isf fel vid ogiltig instruktion i MPASM

Inlägg av vfr »

Intressant. I andra assemblers som jag jobbat i, så är det en label om det börjar med bokstav i första kolumnen och sedan instruktion/direktiv/makro nästa efter första whitespace. Oavsett om det var en label först eller inte. Nu kommer jag inte ihåg hur Microchip definierat det i manualerna, men det låter märkligt om den tolkar det som en label efter space. Det låter som ett direkt fel i mina öron.
Användarvisningsbild
vfr
EF Sponsor
Inlägg: 3515
Blev medlem: 31 mars 2005, 17:55:45
Ort: Kungsbacka

Re: Varning isf fel vid ogiltig instruktion i MPASM

Inlägg av vfr »

Nu skrev jag ihop ett enkelt exempel som visar problemet.

Kod: Markera allt

                      00001 ;************************************************************************
                      00002 ;*                                                                      *
                      00003 ;* Copyright:   Håkan Nilsson                                           *
                      00004 ;* Project:     Buggtest                                                *
                      00005 ;* Name:        Test.asm                                                *
                      00006 ;* Date:        2009-07-04                                              *
                      00007 ;* Rev. date:   2009-07-04                                              *
                      00008 ;* Rev. by:     Håkan Nilsson                                           *
                      00009 ;*                                                                      *
                      00010 ;* Description: Test probable bug in MPASM.                             *
                      00011 ;*                                                                      *
                      00012 ;* Functions:   Test                Genererate database                 *
                      00013 ;*                                                                      *
                      00014 ;************************************************************************
                      00015 
                      00016 
                      00017         list    p=16F74,r=dec
                      00018         title   "Test"
                      00019        
                      00020 ;************************************************************************
                      00021 ;*                                                                      *
                      00022 ;* FUNCTIONS                                                            *
                      00023 ;*                                                                      *
                      00024 ;* Functions for this program module.                                   *
                      00025 ;*                                                                      *
                      00026 ;************************************************************************
                      00027 
0000   3055           00028 Begin   movlw   H'55'
Warning[207]: Found label after column 1. (ddddd)
0001                  00029         ddddd
0001   30AA           00030         movlw   H'AA'
Error[122]  : Illegal opcode (ddddd)
0001   30AA           00031 aaaa    ddddd
0002   2800           00032         goto    Begin
                      00033         
                      00034         end
Skriv svar