Как определить, совпадает ли адрес со словом - PullRequest
4 голосов
/ 13 октября 2010

Можете ли вы, посмотрев на них, узнать, какой из этих адресов выровнен по слову ?

0x000AE430
0X00014432
0X000B0737
0X0E0D8844

1 Ответ

14 голосов
/ 13 октября 2010

Краткий ответ - да. Но вы должны определить количество байтов на слово. Некоторые архитектуры называют два байта словом, а четыре байта двойным словом. В любом случае вы просто мысленно вычисляете addr%word_size или addr&(word_size - 1) и смотрите, равно ли оно нулю. Когда адрес шестнадцатеричный, он тривиален: просто посмотрите на крайнюю правую цифру и посмотрите, делится ли она на размер слова.

Для размера слова 4 байта второй и третий адреса ваших примеров не выровнены. Второй имеет 2, а третий - 7, ни один из которых не делится на 4. Для слова размером 2 байта только третий адрес не выровнен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...