[an error occurred while processing this directive]
|
подряд лежат. Единственное, там, afair, требуется выравниваение по четному адресу, но для лонгов это и так должно выполнятся, т.ч. никаких проблем. Во всяком случае, реально это так - скомпиляй тот кусочек и посмотри в мап файл, увидишь, что все эти переменные размещены по четным адресам, хотя могут идти и не подряд.
Т.е. если ты объявил переменную типа лонг, то она будет размещена по четному адресу. А процессор-то 32-х разрядный, и может спокойно работать с 32-х разрядными данными.
Кстати, компилятор даже, имхо, перебарщивает с выравниванием - например, он размещает массивы так, чтобы был возможен доступ к любому элементу массива прямым способом (т.е. через DP). Если есть массив, который имеет размер больше страницы, то компилятор размещает его со следующей страницы, оставляя "дырку". Зачем он так делает, мне непонятно - ведь у процессора же есть развитые средства косвенной адресации, а при работе с агрегатными типами именно она и нужна. А прямая адресация рулит только при работе одиночными переменными встроенных типов. Может это где-то рулится, но я с ходу не нашел.
E-mail: info@telesys.ru