Only 0 19 ноября, 2014 Опубликовано 19 ноября, 2014 · Жалоба Помогите ответить на вопрос: 0x08000530 F000F878 BL.W __aeabi_memcpy4 (0x08000624) А как вы думаете, зачем компилятор вставил вызов этой функции, хотя в вашем коде на С вызова нет? Keil_4_Empty_Project.rar Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Edit2007 3 20 ноября, 2014 Опубликовано 20 ноября, 2014 · Жалоба может быть банальная инициализация данных при старте Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
WitFed 1 20 ноября, 2014 Опубликовано 20 ноября, 2014 · Жалоба Проект я не глядел, хотя там наверняка можно умеючи получить строку исходника, из которой получился вызов выше у ТС. Компиляторы сейчас умные слишком (односторонне, в меру заумности своих авторов и невозможности перевложить душу, только разум) -- могут на присвоение одной структуры в другую такую бяку сделать. Наверняка в настройках это всё можно открутить. Или при входе в функцию написано нечто типа "int a = 2, b = 3, c = 4;", может "легче" ему показаться отвести 3 инитных слова в кодовом сегменте, а на старте функции одним махом скопировать. Но если юзер перегрузит эту "родную" memcpy4() своей версией -- могут быть проблемы. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
UniSoft 15 21 ноября, 2014 Опубликовано 21 ноября, 2014 · Жалоба Помогите ответить на вопрос: 0x08000530 F000F878 BL.W __aeabi_memcpy4 (0x08000624) А как вы думаете, зачем компилятор вставил вызов этой функции, хотя в вашем коде на С вызова нет? так это оптимизация, а как он еще такое должен был реализовать? int32_t mass1 [11] = {55,36,3,67,84,123,53,7,47,65,217}; Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Only 0 21 ноября, 2014 Опубликовано 21 ноября, 2014 (изменено) · Жалоба А можно поподробнее?) Как и что он оптимизирует? так это оптимизация, а как он еще такое должен был реализовать? int32_t mass1 [11] = {55,36,3,67,84,123,53,7,47,65,217}; Изменено 21 ноября, 2014 пользователем Only Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
UniSoft 15 21 ноября, 2014 Опубликовано 21 ноября, 2014 · Жалоба А можно поподробнее?) Как и что он оптимизирует? за подробностями вам лучше к стандартам си обратиться. что оптимизирует? у вас массив из 11 элементов - локальная переменная, которая инициализируется неким значением, итого на заполнение этого массива поэлементно потребовалось бы как минимум 22 инструкции, а так всего 4 простым копированием. А вот как оптимизирует, все зависит от компилятора. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Only 0 25 ноября, 2014 Опубликовано 25 ноября, 2014 · Жалоба Здравствуйте. Ещё такой вопрос) По коду,там где создаём структуру. При описании листинга дизассемблера структуры, препод спрашивает следующее: Я пишу: Я понял так, что мы скопировали структуру в стек два раза. >>>> И зачем же два раза? Так, как у нас 11 элементов массива копируются не в регистры,а в стек. И функция работает с ними. >>>> И все 11 копируются в стек? Помогите пожалуйста разобраться с этим вопросом) за подробностями вам лучше к стандартам си обратиться. что оптимизирует? у вас массив из 11 элементов - локальная переменная, которая инициализируется неким значением, итого на заполнение этого массива поэлементно потребовалось бы как минимум 22 инструкции, а так всего 4 простым копированием. А вот как оптимизирует, все зависит от компилятора. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться