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

 
 
> Размер unsigned int или int Keil4.5
TAutomatic
сообщение Jun 2 2012, 11:17
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 59
Регистрация: 11-12-11
Пользователь №: 68 798



Добрый день, коллеги.
Месяц использую LPC1768 и только сейчас с "ужасом" заметил, что под переменные unsigned int и int компилятор отводит по 4 байта.
Использую среду Keil 4.5 и постоянно плююсь даже не по причине ее скудости, а по причине неудобности документации на нее и компилятор. Как установить "нормальный" размер этих типов данных размером в 2 байта?
И второй вопрос. Я был уверен, что в Cortex-M3 отсутствует необходимость выравнивания разноразмерных типов данных.
Об этом написано тут
Тем не менее, у себя в реале я этого не вижу. Если за однобайтовой переменной следует четырехбайтовая, то она все равно выравнивается по границе 32 разрядного слова, тоесть остается неиспользуемый промежуток в 3 байта. Что тут не так?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
andrewlekar
сообщение Jun 7 2012, 04:45
Сообщение #2


Знающий
****

Группа: Участник
Сообщений: 837
Регистрация: 8-02-07
Пользователь №: 25 163



Ребята, я вас умоляю, не делайте так в рабочем коде. Придёт после вас человек и не поймёт нифига, что вы там наоптимизировали.
Go to the top of the page
 
+Quote Post
TAutomatic
сообщение Jun 7 2012, 06:18
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 59
Регистрация: 11-12-11
Пользователь №: 68 798



Цитата(andrewlekar @ Jun 7 2012, 07:45) *
Ребята, я вас умоляю, не делайте так в рабочем коде. Придёт после вас человек и не поймёт нифига, что вы там наоптимизировали.

А при чем тут придет и не поймет rolleyes.gif Я беру к себе на работу только тех, кто способен понимать и разобраться. Тогда и Вы ответьте на вопрос: зачем тогда столько "фишек" и примочек в компиляторе? Вы этим не пользуетесь? Я пользуюсь. И максимально, что бы был максимально эффективный код, или максимально эффективное решение задачи или еще что-то в этом роде, но максимально эффективное. Почему публика привратно в основном понимает эту суть. если я спросил насчет упаковки переменных, почему -т о в основном у публики сложилось сразу впечатление, что я возьму тупо все данные упакую в кирпич. И начались советы по поводу эффективности такого использования и т.д. и т.п. Ребята, я не собираюсь так делать rolleyes.gif Во всяком случае ко всему подряд и без разбора "на всякий случай". Просто иногда гдето-то в определенном месте в связи с определенными условиями нужно применить такой метод. И не более. Речь не идет о како-то глобальности. Если Вы не пользуетесь всеми инструментами, которые вам дает средство разработки, Вы либо невысокой квалификации специалист, либо не можете предложить самое эффективное решение задачи, что собственно тоже говорит о квалификации. Все, что правильно понимается и правильно применяется- никак не отражается на рабочем коде в подавляющем большенстве случаев. И почти все так называемые "глюки" контроллеров или среды - это глюки того, кто не в полной мере этим владеет. Низкая квалификация.

Цитата(ViKo @ Jun 7 2012, 08:53) *
Герберд Шилдт. Полный справочник по C. (в электронном виде не имею на русском языке, в книжке на русском еще понятнее).
Page 144 - 145

Все правильно, спасибо за цитату rolleyes.gif Теперь попытаюсь Вам концептуально разъяснить в чем дело. Язык С был создан в эпоху микропроцессоров, у которых память была сегментирована. Это процессоры чуть до Intel286 и 386 и в том числе эти процессоры. Так вот, что бы получить доступ к исполнительному адресу, нужно было еще опереровать с сегментным регистром. Вполне вероятно, что два массива по 10 байт оказались бы на границе сегмента. Физически это последовательные адреса, но вот логические уже нет. И тогда последовательное обращение к 20 байтам на самом деле бы привело не к обращению к двум последовательным массивам, а в пределах одного секмента 64кБ. Давайте жить реалиями сегняшнего дня. В основном все уже имеют дело с микроконтроллерами с линейным адресным пространством. В пределах этого пространства компилятор не занимается перестановкой переменных и оптимизацией их размещения, если на то нет особых инструкций, указаний и т. д. Тоесть, компилятор оптимизирует код с обязательным требованием сохранения его идентичности по функционалу исходному коду и не занимается оптимизацией памяти данных
Go to the top of the page
 
