Název: Pracuje Mosaic správně s polem ukazatelů na BOOL? Přispěvatel: Luboš Zelinka 09.12.2012, 22:50 řekl bych, že Mosaic má problém s polem ukazatelů na BOOL (všechny ostatní typy se zdají v pořádku). Je to názorně vidět v automaticky generovaném assembler kódu (z ST jazyka): #srcline 36 ; pole_bool[1] := adr(b1); LEAX b1 #debug pointer b1 LEAX pole_bool WRIL #debug_left pointer pole_bool[1] #srcline 37 ; pole_bool[2] := adr(b2); LEAX b2 #debug pointer b2 LEAX pole_bool ADD 1 ; Index WRIL V předposledním řádku je přičtena pouze "1", což by znamenalo, že šířka adresy je pouze 1byte. Což není, protože je 4byte (Foxtrot CPU 1016). To dokazuje i následná instrukce WRIL, která je 32bitová (4byte). V praxi to znamená, že zápis do prvních 4 prvků pole přepisuje v paměti adresu prvním prvku pole. Je to možné nebo dělám něco špatně já? Název: Re: Pracuje Mosaic správně s polem ukazatelů na BOOL? Přispěvatel: Milan Bydžovský 10.12.2012, 07:38 V překladači je skutečně chyba. :-\
Pokusíme se tento problém, co nejdříve napravit. Název: Re: Pracuje Mosaic správně s polem ukazatelů na BOOL? Přispěvatel: Luboš Zelinka 12.12.2012, 12:58 Ok, díky. Když už budete šahat do překladače, ošetřete rovnou i to, že následující konstrukce způsobí zhroucení Mosaicu při překladu.
VAR test : (a, b); END_VAR Ano, vím, že je to nesmyslná konstrukce, ale i tak by neměla způsobit pád systému. Název: Re: Pracuje Mosaic správně s polem ukazatelů na BOOL? Přispěvatel: Milan Bydžovský 13.12.2012, 09:11 Na problém se určitě podíváme. Děkujeme za report.
|