Прочел 10 статей, и еще пачку не успел.(Хотя тему знал). Везде написано. Одно и то же. Но нигде не нашел.
А почему именно??? Типа потому что так быстрее, А вот
почему быстрее
Почему short только по четным, типа что для нечетной позиции нету подходящего битового сдвига или что там?(Или это для случая что short может оказаться между границей 2 слов?)
Потом пишут, что процессор извлекает данные только по границам Word, допустим по int32, то есть может обращаться только к 0, 4, 8, 12, 16 .... данным по адресам? А там внутри, доступ к байту, через всякие сдвиги только получать. Так?
Для примера НЕ выровненной структуры. Опишите что тут будет происходить
// 0 1 ...
// 'c' 0x01 0x02 0x03 0x04 0x88 0x77 'a'
// char int short char
struct pragmaA{
char a;
int b;
short c;
char d;
}
Для процессора x86 с word 32bit. Как будут выполняться fetch?
Хочу ответ в таком формате. ( на итерации на шину извлекается 4 байта)
регистр IP = 0
Прочитать char
1.IP=0; [fetch->char] bus 'c' 0x01 0x02 0x03 // извлекается 4 байта каждый раз
1.1. берем только 'c' // сдвиги битов там всякие
Далее уже только догадки.
Прочитать int
2. IP=??? IP будет 0, 1 или 4? bus=???? какие 4 байта прочтутся.
К примеру почему не может прочесть 0x01 0x02 0x03 0x04 ???
(Моя догадка, он сначала прочтет 3 байта с Адресе 0-4, а потом прочтет следующие 4 байта, и оттуда только 1 возьмет).
3??