Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Помощь в Keil Uvision 4
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > Программирование
Only
Помогите ответить на вопрос:

0x08000530 F000F878 BL.W __aeabi_memcpy4 (0x08000624)

А как вы думаете, зачем компилятор вставил вызов этой функции, хотя в вашем коде на С вызова нет?

редактор
может быть банальная инициализация данных при старте
WitFed
Проект я не глядел, хотя там наверняка можно умеючи получить строку исходника, из которой получился вызов выше у ТС.
Компиляторы сейчас умные слишком (односторонне, в меру заумности своих авторов и невозможности перевложить душу, только разум) -- могут на присвоение одной структуры в другую такую бяку сделать. Наверняка в настройках это всё можно открутить.
Или при входе в функцию написано нечто типа "int a = 2, b = 3, c = 4;", может "легче" ему показаться отвести 3 инитных слова в кодовом сегменте, а на старте функции одним махом скопировать.
Но если юзер перегрузит эту "родную" memcpy4() своей версией -- могут быть проблемы.
UniSoft
Цитата(Only @ Nov 20 2014, 05:14) *
Помогите ответить на вопрос:

0x08000530 F000F878 BL.W __aeabi_memcpy4 (0x08000624)

А как вы думаете, зачем компилятор вставил вызов этой функции, хотя в вашем коде на С вызова нет?

так это оптимизация,
а как он еще такое должен был реализовать?
int32_t mass1 [11] = {55,36,3,67,84,123,53,7,47,65,217};
Only
А можно поподробнее?) Как и что он оптимизирует?


Цитата(UniSoft @ Nov 21 2014, 16:14) *
так это оптимизация,
а как он еще такое должен был реализовать?
int32_t mass1 [11] = {55,36,3,67,84,123,53,7,47,65,217};
UniSoft
Цитата(Only @ Nov 22 2014, 01:17) *
А можно поподробнее?) Как и что он оптимизирует?

за подробностями вам лучше к стандартам си обратиться.
что оптимизирует? у вас массив из 11 элементов - локальная переменная,
которая инициализируется неким значением,
итого на заполнение этого массива поэлементно потребовалось бы как минимум 22 инструкции,
а так всего 4 простым копированием.
А вот как оптимизирует, все зависит от компилятора.
Only
Здравствуйте. Ещё такой вопрос) По коду,там где создаём структуру. При описании листинга дизассемблера структуры, препод спрашивает следующее:

Я пишу: Я понял так, что мы скопировали структуру в стек два раза.

>>>> И зачем же два раза?

Так, как у нас 11 элементов массива копируются не в регистры,а в стек. И функция работает с ними.

>>>> И все 11 копируются в стек?

Помогите пожалуйста разобраться с этим вопросом)

Цитата(UniSoft @ Nov 21 2014, 20:11) *
за подробностями вам лучше к стандартам си обратиться.
что оптимизирует? у вас массив из 11 элементов - локальная переменная,
которая инициализируется неким значением,
итого на заполнение этого массива поэлементно потребовалось бы как минимум 22 инструкции,
а так всего 4 простым копированием.
А вот как оптимизирует, все зависит от компилятора.

Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.