Сергей Борщ 134 12 апреля, 2023 Опубликовано 12 апреля, 2023 · Жалоба 3 минуты назад, jcxz сказал: Это сработало! Осталось выделение R0-R3 отдать на откуп компиилятору. Дочитал раздел описания llvm до конца, нашел про модификаторы. Мое битье пока ни к чему не привело, но может вас натолкнет на мысли: " STMIA %5!, %M0 \n" /tmp/ccfqO5Uk.s:684: Error: bad range in register list -- `stmia r2!,{r0-r0}' 2 минуты назад, Arlleex сказал: LDM/STM пофигу, в каком порядке перечислены в {reglist}. Но gcc ругается: Цитата /tmp/cczFIC5s.s:684: Warning: register range not in ascending order Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 231 12 апреля, 2023 Опубликовано 12 апреля, 2023 · Жалоба 8 минут назад, Сергей Борщ сказал: Мое битье пока ни к чему не привело, но может вас натолкнет на мысли: Нет, так я тоже пробовал - не переваривает. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 134 12 апреля, 2023 Опубликовано 12 апреля, 2023 · Жалоба 4 минуты назад, jcxz сказал: Нет, так я тоже пробовал Изменено: опять поспешил. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
adnega 11 12 апреля, 2023 Опубликовано 12 апреля, 2023 · Жалоба В 12.04.2023 в 14:55, Arlleex сказал: LDM/STM пофигу, в каком порядке перечислен {reglist}. Там в КОП инструкции эти регистры отмечаются битовой маской. А инструкция проходится по списку этих битов, начиная с младшего. Поэтому важен порядок лишь загрузки данных в сами регистры, а не то, как они выглядят в списке LDM/STM. Это понятно. Но как компилятору объяснить, что порядок в reg_list имеет значение? GCC выдает предупреждение, но как заставить соблюдать порядок номеров регистров? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 231 12 апреля, 2023 Опубликовано 12 апреля, 2023 · Жалоба 1 час назад, Сергей Борщ сказал: Мое битье пока ни к чему не привело, но может вас натолкнет на мысли: С одним %M0 всё прекрасно работает: STMIA %5!, %M0 Но как туда вставить более чем один регистр??? Перепробовал уже кучу разных вариантов: STMIA %5!, %M0,%M1 STMIA %5!, %M0,1 STMIA %5!, %M0...%M1 STMIA %5!, %M0-%M1 STMIA %5!, %M0-1 STMIA %5!, %M0...1 ... ничего не сработало. На некоторых типа: STMIA %5!, %M(0,1) IAR вообще виснет намертво. Максимум - 2 регистра позволяет впихнуть: u64 q; asm( "p01: LDR %L0, [%1, #8 * 1] \n" " LDR %H0, [%1, #8 * 2]! \n" " SUBS %3, %3, #2 \n" " STMIA %2!, %M0 \n" " BNE p01" : "=&Rp"(q) : "r"(p0), "r"(p1), "r"(i) : "cc", "memory"); q = q; но уже начинаются приколы..... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 134 12 апреля, 2023 Опубликовано 12 апреля, 2023 · Жалоба 3 часа назад, jcxz сказал: Но как туда вставить более чем один регистр??? Вот и я на этом споткнулся. Ничего более продуктивного, чем ковырять исходники gcc или llvm в голову не пришло, а на это нет свободного времени. Так что "сама-сама-сама". Если вдруг победите - поделИтесь решением, может когда-нибудь кому-нибудь пригодится. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
adnega 11 12 апреля, 2023 Опубликовано 12 апреля, 2023 · Жалоба Нашел старенький, но ответ. Цитата > So how should I go about wrapping ldm / stm for usage in C land? There is in general no way to do that. Sorry. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 134 12 апреля, 2023 Опубликовано 12 апреля, 2023 · Жалоба 58 минут назад, adnega сказал: старенький, но ответ "однако за время пути собака могла подрасти". Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dimka76 59 12 апреля, 2023 Опубликовано 12 апреля, 2023 · Жалоба On 4/12/2023 at 7:44 PM, Сергей Борщ said: может когда-нибудь кому-нибудь пригодится. Когда-нибудь это просто затеряется в мильене других сообщений форума и никто не найдет 😉 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 134 12 апреля, 2023 Опубликовано 12 апреля, 2023 · Жалоба 53 минуты назад, dimka76 сказал: и никто не найдет 😉 Гугля уже находит эту ветку. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 231 12 апреля, 2023 Опубликовано 12 апреля, 2023 · Жалоба 1 час назад, Сергей Борщ сказал: Гугля уже находит эту ветку. Мы меняем мир к лучшему! PS: Хех! - этот микроскопический кусочек на асм уменьшил общую загрузку CPU на ~0.5%! Что существенно, так как при выполнении некоторых операций загрузка CPU иногда превышает 80%. А работа - real-time, не терпит промедлений. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться