-
- не в тему, так, разглагольствования: кстати если вспомнить
ассемблер х86, то тоже вроде регистры общего назначения, но у
каждого таки свои функции были в контекстах команд - RED_DRAGON(19.06.2023 22:45)
- в PDP-11 тоже не все регистры можно было безболезненно изменять.
хотя их там всего 8 штук было. и способов адресации поболее, чем у
кого-то еще. - Alex68(19.06.2023 22:48)
- Да, R7 (PC), R6 (SP) должны были всегда быть четными. Ну и
изменения влекут последствия. Кроме того, для расширенной
арифметики регистры парами использовались. - LightElf(20.06.2023 14:25)
- к слову, после DEC'а всюду пишу так Alex68(1 знак., 20.06.2023 16:50, ссылка)
- Да, R7 (PC), R6 (SP) должны были всегда быть четными. Ну и
изменения влекут последствия. Кроме того, для расширенной
арифметики регистры парами использовались. - LightElf(20.06.2023 14:25)
- в PDP-11 тоже не все регистры можно было безболезненно изменять.
хотя их там всего 8 штук было. и способов адресации поболее, чем у
кого-то еще. - Alex68(19.06.2023 22:48)
- Думаю IAR следует рекомендациям ARM. При вызове функций, регистры R0..R3 даются в пользование вызываемой функции. Они же используются и для передачи параметров. Заботиться о сохранеинии этих регистров должна вызывающая функция. - BlackMorda(19.06.2023 19:55)
- Help->Development guide->Assembler language interface - Bill(19.06.2023 08:08)
- Проблема возникает потому что в вызывающей функции в регистрах лежали какие-то полезные значения, которые asm вставка или функция перетерла. Все это можно переписать не замарачиваясь сохранением регистров вообще. Для этого звать свой asm или какую другую эзотерику вызовом отдельной void-функции. Между вызовами отдельных void-функций, втч asm-кода ничего сохранять не надо, никаких регистров. Компилятор не предполагает сохранение рон-ов между функциями которые их не RxTx(11 знак., 18.06.2023 22:35)
- У верблюда спросили: почему у тебя шея кивая? - А что у меня прямое? - В ответ спросил верблюд? - Kpoк(18.06.2023 21:16)
- Мнение насчет ABI от самого ARM. IAR, скорее всего, ни при чем. Evgeny_CD(1 знак., 18.06.2023 15:30, ссылка)
- У IAR свои представления о прекрасном :) Впрочем, компилятор умеет генерить код соответствующий AEABI если его об этом попросить. - ЫЫyкпy(18.06.2023 22:56)
- Имана. AAPCS. "A subroutine must preserve the contents of the
registers r4-r8, r10, r11 and SP". - SciFi(18.06.2023 15:45)
- А указатель стека зачем сохранять??? Это же дело шедулера? - st256(18.06.2023 17:41)
- Не сохраняйте. Посмотрим, что получится :-) - SciFi(18.06.2023 17:42)
- Ну объясните, зачем сохранять-то? Какой-то фокус с подменой стека
внутри задачи? - st256(18.06.2023 17:43)
- Я стесняюсь объяснять профессору. Боюсь нарушить социальную
иерархию :-) - SciFi(18.06.2023 17:48)
- Народ, давайте выяснять истину, а не понты. - Evgeny_CD(18.06.2023 21:33)
- Это обращено к уважаемому профессору? Могу только добавить +100500. - SciFi(18.06.2023 21:47)
- Вы реально считаете, что в моем возрасте кого-то сильно заботят
понты? Вы в курсе, что такое стеб? Или красиво составленный текст? st256(111 знак., 18.06.2023 22:09)
- Меня просто интересуют подробности ABI ARM. - Evgeny_CD(18.06.2023 22:38)
- Ну так почитайте. Вы же сами ссылку дали. - SciFi(18.06.2023 22:41)
- Меня просто интересуют подробности ABI ARM. - Evgeny_CD(18.06.2023 22:38)
- Вы реально считаете, что в моем возрасте кого-то сильно заботят
понты? Вы в курсе, что такое стеб? Или красиво составленный текст? st256(111 знак., 18.06.2023 22:09)
- Это обращено к уважаемому профессору? Могу только добавить +100500. - SciFi(18.06.2023 21:47)
- А Вы не бойтесь. st256(320 знак., 18.06.2023 17:53)
- Не столько сохранять, сколько восстанавливать. Подпрограмма может
размещать в стеке локальные переменные (смещать указатель на их
размер). Перед возвратом нужно воссановить. - Cкpипaч(18.06.2023 21:38)
- Я что-то запутался... Сохранять в стеке указатель на этот же стек?
А просто отминусовать SP в начале, а потом прибавить в конце, не
проще ли? - st256(18.06.2023 21:59)
- "Preserve" это не обязательно про запихивание в стек. Если на
выходе такое как на входе это всех устроит. Cкpипaч(74 знак., 18.06.2023 23:18)
- Часто локальные переменные суют в стек. Стек увеличивают, а на выходе нужно "очистить" или восстановить стек. - BlackMorda(19.06.2023 19:51)
- SP это немного необычный РОН (R13). VVB(610 знак., 18.06.2023 22:19)
- Речь шла не о прерываниях, а об обычном вызове функции. - st256(18.06.2023 22:20)
- ->>> my504(1 знак., 19.06.2023 00:13, картинка)
- Написано: VVB(464 знак., 18.06.2023 22:30)
- Но вообще манипуляции со стеком в процедуре опасны. Зачем сделано -
понятно, еще один индексный регистр. Но не здорово. - Evgeny_CD(18.06.2023 22:41)
- во многих архитектурах на асме часто пишу что-то типа такого Alex68(197 знак., 19.06.2023 22:54)
- Скорее дело не в этом. Есть куча Link-инструкций способных разрушить доступ к локальным переменным в пределах вызова asm-вставки использующей эти инструкции. - my504(19.06.2023 00:35)
- Но вообще манипуляции со стеком в процедуре опасны. Зачем сделано -
понятно, еще один индексный регистр. Но не здорово. - Evgeny_CD(18.06.2023 22:41)
- Речь шла не о прерываниях, а об обычном вызове функции. - st256(18.06.2023 22:20)
- "Preserve" это не обязательно про запихивание в стек. Если на
выходе такое как на входе это всех устроит. Cкpипaч(74 знак., 18.06.2023 23:18)
- Я что-то запутался... Сохранять в стеке указатель на этот же стек?
А просто отминусовать SP в начале, а потом прибавить в конце, не
проще ли? - st256(18.06.2023 21:59)
- Не столько сохранять, сколько восстанавливать. Подпрограмма может
размещать в стеке локальные переменные (смещать указатель на их
размер). Перед возвратом нужно воссановить. - Cкpипaч(18.06.2023 21:38)
- Народ, давайте выяснять истину, а не понты. - Evgeny_CD(18.06.2023 21:33)
- Я стесняюсь объяснять профессору. Боюсь нарушить социальную
иерархию :-) - SciFi(18.06.2023 17:48)
- Ну объясните, зачем сохранять-то? Какой-то фокус с подменой стека
внутри задачи? - st256(18.06.2023 17:43)
- Не сохраняйте. Посмотрим, что получится :-) - SciFi(18.06.2023 17:42)
- А указатель стека зачем сохранять??? Это же дело шедулера? - st256(18.06.2023 17:41)
- Я заходя в прерывание не сохраняю регистры в стеке. За меня все
делает IAR. Sl(106 знак., 18.06.2023 15:18)
- Это не обработчик прерывания. Я просто вызвал функцию, написанную на Ассемблере. - st256(18.06.2023 17:42)
- "Читайте доки, они рулез" - LightElf(18.06.2023 14:31)
- Скажите, сколько времени Вам нужно, чтобы прочесть все доки и найти
нужный? Вот мне заказчик на такие мероприятия времени не выделяет. - st256(18.06.2023 17:45)
- Поиск отменили? LightElf(1 знак., 19.06.2023 15:46, картинка)
- Читать нужно в свободное от работы время. Или нет? - Bill(19.06.2023 14:36)
- Да там все и не нужно. Это справочник. Основные положения
посмотрел. За час-полтора управишься. Остальное по мере
необходимости находится за минуту. Ты дольше вопросы задаешь и
ебешься на ровном месте. - Codavr(18.06.2023 20:16)
- Ну если Вам так все ясно, не могили бы Вы указать захолустному
спецу про процессорам, где найти описание стадий конвейера для
stm32h723zgt? И имеет ли смысл вообще этим заморачиваться, как это
делают все, кто программирует DSP? - st256(18.06.2023 20:48)
- Смысла нет. По сути, true DSP инструкций у этой архитектуры нет по
причине отсутствия такой возможности - не предусмотрен параллельный
двух и более канальный доступ в ОЗУ и отсутствует возможность
модификации РОНов-указателей и предзагрузка по ним в пределах одной
MAC-инструкции. Все что доступно - это чисто регистровая MAC.
Вместо двух циклов - один. SIMD - это Cortex-A. А VLIW вообще не
про ARM. - my504(19.06.2023 00:52 - 12:12)
- Не знаком близко с M7, но разве он не умеет из DTCM выбирать данные
параллельно с данными из ОЗУ? Вроде даже M4 это умеет. - LightElf(19.06.2023 11:55)
- Система команд это не умеет. Но даже если бы и умела, то кэш данных
еще нужно перезагрузить из ОЗУ общего назначения. Причем DMA тут не
работает. Будет очень все криво. - my504(19.06.2023 12:25)
- Система команд - всего лишь уровень абстракции. DTCM не кэш. MDMA на ST умеет лазить в DTCM. - LightElf(19.06.2023 12:29)
- Система команд это не умеет. Но даже если бы и умела, то кэш данных
еще нужно перезагрузить из ОЗУ общего назначения. Причем DMA тут не
работает. Будет очень все криво. - my504(19.06.2023 12:25)
- Не знаком близко с M7, но разве он не умеет из DTCM выбирать данные
параллельно с данными из ОЗУ? Вроде даже M4 это умеет. - LightElf(19.06.2023 11:55)
- Cortex-M7 Technical reference и/или Programming manual? - VladislavS.(18.06.2023 22:42)
- Смысла нет. По сути, true DSP инструкций у этой архитектуры нет по
причине отсутствия такой возможности - не предусмотрен параллельный
двух и более канальный доступ в ОЗУ и отсутствует возможность
модификации РОНов-указателей и предзагрузка по ним в пределах одной
MAC-инструкции. Все что доступно - это чисто регистровая MAC.
Вместо двух циклов - один. SIMD - это Cortex-A. А VLIW вообще не
про ARM. - my504(19.06.2023 00:52 - 12:12)
- Ну если Вам так все ясно, не могили бы Вы указать захолустному
спецу про процессорам, где найти описание стадий конвейера для
stm32h723zgt? И имеет ли смысл вообще этим заморачиваться, как это
делают все, кто программирует DSP? - st256(18.06.2023 20:48)
- правильно делает, вы же спец, должны сами все давно знать и
прочесть. - Oman(18.06.2023 20:04)
- Вы знаете, а у нас документация может быть и на китайском... Я так говорю, для информации. - st256(18.06.2023 20:06)
- доки придумал трус :-) - SciFi(18.06.2023 14:33)
- Писатели хелпов крутым специалистам не указ. Какой-то час увлекательных поисков причины. - Codavr(18.06.2023 15:19)
- Скажите, сколько времени Вам нужно, чтобы прочесть все доки и найти
нужный? Вот мне заказчик на такие мероприятия времени не выделяет. - st256(18.06.2023 17:45)
- Кто не в состоянии найти папку arm/doc/ или хотя бы кнопку
<F1> нажать? - ЫЫyкпy(18.06.2023 13:41)
- А там чо искать? - st256(18.06.2023 17:46)
- На языке вероятного противника "конвенция по использованию РОНов"
называется "calling convention". ЫЫyкпy(1 знак., 18.06.2023 20:53, картинка)
- предатель... - SciFi(18.06.2023 21:06)
- Грешен, не могу безучастно взирать как человек тянется к знаниям
... тянется, тянется ... и не дотягивается. - ЫЫyкпy(18.06.2023 23:01)
- Дык дай ему не рыбку, а удочку. Покажи, в какой стороне тырнет,
пусть учится гуглить. Профессор должен справиться :-) - SciFi(18.06.2023 23:14)
- вижу ненависть классовую)) иль быть может обидка за несданный
экзамен поры студенческой)) - Alex68(18.06.2023 23:53)
- ...просто апломб, не по делу, которым "наш профессор"...
наслаждается. - Cкpипaч(19.06.2023 00:00)
- +1 Не за рыбой он сюда ходит. - ЫЫyкпy(19.06.2023 07:56)
- ...просто апломб, не по делу, которым "наш профессор"...
наслаждается. - Cкpипaч(19.06.2023 00:00)
- вижу ненависть классовую)) иль быть может обидка за несданный
экзамен поры студенческой)) - Alex68(18.06.2023 23:53)
- Дык дай ему не рыбку, а удочку. Покажи, в какой стороне тырнет,
пусть учится гуглить. Профессор должен справиться :-) - SciFi(18.06.2023 23:14)
- Ржал :) - RxTx(18.06.2023 22:27)
- Грешен, не могу безучастно взирать как человек тянется к знаниям
... тянется, тянется ... и не дотягивается. - ЫЫyкпy(18.06.2023 23:01)
- Спасибо. - st256(18.06.2023 21:02)
- предатель... - SciFi(18.06.2023 21:06)
- На языке вероятного противника "конвенция по использованию РОНов"
называется "calling convention". ЫЫyкпy(1 знак., 18.06.2023 20:53, картинка)
- А там чо искать? - st256(18.06.2023 17:46)
- r11, r7 описаны как frame pointer, syscall number. хотя вроде как
по р12 general purpose registers. - RED_DRAGON(18.06.2023 13:26)
- Спасибо. Кстати, скорее всего они и сбойнули. - st256(18.06.2023 17:47)
- не в тему, так, разглагольствования: кстати если вспомнить
ассемблер х86, то тоже вроде регистры общего назначения, но у
каждого таки свои функции были в контекстах команд - RED_DRAGON(19.06.2023 22:45)