Я прочитал RIS C -V spe c о расширении RV32A, у меня возник вопрос: как ЦП может проверять ограничения последовательности LR / S C, если программа выполняется в следующих инструкциях:
lr.w x6,x0,(x0)
jal x0,dest
.......
beq x0,x0,-1
.......
dest:
sc.w x1,x6,(x0)
Специалист c сказал, что «для гарантированной успешности последовательности в конечном итоге динамический код c, выполняемый между командами LR и S C, может содержать только другие инструкции из базы» I ”набор инструкций, исключая нагрузки, хранилища, скачки назад или взятые назад ветви, инструкции JALR, FENCE, FENCE.I и SYSTEM.".
Таким образом, если программа перепрыгивает через beq (обратная ветвь, которая нарушила указанное выше ограничение), то, как процессор может обнаружить 'beq', появляется в последовательностях LR / S C. В моем проекте аппаратное обеспечение не может обнаружить 'beq', если программа выполняет вышеуказанные инструкции, тогда S C может успешно сохранить данные в памяти данных, но это на самом деле должно вызвать сбой хранилища.