реклама на сайте
подробности

 
 
9 страниц V  < 1 2 3 4 > »   
Reply to this topicStart new topic
> Коды завершения функции
haker_fox
сообщение Apr 24 2018, 14:10
Сообщение #16


Познающий...
******

Группа: Свой
Сообщений: 2 963
Регистрация: 1-09-05
Из: г. Иркутск
Пользователь №: 8 125



QUOTE (Kabdim @ Apr 24 2018, 18:54) *
Возвращать PC/LR и по мап файлу смотреть что откуда?

Тогда функции должны возращать результаты в виде структур, где, собственно говоря, код завершения, и некая служебная информация.


--------------------
Выбор.
Go to the top of the page
 
+Quote Post
Kabdim
сообщение Apr 24 2018, 14:39
Сообщение #17


Знающий
****

Группа: Свой
Сообщений: 558
Регистрация: 26-11-14
Из: Зеленоград
Пользователь №: 83 842



У вас в чипе 4Гб памяти? Но в общем, если не паковать - да, структура, так будет проще. Насколько я помню функция может использовать до 4 32битных регистров для возвращения значения. В функциональном мире вроде из функций обычно возвращают Result<T, E>.
Go to the top of the page
 
+Quote Post
k155la3
сообщение Apr 24 2018, 14:59
Сообщение #18


Профессионал
*****

Группа: Свой
Сообщений: 1 123
Регистрация: 8-03-09
Из: Днепр
Пользователь №: 45 848



Цитата(ViKo @ Apr 24 2018, 08:26) *
Иногда приходится придумывать некие коды, информирующие о той или иной ошибке при выходе из функции. . . .

Я использую "двуполярный" (положительный и отрицательный) enum.
Критичные ошибки - минус, ноль и плюс - без ошибок и некритичные.
Использую также "битовую" структуру. Взведенный старший бит - флаг наличия ошибки.
Для возврата ошибок через несколько уровней вызова, без использования try-catch,
самый "нижний" код ошибки транслируется "верхними" ф-ми с умножением на 10.
(по разрядности полученной ошибки можно судить с какого уровня "прилетело").
Go to the top of the page
 
+Quote Post
jcxz
сообщение Apr 24 2018, 16:28
Сообщение #19


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(Kabdim @ Apr 24 2018, 17:39) *
Насколько я помню функция может использовать до 4 32битных регистров для возвращения значения.

Это в каком компиляторе??

ЗЫ: Имхо - для таких тем нужно завести особую ветку форума. Озаглавить её "Конструирование сферических коней в вакууме". И разрешить вход только истинным кавалеристам. cool.gif
Go to the top of the page
 
+Quote Post
ViKo
сообщение Apr 24 2018, 18:39
Сообщение #20


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Из функции можно возвратить структуру, в любом правильном компиляторе. Не предлагаю, но сообщаю.
Go to the top of the page
 
+Quote Post
jcxz
сообщение Apr 24 2018, 18:44
Сообщение #21


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(ViKo @ Apr 24 2018, 21:39) *
Из функции можно возвратить структуру, в любом правильном компиляторе. Не предлагаю, но сообщаю.

Мне это известно. Только я всегда думал, что размер структуры в этом случае ограничен sizeof(int)*2. По-крайней мере в IAR for ARM.
Может где-то по-другому?
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Apr 25 2018, 05:57
Сообщение #22


Ally
******

Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050



Цитата(ViKo @ Apr 24 2018, 21:39) *
Из функции можно возвратить структуру, в любом правильном компиляторе. Не предлагаю, но сообщаю.

Ща модно говорить - объект. Объект ошибки.
Слово "сруктура" непроизвольно выдает склонность к ископаемым языкам. biggrin.gif
Go to the top of the page
 
+Quote Post
ViKo
сообщение Apr 25 2018, 06:08
Сообщение #23


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Цитата(AlexandrY @ Apr 25 2018, 08:57) *
Ща модно говорить - объект. Объект ошибки.
Слово "сруктура" непроизвольно выдает склонность к ископаемым языкам. biggrin.gif

Действия и поступки структура и объект - одно и то же (, Айсман)!
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Apr 25 2018, 06:12
Сообщение #24


Ally
******

Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050



