@kyklaed

Как происходит адресация в памяти?

Привет, вопрос наверняка элементарный, например адрес в памяти 0х40 как понять что это за адрес ?
и выражение с адресом
x =0 , y = 0
0х40 * y + x = 0 \
но например если
x =8 , y = 0
0х40 * y + x = ??

как правильно это считать ?
  • Вопрос задан
  • 418 просмотров
Решения вопроса 1
leahch
@leahch
3D специалист. Dолго, Dорого, Dерьмово.
1) это нулевые адреса. Нужно смотреть, что у вас в документации по этим адресам. Возможно, таблица прерываний
2) ваша формула смещает адреса по 64 байта, начиная с нулевого. Шестьнадцатеричное 0x40 = 64 десятичному!
3) в зависимости от контроллера, может быть адресация прямая, а может быть и через трансляцию через блок MMU, тогда нужно смотреть, в какой момент и с какими настройками трансляции адресов работает MMU
4) всегда нужно помнить о типе разрядности обращения. В классическом случае обращение *unsigned char и *unsigned int или *unsigned short могут иметь совершенно разные эффекты. Смотреть документацию, обычно пишут тип регистра и его разрядность!
5) некоторые контроллеры имеют как полноценные битовые регистры, так и битовые поля, отмапированные, для удобства программиста на адреса. Например 32-х разрядный регистр может иметь в памяти 32 8-битных регистра мапированные на биты основного регистра.

В общем, в любом случае курить документацию.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@Xilian
Программист 1С, сетевые технологии, SQL
>>как понять что это за адрес
>>как правильно это считать ?

Адрес он просто адрес, просто целое число означающее смещение от начала области адресации. 0х - значит в восьмеричной системе счисления, в твоем случае это указатель на 4 байт от начала. Его не надо считать, его надо знать.

В зависимости от микроконтроллера может быть или адресом в оперативной памяти, регистровым файлом, просто регистром или вообще портом внешнего устройства.

Надо курить документацию на конкретную модель микроконтроллера.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы