haker_fox 61 24 апреля, 2018 Опубликовано 24 апреля, 2018 · Жалоба Возвращать PC/LR и по мап файлу смотреть что откуда? Тогда функции должны возращать результаты в виде структур, где, собственно говоря, код завершения, и некая служебная информация. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Kabdim 0 24 апреля, 2018 Опубликовано 24 апреля, 2018 · Жалоба У вас в чипе 4Гб памяти? Но в общем, если не паковать - да, структура, так будет проще. Насколько я помню функция может использовать до 4 32битных регистров для возвращения значения. В функциональном мире вроде из функций обычно возвращают Result<T, E>. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
k155la3 27 24 апреля, 2018 Опубликовано 24 апреля, 2018 · Жалоба Иногда приходится придумывать некие коды, информирующие о той или иной ошибке при выходе из функции. . . . Я использую "двуполярный" (положительный и отрицательный) enum. Критичные ошибки - минус, ноль и плюс - без ошибок и некритичные. Использую также "битовую" структуру. Взведенный старший бит - флаг наличия ошибки. Для возврата ошибок через несколько уровней вызова, без использования try-catch, самый "нижний" код ошибки транслируется "верхними" ф-ми с умножением на 10. (по разрядности полученной ошибки можно судить с какого уровня "прилетело"). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 234 24 апреля, 2018 Опубликовано 24 апреля, 2018 · Жалоба Насколько я помню функция может использовать до 4 32битных регистров для возвращения значения. Это в каком компиляторе?? ЗЫ: Имхо - для таких тем нужно завести особую ветку форума. Озаглавить её "Конструирование сферических коней в вакууме". И разрешить вход только истинным кавалеристам. B) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 24 апреля, 2018 Опубликовано 24 апреля, 2018 · Жалоба Из функции можно возвратить структуру, в любом правильном компиляторе. Не предлагаю, но сообщаю. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 234 24 апреля, 2018 Опубликовано 24 апреля, 2018 · Жалоба Из функции можно возвратить структуру, в любом правильном компиляторе. Не предлагаю, но сообщаю. Мне это известно. Только я всегда думал, что размер структуры в этом случае ограничен sizeof(int)*2. По-крайней мере в IAR for ARM. Может где-то по-другому? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AlexandrY 3 25 апреля, 2018 Опубликовано 25 апреля, 2018 · Жалоба Из функции можно возвратить структуру, в любом правильном компиляторе. Не предлагаю, но сообщаю. Ща модно говорить - объект. Объект ошибки. Слово "сруктура" непроизвольно выдает склонность к ископаемым языкам. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 25 апреля, 2018 Опубликовано 25 апреля, 2018 · Жалоба Ща модно говорить - объект. Объект ошибки. Слово "сруктура" непроизвольно выдает склонность к ископаемым языкам. Действия и поступки структура и объект - одно и то же (, Айсман)! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AlexandrY 3 25 апреля, 2018 Опубликовано 25 апреля, 2018 · Жалоба Действия и поступки структура и объект - одно и то же (, Айсман)! Дело не в семантике. Язык определяет сознание Поэтому от "структур" уже время отказаться. :laughing: Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 25 апреля, 2018 Опубликовано 25 апреля, 2018 · Жалоба А как насчет высказывания jcxz? Только я всегда думал, что размер структуры в этом случае ограничен sizeof(int)*2. По-крайней мере в IAR for ARM. Я думаю, он нагло ошибается. :blink: Дело не в семантике. Поэтому от "структур" уже время отказаться. :laughing: "В свое время мы поговорим и об этом." Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 234 25 апреля, 2018 Опубликовано 25 апреля, 2018 · Жалоба Я думаю, он нагло ошибается. :blink: Может иногда всё-таки лучше почитать мануал? If the function returns a structure larger than 32 bits, the memory location where the structure is to be stored is passed as an extra parameter. Notice that it is always treated as the first parameter. это о возврате структур. The registers available for returning values are R0 and R0:R1. ... long long and double-precision (64-bit) return values: R0:R1 А это - о том как всё-таки можно вернуть структуру размером sizeof(int)*2 в двух регистрах. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 25 апреля, 2018 Опубликовано 25 апреля, 2018 · Жалоба Первая цитата не показывает, что размер структуры ограничен двумя словами. Вторая цитата не содержит слова "структура". "Об чем вы, дядя Сидор?" Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Kabdim 0 25 апреля, 2018 Опубликовано 25 апреля, 2018 · Жалоба Это в каком компиляторе?? ... Только я всегда думал, что размер структуры в этом случае ограничен sizeof(int)*2. Вы правы, я неправильно запомнил. Хотя мне казалось логичным сделать Argument = result = scratch, но инфоцентр 5.1.1 Core registers определяет по другому. И по передаче структур больше слова, тоже. Блин на х86 это сделано разумнее. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
haker_fox 61 25 апреля, 2018 Опубликовано 25 апреля, 2018 · Жалоба У вас в чипе 4Гб памяти? ОЗУ? 140 кБ встроенной, и снаружи 32 Мб. Из функции можно возвратить структуру, в любом правильном компиляторе. Не предлагаю, но сообщаю. Да, это верно. Возвращаем,и даже не задумываемся. Мне это известно. Только я всегда думал, что размер структуры в этом случае ограничен sizeof(int)*2. По-крайней мере в IAR for ARM. Может где-то по-другому? Не совсем понял, о чём вы? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 234 25 апреля, 2018 Опубликовано 25 апреля, 2018 · Жалоба Первая цитата не показывает, что размер структуры ограничен двумя словами. Вторая цитата не содержит слова "структура". Если не умеете читать и понимать даже выдержки из даташита - Ваши проблемы. Может приведёте какие-то аргументы? Я аргументы привёл, от Вас - только трёп. :laughing: Не совсем понял, о чём вы? О том, что компилятор IAR (for ARM) позволяет использовать для возвращаемых значений до двух регистров (R0,R1). Если кто-то знает другое (или про компилятор использующий большее число регистров) - плиз приведите аргументы. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться