Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту


Закрытая тема
Опции темы
Непрочитано 22.04.2017, 23:21   #31
NewWriter
Заблокирован
 
Регистрация: 07.09.2014
Адрес: В Кремле!
Сообщений: 4,486
Сказал спасибо: 396
Сказали Спасибо 2,220 раз(а) в 1,319 сообщении(ях)
NewWriter на пути к лучшему
По умолчанию Re: Организация памяти.

А теперь поставьте что-нибудь между { } и посмотрите. Этот код будет безжалостно выкинут, потому что while(1) всегда true.
А теперь напишите
volatile int c;
c = 1;
while(c) { }
, даже не помещая ничего между {}, и посмотрите. А потом уберите volatile и снова посмотрите.

На Си можно набыдлокодить так, что мама-не-горюй, никаким ассемблерам и не снилось. Одни указатели чего только стоят... И особенно это касается расширений стандартного Си - навороченные макросы, атрибуты.
Реклама:
NewWriter вне форума  
Непрочитано 22.04.2017, 23:58   #32
H4LF
Вид на жительство
 
Аватар для H4LF
 
Регистрация: 10.06.2007
Сообщений: 429
Сказал спасибо: 34
Сказали Спасибо 51 раз(а) в 47 сообщении(ях)
H4LF на пути к лучшему
По умолчанию Re: Организация памяти.

NewWriter, Я нихрена не понял... Между какими { }?
Если между этими:
PHP код:
while(1)
{
какой-то код
}
другой кодкоторый выкидывается
то он не выкидывается ни при каких оптимизациях - именно потому что 1 - всегда true. Иначе я бы заметил - у меня главный цикл так везде сделан.
Вот после него - выкидывается (только что смотрел), что с оптимизацией что без, и правильно выкидывается.
Вы ничего не путаете?

Ассемблер по сравнению с C даёт гораздо больше возможностей наделать ошибок. В том числе и трудноуловимых. Другое дело, что пишут на нём намного меньшее количество людей, а кто ещё пишет - тот хоть с какой-то квалификацией, иначе сложнее мигания трудно что-то написать. Потому и быдлокода практически не видать. Да и просто чтобы найти какую-нибудь программу написанную на асме для ARM - придётся потрудиться.
На асме кстати те-же указатели, но суровей - например учёт типов и их соответствия - только вручную. Си хотя бы ругнётся, что, например, передаётся указатель не того типа, что должен.
H4LF вне форума  
Непрочитано 23.04.2017, 03:43   #33
AR_Favorit
Почётный гражданин KAZUS.RU
 
Регистрация: 13.03.2010
Сообщений: 2,897
Сказал спасибо: 498
Сказали Спасибо 3,061 раз(а) в 1,425 сообщении(ях)
AR_Favorit на пути к лучшему
По умолчанию Re: Организация памяти.

Сообщение от NewWriter Посмотреть сообщение
А теперь поставьте что-нибудь между { } и посмотрите. Этот код будет безжалостно выкинут, потому что while(1) всегда true.
Это вы с while (0) {...} перепутали
AR_Favorit вне форума  
Непрочитано 23.04.2017, 04:30   #34
H4LF
Вид на жительство
 
Аватар для H4LF
 
Регистрация: 10.06.2007
Сообщений: 429
Сказал спасибо: 34
Сказали Спасибо 51 раз(а) в 47 сообщении(ях)
H4LF на пути к лучшему
По умолчанию Re: Организация памяти.

AR_Favorit, и, видимо, с циклической(необязательно) проверкой не volatile переменной, которая может неожиданно для компилятора измениться - например в прерывании или в другом потоке в случае RTOS. Это как раз очень предсказуемо. Меня больше беспокоит синхронизация в условиях изменения порядка исполнения компилятором и даже процессором. Как то не очень представляю куда, как, в каких случаях и какие барьеры нужно вставлять... чтобы точно не получить какой-нибудь редкий гейзенбаг. Хорошо ещё, что нет необходимости так писать - всё только из интереса.
H4LF вне форума  
Непрочитано 23.04.2017, 06:21   #35
my504
Прописка
 
Аватар для my504
 
Регистрация: 30.07.2006
Адрес: Фрязино, М.О.
Сообщений: 116
Сказал спасибо: 0
Сказали Спасибо 23 раз(а) в 20 сообщении(ях)
my504 на пути к лучшему
По умолчанию Re: Организация памяти.

Сообщение от H4LF Посмотреть сообщение
многие современные микроконтроллеры оптимизированы для C и писать под них на ассемблере как-то не очень удобно.
Все с точностью до наоборот. Чем больше архитектура оптимизирована под С, тем проще писать на ассемблере. Патамушта на ассемблере нужно соблюдать все те же соглашения и правила, что и на Си. Только вручную. И без избыточного кода, который склонен генерировать компилятор с полным сохранением возможности отладки.
my504 вне форума  
Непрочитано 23.04.2017, 06:43   #36
AR_Favorit
Почётный гражданин KAZUS.RU
 
Регистрация: 13.03.2010
Сообщений: 2,897
Сказал спасибо: 498
Сказали Спасибо 3,061 раз(а) в 1,425 сообщении(ях)
AR_Favorit на пути к лучшему
По умолчанию Re: Организация памяти.

Сообщение от H4LF Посмотреть сообщение
Меня больше беспокоит синхронизация в условиях изменения порядка исполнения компилятором
то, что стоит до __schedule_barrier(), гарантированно будет выполнено раньше того, что стоит после него.

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