+Quote Post
Dron_Gus
сообщение Jun 7 2012, 07:22
Сообщение #4


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

Группа: Свой
Сообщений: 1 202
Регистрация: 9-01-05
Из: Санкт-Петербург
Пользователь №: 1 861



Цитата(TAutomatic @ Jun 7 2012, 10:18) *
Давайте жить реалиями сегняшнего дня. В основном все уже имеют дело с микроконтроллерами с линейным адресным пространством. В пределах этого пространства компилятор не занимается перестановкой переменных и оптимизацией их размещения, если на то нет особых инструкций, указаний и т. д. Тоесть, компилятор оптимизирует код с обязательным требованием сохранения его идентичности по функционалу исходному коду и не занимается оптимизацией памяти данных

С первой частью заявления не соглашусь. Пространство хоть и линейно, но это не гарантирует одинаковое время доступа и одинаковое количество инструкций для доступа в ряде случаев.
Соответственно оптимизатор вполне может перетасовать данные, если это обоснованно и даст какой-то профит.

Более того, при определенных настройках тот же GCC может перекладывать данные из секции .data в .bss


--------------------
Если сверху смотреть, то сбоку кажется, что снизу ничего не видно.
Go to the top of the page
 
+Quote Post
TAutomatic
сообщение Jun 7 2012, 08:16
Сообщение #5


Участник
*

Группа: Участник
Сообщений: 59
Регистрация: 11-12-11
Пользователь №: 68 798



Цитата(Dron_Gus @ Jun 7 2012, 10:22) *
С первой частью заявления не соглашусь. Пространство хоть и линейно, но это не гарантирует одинаковое время доступа и одинаковое количество инструкций для доступа в ряде случаев.
Соответственно оптимизатор вполне может перетасовать данные, если это обоснованно и даст какой-то профит.

Более того, при определенных настройках тот же GCC может перекладывать данные из секции .data в .bss

Послушайте, чесговоря нет времени на такого рода диспут, но когда пишут совершенно непонятные для меня вещи, хочется всегда спросить: откуда вы это взяли?!!! Ну откуда вы взяли что время доступа может быть разны, если переменные размещаются в ОЗУ? Мы же не ведем речь о переменных и сразу о константах, которые размещаются в адресном пространстве кода? Ну я вот хочу знать того, чего не знаю. Покажите мне не на пальцах, а на конкретном примере. И еще, какие такие настройки компилера позволят две однородные переменные без инициализации на стадии линковки или обе с инициализацией, расположенные в одном программном модуле последовательно друг за другом разнести по разным секциям? Пожете показать, как Вы это делаете? rolleyes.gif
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- TAutomatic   Размер unsigned int или int Keil4.5   Jun 2 2012, 11:17
- - ohmjke   Размер int равен размеру машинного слова. В данном...   Jun 2 2012, 11:27
|- - TAutomatic   Цитата(ohmjke @ Jun 2 2012, 14:27) Размер...   Jun 2 2012, 11:33
- - aaarrr   Цитата(TAutomatic @ Jun 2 2012, 15:17) Ка...   Jun 2 2012, 11:30
|- - TAutomatic   Цитата(aaarrr @ Jun 2 2012, 14:30) Исполь...   Jun 2 2012, 11:43
|- - TAutomatic   Получается, все же есть в <stdint.h> - short...   Jun 2 2012, 11:47
|- - aaarrr   Цитата(TAutomatic @ Jun 2 2012, 15:43) Пе...   Jun 2 2012, 11:49
|- - TAutomatic   Цитата(aaarrr @ Jun 2 2012, 14:49) А вы п...   Jun 2 2012, 11:53
|- - prottoss   Цитата(TAutomatic @ Jun 2 2012, 17:53) По...   Jun 2 2012, 12:20
||- - TAutomatic   Цитата(prottoss @ Jun 2 2012, 15:20) Вам ...   Jun 2 2012, 12:36
|- - aaarrr   Цитата(TAutomatic @ Jun 2 2012, 15:53) По...   Jun 2 2012, 12:43
|- - TAutomatic   Цитата(aaarrr @ Jun 2 2012, 15:43) Сами р...   Jun 2 2012, 12:54
||- - scifi   Цитата(TAutomatic @ Jun 2 2012, 16:54) Но...   Jun 2 2012, 18:40
|- - prottoss   Цитата(aaarrr @ Jun 2 2012, 18:43) Кодuns...   Jun 2 2012, 12:56
|- - aaarrr   Цитата(prottoss @ Jun 2 2012, 16:56) Наве...   Jun 2 2012, 13:05
|- - prottoss   Цитата(aaarrr @ Jun 2 2012, 19:05) Нет. К...   Jun 2 2012, 13:10
|- - TAutomatic   Цитата(aaarrr @ Jun 2 2012, 16:05) Нет. К...   Jun 5 2012, 05:51
- - ohmjke   ЦитатаМашинное слово — машиннозависимая и платформ...   Jun 2 2012, 11:37
- - ohmjke   Написали же, 2 байтовый это short.   Jun 2 2012, 11:45
- - ohmjke   short он не из stdint.h, а просто является частью ...   Jun 2 2012, 11:50
- - ivainc1789   Не хотел создавать новую тему... Можно ли спросить...   Jun 2 2012, 12:21
|- - ohmjke   Цитата(ivainc1789 @ Jun 2 2012, 16:21) Не...   Jun 2 2012, 12:26
|- - prottoss   Цитата(ivainc1789 @ Jun 2 2012, 18:21) За...   Jun 2 2012, 12:30
- - aaarrr   Char может быть расположен как угодно - на скорост...   Jun 2 2012, 13:28
|- - prottoss   Цитата(aaarrr @ Jun 2 2012, 19:28) Char м...   Jun 2 2012, 13:50
|- - aaarrr   Цитата(prottoss @ Jun 2 2012, 17:50) С пе...   Jun 2 2012, 14:02
|- - prottoss   Цитата(aaarrr @ Jun 2 2012, 20:02) Объясн...   Jun 2 2012, 14:23
- - esaulenka   Я бы предложил не заниматься всякой фигнёй. Особен...   Jun 5 2012, 11:40
|- - TAutomatic   Цитата(esaulenka @ Jun 5 2012, 14:40) Я б...   Jun 5 2012, 16:57
|- - IgorKossak   Цитата(esaulenka @ Jun 5 2012, 14:40) Кей...   Jun 5 2012, 20:08
||- - Dron_Gus   Цитата(IgorKossak @ Jun 6 2012, 00:08) Ке...   Jun 5 2012, 20:24
|- - TAutomatic   Цитата(esaulenka @ Jun 5 2012, 14:40) Я б...   Jun 6 2012, 04:53
|- - ViKo   Цитата(TAutomatic @ Jun 6 2012, 07:53) На...   Jun 6 2012, 05:33
|- - TAutomatic   Цитата(ViKo @ Jun 6 2012, 08:33) Вставил ...   Jun 6 2012, 06:22
|- - demiurg_spb   Цитата(TAutomatic @ Jun 6 2012, 09:22) вд...   Jun 6 2012, 06:30
|- - IgorKossak   Цитата(TAutomatic @ Jun 6 2012, 09:22) А ...   Jun 6 2012, 06:44
|- - ViKo   Цитата(TAutomatic @ Jun 6 2012, 09:22) А ...   Jun 6 2012, 08:43
|- - TAutomatic   Цитата(ViKo @ Jun 6 2012, 11:43) У переме...   Jun 6 2012, 12:31
|- - ViKo   Цитата(TAutomatic @ Jun 6 2012, 15:31) Я ...   Jun 6 2012, 13:05
|- - TAutomatic   Цитата(ViKo @ Jun 6 2012, 16:05) Я провер...   Jun 6 2012, 13:48
- - ViKo   Проверил с тремя __packed. Так я не пробовал. ...   Jun 6 2012, 14:01
|- - TAutomatic   Цитата(ViKo @ Jun 6 2012, 17:01) Проверил...   Jun 6 2012, 14:07
||- - jcxz   Цитата(TAutomatic @ Jun 7 2012, 14:16) Ну...   Jun 7 2012, 09:08
||- - Dron_Gus   Цитата(jcxz @ Jun 7 2012, 13:08) Позвольт...   Jun 7 2012, 09:20
||- - TAutomatic   Цитата(jcxz @ Jun 7 2012, 12:08) Позвольт...   Jun 7 2012, 09:40
||- - demiurg_spb   Цитата(TAutomatic @ Jun 7 2012, 12:40) Дв...   Jun 7 2012, 10:02
||- - jcxz   Цитата(TAutomatic @ Jun 7 2012, 15:40) Ра...   Jun 7 2012, 10:10
||- - ViKo   Цитата(TAutomatic @ Jun 7 2012, 12:40) за...   Jun 7 2012, 10:16
|||- - jcxz   Цитата(ViKo @ Jun 7 2012, 16:16) Покажите...   Jun 7 2012, 10:20
||- - AHTOXA   Цитата(TAutomatic @ Jun 7 2012, 15:40) Ра...   Jun 7 2012, 10:17
||- - TAutomatic   Цитата(AHTOXA @ Jun 7 2012, 13:17) Может,...   Jun 7 2012, 10:27
|- - ViKo   Цитата(TAutomatic @ Jun 7 2012, 09:18) Вс...   Jun 7 2012, 10:26
|- - TAutomatic   Цитата(ViKo @ Jun 7 2012, 13:26) Вы не о ...   Jun 7 2012, 10:33
|- - ViKo   Цитата(TAutomatic @ Jun 7 2012, 13:33) См...   Jun 7 2012, 10:58
|- - TAutomatic   Цитата(ViKo @ Jun 7 2012, 13:58) При любо...   Jun 7 2012, 16:40
- - ViKo   Герберд Шилдт. Полный справочник по C. (в электрон...   Jun 7 2012, 05:53
- - andrewlekar   ЦитатаА при чем тут придет и не поймет rolleyes.gi...   Jun 7 2012, 06:40
|- - TAutomatic   Цитата(andrewlekar @ Jun 7 2012, 09:40) В...   Jun 7 2012, 07:04
- - exeron   Какой упоротый попался... Вам уже цитату из Шилдта...   Jun 7 2012, 10:33
- - KRS   Вообще то для того что бы расположить глобальные о...   Jun 7 2012, 20:19
|- - TAutomatic   Цитата(KRS @ Jun 7 2012, 23:19) Вообще то...   Jun 8 2012, 04:44
|- - demiurg_spb   Цитата(TAutomatic @ Jun 8 2012, 07:44) Со...   Jun 8 2012, 07:11
|- - KRS   Цитата(TAutomatic @ Jun 8 2012, 08:44) Ед...   Jun 8 2012, 09:44
- - esaulenka   Дурацкий вопрос: union-то зачем? Вполне достаточно...   Jun 8 2012, 09:59
|- - KRS   Цитата(esaulenka @ Jun 8 2012, 13:59) Дур...   Jun 8 2012, 12:19
- - brag   В Cortex-M3 выравнивание можно сказать, всегда нуж...   Jun 9 2012, 05:44
|- - TAutomatic   Цитата(brag @ Jun 9 2012, 08:44) Я всегда...   Jun 9 2012, 15:47
- - brag   Вешаем обработчик на исключение UsageFault, а в не...   Jun 9 2012, 16:34
- - TAutomatic   Цитата(brag @ Jun 9 2012, 19:34) Вешаем о...   Jun 9 2012, 18:34


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


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


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