здравствуйте.
к сожалению С/C++ компиллеры не могут использовать все иструкции ядра, поскольку язык программирования (с/c++) - всетаки язык формального описания и не позволяет разработчику выразить на нем все свои желания, о которых о части позаботились разработчики ядра процессора.
в свете сказанного очевидно что без применения асма в 'узких местах" - новый процессор тановится таким же ''старым" и мы получаем дядю Васю забивающего магнитофоном гвозди.
осознание вышескзанного заставило наконецто залесть в мануал и потратить время на изучение СM3 - результат печальный.
ниже приведен список команд - названи красивые и заманчивые, но мне непонятно как они работают, тоесть для чего они нужны.
последняя вроде понятно как работет но непонятно кудаее можно прикрутить с максимальной пользой, в какихто алгоритмах же она заменит кучу кода - вопрос в каких.
первые три особо загадочные, на них у меня большие надежды.
просьба уже разобравшихся пролить свет. зарание спасибо.
Data memory barrier DMB <c>
Data synchronization barrier DSB <c>
Instruction synchronization barrier
ISB <c>
Send event SEV <c>
Load register exclusive calculates an address from a base register value and an immediate offset, loads a word from memory, writes it to a register
LDREX<c> <Rt>,[<Rn>{,#<imm>}]
STREX <c> <Rd>,<Rt>,[<Rn>{,#<imm>}]
Clear exclusive clears the local record of the executing processor that an address has had a request for an exclusive access.
CLREX <c>
Table branch byte TBB [<Rn>, <Rm>]
Table branch halfword TBH [<Rn>, <Rm>, LSL #1]
Return number of leading zeros in register value
CLZ.W <Rd>, <Rn>