Рекомендовал бы обращаться к первоисточнику, а именно к сайту ARM
«LDR Rx,[PC,#imm] might add a cycle because of contention with the fetch unit.» а не 1 такт, более того, в последней ревизии TRM прямо указано 2 такта.
Ну и если кому интересно мнение программиста с 5+ опытом работы с Кортексами, ассемблер не для них. Только оптимизация коротких критичных секций, и то лучше ее сделать на C.
не могу найти такую информацию :-(
не подскажите ссылку?
infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0337h/index.html здесь про дополнительный такт
infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0337h/index.html здесь про время исполнения
Еще одна «фича» микроконтроллера (и вообще «камней» с ядром ARM) возможность указания в инструкциях условия исполнения по флагам (EQ/NE, CS/CC, MI/PL и так далее).
Однако не все так просто: для возможности условного исполнения инструкций они должны быть включены в так называемый IT блок.
Это так при использовании Thumb2. В случае системы команд ARM четыре бита в опкоде использовались как раз для указания условий выполнения (включая вариант «всегда»), а в Thumb, если правильно помню, резервировалось три бита и набор условий для перехода был несколько менее богат.
Я тоже увидел разницу, но пока не разбирался глубоко с этим.
Я к тому, что фраза некорректна, если брать не только современный набор инструкций thumb2, т. к. до него использовался другой подход и не было опкода IT.
я сейчас дисплейчик подключаю небольшой, подключу буду исследовать этот момент, благодаря вам самому стало интересно!!!
И все же, я в свое время много писал на асме и для ДВК систем и для 48/ 51 и для АВР, а вот для Кортексов ну никак не могу рекомендовать. У них слишком богатая система команд с учетом всяких фич типа формирования констант, условий выполнения, сдвигов, разных способов формирования индексов, так что если раньше соотношение скорости было 3 к 1 в пользу человека, то с современными оптимизирующими компиляторами ну в лучшем случае 1.2 к 1 а то и чуть ли не наоборот. Есть у них (у компиляторов) не очень удачные места, но если ему хорошенько все расписать на С, то он сделает код почти не хуже, чем Вы сами врукопашную. Просто посмотрите код, который генерит, к примеру, IAR, и Вы увидите, что там почти нечего подправить руками.
Только полноправные пользователи могут оставлять комментарии.
Войдите, пожалуйста.