Odp: Protokół XBRA

Śmiem się nie zgodzić, po to jest właśnie volatile, żeby kompilator wiedział że dostęp ma efekty uboczne i nie może go optymalizować. Taki 'pusty' zapis w C może nie przetrwać agresywnej optymalizacji.

Atari: FireBee, (Falcon030 CT60e SuperVidel SvEthlana CTPCI), TT, (520ST Pak030 Frak PuPla Panther), (520ST 4MB ST RAM 8MB TT RAM CosmosEx SC1435), (1040STFM UltraSatan SM124), (1040STE 4MB ST RAM 8MB TT RAM CosmosEx NetUSBee SM144 SC1224), 260ST, 520 ST+, (MEGA ST SM125), (65XE Rapidus U1MB VBXE SIDE2 SIO2PC), (Jaguar SkunkBoard), Lynx II, 2x Portfolio

27

Odp: Protokół XBRA

Ale jaki pusty? Masz adres i masz wartość, którą chcesz pod ten adres zapisać. W takim razie co nie jest 'pustym' zapisem? Wszędzie w kodzie mam wstawiać volatile?

What can be asserted without proof can be dismissed without proof.

Odp: Protokół XBRA

Nie wszystko. Jeżeli jednak kompilator nie widzi akcesów po zapisie to może sobie ten zapis wyoptymalizować. Nie mówię że koniecznie tak się stanie, ale dla świętego spokoju volatile bym tam dał.

Atari: FireBee, (Falcon030 CT60e SuperVidel SvEthlana CTPCI), TT, (520ST Pak030 Frak PuPla Panther), (520ST 4MB ST RAM 8MB TT RAM CosmosEx SC1435), (1040STFM UltraSatan SM124), (1040STE 4MB ST RAM 8MB TT RAM CosmosEx NetUSBee SM144 SC1224), 260ST, 520 ST+, (MEGA ST SM125), (65XE Rapidus U1MB VBXE SIDE2 SIO2PC), (Jaguar SkunkBoard), Lynx II, 2x Portfolio

29

Odp: Protokół XBRA

No właśnie nie może. Robisz zapis do pamięci i w pamięci znajdzie się taka wartość jaka powinna się tam ostatecznie znaleźć. Jedyne co robi volatile to wymuszeniena na kompilatorze, żeby wykonać KAŻDY access do tego samego adresu.

What can be asserted without proof can be dismissed without proof.

30

Odp: Protokół XBRA

Chyba nie ... to zależy od optymalizacji jakiej dokonuje kompilator ...  http://www.open-std.org/jtc1/sc22/wg14/ … /n1956.htm

Odp: Protokół XBRA

Zapis też jest accesem. Jak kompilator zdecyduje się coś wyoptymalizować do rejestrów, to nie będzie zapisu do pamięci, nawet jak będziesz używał wskaźnika.

Atari: FireBee, (Falcon030 CT60e SuperVidel SvEthlana CTPCI), TT, (520ST Pak030 Frak PuPla Panther), (520ST 4MB ST RAM 8MB TT RAM CosmosEx SC1435), (1040STFM UltraSatan SM124), (1040STE 4MB ST RAM 8MB TT RAM CosmosEx NetUSBee SM144 SC1224), 260ST, 520 ST+, (MEGA ST SM125), (65XE Rapidus U1MB VBXE SIDE2 SIO2PC), (Jaguar SkunkBoard), Lynx II, 2x Portfolio

32

Odp: Protokół XBRA

@artik-wroc zrób ten zapis i odczyt pamięci / rejestrów w asmie
będzie po problemie

Lynx I / Mega ST 1 / 7800 / Portfolio / Lynx II / Jaguar / TT030 / Mega STe / 800 XL / 1040 STe / Falcon030 / 65 XE / 520 STm / SM124 / SC1435
DDD HDD / AT Speed C16 / TF536 / SDrive / PAK68/3 / Lynx Multi Card / LDW Super 2000 / XCA12 / SkunkBoard / CosmosEx / SatanDisk / UltraSatan / USB Floppy Drive Emulator / Eiffel / SIO2PC / Crazy Dots / PAM Net
http://260ste.atari.org

33

Odp: Protokół XBRA

Dzisiaj będę walczył. Myślę ,że już wiem, co tam może nie działać.

Było miło :) Do widzenia.