firstvald 22 30 октября, 2020 Опубликовано 30 октября, 2020 · Жалоба 7 hours ago, ashr said: Если речь идет о кортексе... Стек на 8 выровняли? даже не задумывался об этом. на мой взгляд это имеет какое то влияние на то видно или нет число в регистрах в момент входа в функцию, но на функционирования программы никак не должно сказываться. если только на времени выполнения. и тогда встречный вопрос : куда смотреть про используемое выравнивание? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 69 30 октября, 2020 Опубликовано 30 октября, 2020 · Жалоба 4 minutes ago, firstvald said: на мой взгляд это имеет какое то влияние на то видно или нет число в регистрах в момент входа в функцию, но на функционирования программы никак не должно сказываться Это давно стало обязательным требованием ARM ABI. Невыполнение обычно и проявляется в виде неработающей double-арифметики. 7 minutes ago, firstvald said: куда смотреть про используемое выравнивание? Смотреть инициализацию стека(-ов). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
firstvald 22 30 октября, 2020 Опубликовано 30 октября, 2020 · Жалоба пошел смотреть (идти буду долго) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Darth Vader 0 30 октября, 2020 Опубликовано 30 октября, 2020 · Жалоба 4 часа назад, firstvald сказал: куда смотреть про используемое выравнивание? В первые 4 байта прошивки. Там записано начальное значение MSP. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
firstvald 22 7 ноября, 2020 Опубликовано 7 ноября, 2020 · Жалоба Stack_Size EQU 0x900 AREA STACK, NOINIT, READWRITE, ALIGN=3 Stack_Mem SPACE Stack_Size __initial_sp ; <h> Heap Configuration ; <o> Heap Size (in Bytes) <0x0-0xFFFFFFFF:8> ; </h> Heap_Size EQU 0x600 AREA HEAP, NOINIT, READWRITE, ALIGN=3 __heap_base Heap_Mem SPACE Heap_Size __heap_limit увы , выравнивается. заглядывал сюда Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
firstvald 22 7 ноября, 2020 Опубликовано 7 ноября, 2020 · Жалоба Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 69 7 ноября, 2020 Опубликовано 7 ноября, 2020 · Жалоба А в регистры-то заглянуть, раз отладчик подключен? Сразу снимутся вопросы с SP и параметрами. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
firstvald 22 7 ноября, 2020 Опубликовано 7 ноября, 2020 · Жалоба уже нет под рукой. через регистры параметры в функцию не передавались. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 69 7 ноября, 2020 Опубликовано 7 ноября, 2020 · Жалоба 1 hour ago, firstvald said: через регистры параметры в функцию не передавались. Другого пути нет в данном случае. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
firstvald 22 8 ноября, 2020 Опубликовано 8 ноября, 2020 · Жалоба я посмотрел два варианта. с двумя передаваемыми параметрами и с 8мью. не а . не было в регистрах в первом случае чисел. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 69 8 ноября, 2020 Опубликовано 8 ноября, 2020 · Жалоба 1 minute ago, firstvald said: не было в регистрах в первом случае чисел. В регистрах не может не быть чисел, так уж они устроены. Могут быть не те числа, если, например, прототип не соответствует функции. Два параметра типа double передаются в R0-R3. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
firstvald 22 8 ноября, 2020 Опубликовано 8 ноября, 2020 · Жалоба в регистрах есть числа но не те. я посмотрю и скрины сделаю. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Картошка 0 17 марта, 2021 Опубликовано 17 марта, 2021 · Жалоба с double были проблеммы с выравниванием, места хранения параноидально сделал static и поставил на них прагма пак 8 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Darth Vader 0 17 марта, 2021 Опубликовано 17 марта, 2021 · Жалоба 6 часов назад, Картошка сказал: double были проблеммы с выравниванием Компилятор самостоятельно без внешних указаний знает правильное выравнивание для всех типов данных. А проблемы с выравниваниванием в 99% случаев возникают при приведении указателей, в попытке вычитать число из потока данных в виде массива байт по его смещению в нем. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 215 17 марта, 2021 Опубликовано 17 марта, 2021 · Жалоба 3 часа назад, Darth Vader сказал: Компилятор самостоятельно без внешних указаний знает правильное выравнивание для всех типов данных. А проблемы с выравниваниванием в 99% случаев возникают при приведении указателей, в попытке вычитать число из потока данных в виде массива байт по его смещению в нем. Не факт, что из-за "приведений типа". Простейший пример: выделяем для задачи стек, невыровненный на границу 64бит; и все операции внутри такой задачи с double, размещёнными на стеке, идут лесом. Другой пример: Проект на Cortex-M, по каким-то причинам (может остался по наследству от другого проекта) бит STKALIGN регистра CCR ядра = 0. В ISR используем double (на стеке). И опять - фиаско. Хотя опять никаких "приведений указателей" и близко нет. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться