Le operazioni atomiche per i target mobili Delphi sono basate sulla famiglia di funzioni intrinseche AtomicXXX
. Il documentation dice:Quali sono i requisiti di allineamento per le funzioni intrinseche atomiche?
Poiché i compilatori mobili Delphi non supportano un built-in assemblatore, l'unità di sistema fornisce quattro funzioni intrinseche atomici che forniscono un modo per atomicamente scambio, valori di scambio, di incremento e memoria decremento confrontare e .
Queste quattro funzioni sono:
Funzioni RTL che forniscono operazioni atomiche, ad esempio i metodi di classe statici della classe TInterlocked
sono basati su questi quattro elementi intrinseci.
Per i compilatori mobili che hanno come target ARMv7, esistono requisiti di allineamento per questi quattro elementi intrinseci atomici? Se sì, quali sono?
La documentazione non elenca tali requisiti. Tuttavia, la documentazione è stata notoriamente inaccurata e non sono fiducioso di considerare l'assenza di requisiti dichiarati come prova definitiva del fatto che tali requisiti non esistono.
Per quanto lieve, XE8 documentation for intrinsic functions afferma che questi intrinseci atomici non sono supportati dai compilatori desktop. Non è corretto: questi elementi intrinseci sono supportati dai compilatori desktop.
Requisiti di allineamento per LDREX e STREX deriva dall'uso di monitor esclusiva non dai requisiti di allineamento generici per LDR (D)/STR (D) –