Pracuje Mosaic správně s polem ukazatelů na BOOL?

(1/1)

Luboš Zelinka:
Dobrý den,
ř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á?

Předem děkuji.

Milan Bydžovský:
V překladači je skutečně chyba.  :-\

Pokusíme se tento problém, co nejdříve napravit.

Luboš Zelinka:
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.

Milan Bydžovský:
Na problém se určitě podíváme. Děkujeme za report.

Navigace

[0] Index zpráv