Цитата(ViKo @ Apr 25 2018, 09:08) *
Действия и поступки структура и объект - одно и то же (, Айсман)!

Дело не в семантике.
Язык определяет сознание
Поэтому от "структур" уже время отказаться. laughing.gif
Go to the top of the page
 
+Quote Post
ViKo
сообщение Apr 25 2018, 06:23
Сообщение #25


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



А как насчет высказывания jcxz?
Цитата
Только я всегда думал, что размер структуры в этом случае ограничен sizeof(int)*2. По-крайней мере в IAR for ARM.

Я думаю, он нагло ошибается. blink.gif

Цитата(AlexandrY @ Apr 25 2018, 09:12) *
Дело не в семантике.
Поэтому от "структур" уже время отказаться. laughing.gif

"В свое время мы поговорим и об этом." biggrin.gif
Go to the top of the page
 
+Quote Post
jcxz
сообщение Apr 25 2018, 07:05
Сообщение #26


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(ViKo @ Apr 25 2018, 09:23) *
Я думаю, он нагло ошибается. blink.gif

Может иногда всё-таки лучше почитать мануал?
Код
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 в двух регистрах.
Go to the top of the page
 
+Quote Post
ViKo
сообщение Apr 25 2018, 07:33
Сообщение #27


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Первая цитата не показывает, что размер структуры ограничен двумя словами.
Вторая цитата не содержит слова "структура".
"Об чем вы, дядя Сидор?"
Go to the top of the page
 
+Quote Post
Kabdim
сообщение Apr 25 2018, 07:37
Сообщение #28


Знающий
****

Группа: Свой
Сообщений: 558
Регистрация: 26-11-14
Из: Зеленоград
Пользователь №: 83 842



Цитата(jcxz @ Apr 24 2018, 19:28) *
Это в каком компиляторе??
...
Только я всегда думал, что размер структуры в этом случае ограничен sizeof(int)*2.

Вы правы, я неправильно запомнил. Хотя мне казалось логичным сделать Argument = result = scratch, но инфоцентр 5.1.1 Core registers определяет по другому. И по передаче структур больше слова, тоже. Блин на х86 это сделано разумнее.
Go to the top of the page
 
+Quote Post
haker_fox
сообщение Apr 25 2018, 07:38
Сообщение #29


Познающий...
******

Группа: Свой
Сообщений: 2 963
Регистрация: 1-09-05
Из: г. Иркутск
Пользователь №: 8 125



QUOTE (Kabdim @ Apr 24 2018, 22:39) *
У вас в чипе 4Гб памяти?

ОЗУ? 140 кБ встроенной, и снаружи 32 Мб.

QUOTE (ViKo @ Apr 25 2018, 02:39) *
Из функции можно возвратить структуру, в любом правильном компиляторе. Не предлагаю, но сообщаю.

Да, это верно. Возвращаем,и даже не задумываемся.

QUOTE (jcxz @ Apr 25 2018, 02:44) *
Мне это известно. Только я всегда думал, что размер структуры в этом случае ограничен sizeof(int)*2. По-крайней мере в IAR for ARM.
Может где-то по-другому?

Не совсем понял, о чём вы?


--------------------
Выбор.
Go to the top of the page
 
+Quote Post
jcxz
сообщение Apr 25 2018, 07:41
Сообщение #30


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(ViKo @ Apr 25 2018, 10:33) *
Первая цитата не показывает, что размер структуры ограничен двумя словами.
Вторая цитата не содержит слова "структура".

Если не умеете читать и понимать даже выдержки из даташита - Ваши проблемы.
Может приведёте какие-то аргументы? Я аргументы привёл, от Вас - только трёп. laughing.gif

Цитата(haker_fox @ Apr 25 2018, 10:38) *
Не совсем понял, о чём вы?

О том, что компилятор IAR (for ARM) позволяет использовать для возвращаемых значений до двух регистров (R0,R1).
Если кто-то знает другое (или про компилятор использующий большее число регистров) - плиз приведите аргументы.
Go to the top of the page
 
+Quote Post

9 страниц V  < 1 2 3 4 > » 
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 17th June 2025 - 16:01
Рейтинг@Mail.ru


Страница сгенерированна за 0.01514 секунд с 7
ELECTRONIX ©2004-2016