Ну и невыкидываемый оптимизатором __nop(), который помимо собственно вставки NOP делает то же, что и __schedule_barrier().

Сообщение от H4LF Посмотреть сообщение
и даже процессором
А вот тут я не знаю. По идее, процессор, умеющий менять порядок выполнения, должен сам разруливать процесс так, чтоб не было косяков...
AR_Favorit вне форума  
Непрочитано 23.04.2017, 09:16   #37
NewWriter
Заблокирован
 
Регистрация: 07.09.2014
Адрес: В Кремле!
Сообщений: 4,486
Сказал спасибо: 396
Сказали Спасибо 2,220 раз(а) в 1,319 сообщении(ях)
NewWriter на пути к лучшему
По умолчанию Re: Организация памяти.

Ничего я не перепутал... А while(0) выбрасывается и без оптимизации.
Пример с while - эт для примера того, что Си может делать то, что от него не ожидается, причем один и тот же код может работать по-разному, в отличие от ассемблера. Коль уж разговор о том, какие ошибки можно допустить на Си, которых нельзя сделать на ассемблере.
Тут не только с while проблема. Для не-volatile переменных вообще выброшены арифметические операции, если компилятор видит, что других операций с переменной нет. Может, пример с while был не слишком удачным, но я хотел показать, что ошибки на Си можно делать еще более разнообразные, чем на ассемблере.

Сообщение от H4LF Посмотреть сообщение
Другое дело, что пишут на нём намного меньшее количество людей, а кто ещё пишет - тот хоть с какой-то квалификацией, иначе сложнее мигания трудно что-то написать.
Ну я раньше на асме для пиков писал, и не только мигание светодиодами, но и с графическими дисплями. По большому счету, не шибко сложно, просто объем текста большой.
...PS.. О, все-таки нашел фотку - чистый ассемблер для пика, графика, текст, все навороты




Сообщение от H4LF Посмотреть сообщение
Да и просто чтобы найти какую-нибудь программу написанную на асме для ARM - придётся потрудиться.
Где-то попадались, чел че-то пытался писакать там. Но как понял, дальше включения таймеров и мигания свдиодами это не пошло. Да и смысл напрягаться то. Можно делать короткие ассемблерные вставки в Си.

Последний раз редактировалось NewWriter; 23.04.2017 в 11:16.
NewWriter вне форума  
Непрочитано 23.04.2017, 09:22   #38
STM32F0
Заблокирован
 
Регистрация: 22.04.2014
Сообщений: 0
Сказал спасибо: 15
Сказали Спасибо 366 раз(а) в 284 сообщении(ях)
STM32F0 на пути к лучшему
По умолчанию Re: Организация памяти.

Сообщение от my504 Посмотреть сообщение
Чем больше архитектура оптимизирована под С, тем проще писать на ассемблере.
Марк, не гони! Твоя тяга к ассемблеру, из-за упоротой привязанности к ПИК24-33, здесь совсем ни при чём. Сейчас АСМ уже как дурной тон. Нафиг-нафиг!
STM32F0 вне форума  
Непрочитано 23.04.2017, 09:28   #39
STM32F0
Заблокирован
 
Регистрация: 22.04.2014
Сообщений: 0
Сказал спасибо: 15
Сказали Спасибо 366 раз(а) в 284 сообщении(ях)
STM32F0 на пути к лучшему
По умолчанию Re: Организация памяти.

Сообщение от H4LF Посмотреть сообщение
Как то не очень представляю куда, как, в каких случаях и какие барьеры нужно вставлять... чтобы точно не получить какой-нибудь редкий гейзенбаг.
На сайте АРМа вроде же всё растолковано что для чего.
STM32F0 вне форума  
Непрочитано 23.04.2017, 10:19   #40
my504
Прописка
 
Аватар для my504
 
Регистрация: 30.07.2006
Адрес: Фрязино, М.О.
Сообщений: 116
Сказал спасибо: 0
Сказали Спасибо 23 раз(а) в 20 сообщении(ях)
my504 на пути к лучшему
По умолчанию Re: Организация памяти.

Сообщение от STM32F0 Посмотреть сообщение
Марк, не гони! Твоя тяга к ассемблеру, из-за упоротой привязанности к ПИК24-33, здесь совсем ни при чём. Сейчас АСМ уже как дурной тон. Нафиг-нафиг!
Во первых, если я ничего не напутал, это ветка про ПИКи.
Во вторых, я отвечал на конкретную ЛОЖНУЮ сентенцию об усложнении применения АСМа при Си-ориентированной системе команд и архитектуре.
Ну и в третьих, каждый сам решает для себя по поводу целесообразности применения той или иной платформы, производителя и тулчейна. Упоротость в АРМ, причем конкретно СТМ, столь же смешна, как и любая другая упоротость...
my504 вне форума  
Закрытая тема

Закладки


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
МСС18: корректировка файла линкера - выделение памяти urry Микроконтроллеры, АЦП, память и т.д 0 08.12.2009 10:32
А что если...прицепить к МК планку DDR памяти? vchik Микроконтроллеры, АЦП, память и т.д 9 03.06.2008 08:47
Как уменьшить размер памяти под стек? greafuger Микроконтроллеры, АЦП, память и т.д 1 03.04.2008 08:23


Часовой пояс GMT +4, время: 13:17.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot