-
- Я хочу задать число, которое будет однозначно интерпретироваться
как 32-разрядная константа в любом контексте (и, скажем, в ПЗУ
будет занимать 4 байта). Если я правильно понял высказанное в
ветке, то объявление teap0t(125 знак., 18.09.2020 10:58)
- Попробуем разобрать высказанные заблуждения. SciFi(1069 знак., 18.09.2020 11:11, ссылка)
- Как я понял, вопрошавший собирался просто использовать константу в
выражениях. Она не будет напрямую присваиваться переменной и,
поэтому, будет храниться именно так, как указано в определении. - Nikolay_Po(18.09.2020 11:12)
- Вы все с ума посходили что ли? Константа нигде не хранится. Это
просто буковки и циферки в исходнике. Хранятся переменные. - SciFi(18.09.2020 11:14)
- Могу только напомнить, что я перехожу с ассемблера на Си, и для
меня числа с трудом отделяются от занимаемого ими места в памяти.
Плюс, речь всё же идёт о встраиваемых системах (да простит меня
fk0), где железо довольно близко. Я не могу к каждой вашей реплике
добавлять тег #ФилософияПрограммирования. Я предлагаю всё же ближе
к теме. Правильный подход виден в ответах VLLV, который просто
показывает ошибку в рассуждении и приводит примеры выявляющие
возможные пути развития teap0t(5 знак., 18.09.2020 11:26)
- А в ассемблере .EQU CCC = 1 сколько места занимало?? - Andreas(18.09.2020 11:29)
- Выдавливайте из себя ассемблер по капле. Постоянная привязка к месту в памяти -- это ментальный тормоз, он мешает мыслить о более интересных абстракциях. - SciFi(18.09.2020 11:29)
- Ну ОК. Речь о ПЗУ. Что если одной переменной присваивается значение другой плюс эта константа? Компилятор по-любому положит эту константу в память, пусть даже как операнд инструкции. Константы могут быть удалены лишь при вычислениях во время компиляции. - Nikolay_Po(18.09.2020 11:22)
- Прошу пардону, а чо мы называем словом хранится? Я например храню
константы (которые первоначально были буковками и циферками в
исходнике) в теле программы, и если меня сильно припрет могу
переписать это тело вместе с этими константами средствами
процессора. Причем получить это новое тело хоть даже через уарт или
кнопочки. - Codavr(18.09.2020 11:21)
- Поэтому надо выражаться недвусмысленно, чтобы тёрки были за смысл,
а не за значение используемых слов. Очевидно же. - SciFi(18.09.2020 11:22)
- Отож. А то развели тут панимаешь. - Codavr(18.09.2020 11:24)
- Поэтому надо выражаться недвусмысленно, чтобы тёрки были за смысл,
а не за значение используемых слов. Очевидно же. - SciFi(18.09.2020 11:22)
- Эт да, но иногда неплохо помочь компилятору намеком. Оба варианта
VLLV дадут варнинг и инфу для размышления программеру. Andreas(312 знак., 18.09.2020 11:21)
- Суффикс L там лишний при любом раскладе (в предположении, что
sizeof(int) == 4). - SciFi(18.09.2020 11:24)
- Нифига не лишний. При переносе на 8-ми-битынй чип, можно с
удивлением обнаружить, что sizeof(int) == 2. - Nikolay_Po(18.09.2020 11:39)
- Хочу увидеть 8-битный чип, на который перенесли регистры от STM32
вместе с хедерами. - SciFi(18.09.2020 11:42)
- Когда одновременно идут проекты на 8 и 32 битниках единообразие
помогает меньше ошибаться и приятней для глаз. ИМХО. - Andreas(18.09.2020 11:47)
- единообразие придумано в stdint.h - VLLV(18.09.2020 12:38)
- Это одна из побудительных причин. STM заявляет, что периферия STM8 и младших моделей STM32 одинаковая. - teap0t(18.09.2020 11:47)
- Когда одновременно идут проекты на 8 и 32 битниках единообразие
помогает меньше ошибаться и приятней для глаз. ИМХО. - Andreas(18.09.2020 11:47)
- Хочу увидеть 8-битный чип, на который перенесли регистры от STM32
вместе с хедерами. - SciFi(18.09.2020 11:42)
- Нифига не лишний. При переносе на 8-ми-битынй чип, можно с
удивлением обнаружить, что sizeof(int) == 2. - Nikolay_Po(18.09.2020 11:39)
- Суффикс L там лишний при любом раскладе (в предположении, что
sizeof(int) == 4). - SciFi(18.09.2020 11:24)
- Могу только напомнить, что я перехожу с ассемблера на Си, и для
меня числа с трудом отделяются от занимаемого ими места в памяти.
Плюс, речь всё же идёт о встраиваемых системах (да простит меня
fk0), где железо довольно близко. Я не могу к каждой вашей реплике
добавлять тег #ФилософияПрограммирования. Я предлагаю всё же ближе
к теме. Правильный подход виден в ответах VLLV, который просто
показывает ошибку в рассуждении и приводит примеры выявляющие
возможные пути развития teap0t(5 знак., 18.09.2020 11:26)
- Вы все с ума посходили что ли? Константа нигде не хранится. Это
просто буковки и циферки в исходнике. Хранятся переменные. - SciFi(18.09.2020 11:14)
- Как я понял, вопрошавший собирался просто использовать константу в
выражениях. Она не будет напрямую присваиваться переменной и,
поэтому, будет храниться именно так, как указано в определении. - Nikolay_Po(18.09.2020 11:12)
- Да. И нет смысла писать именно 0x00000001. Достаточно (uint32_t)1. И скобки можно не ставить, нет более приоритетных операций, хотя и не навредит. - Nikolay_Po(18.09.2020 11:09)
- uint16_t x = FLASH_SR_BSY; или uint64_t y = FLASH_SR_BSY : где тут 32 разряда? - VLLV(18.09.2020 11:07)
- Попробуем разобрать высказанные заблуждения. SciFi(1069 знак., 18.09.2020 11:11, ссылка)
- Я хочу задать число, которое будет однозначно интерпретироваться
как 32-разрядная константа в любом контексте (и, скажем, в ПЗУ
будет занимать 4 байта). Если я правильно понял высказанное в
ветке, то объявление teap0t(125 знак., 18.09.2020 10:58)