Модель памяти C, с использованием арифметики указателя и всего, кажется, моделирует плоское адресное пространство. 16-разрядные компьютеры используют сегментированный доступ к памяти. Как 16-разрядные компиляторы C справились с этой проблемой и имитировали плоское адресное пространство с точки зрения программиста C? Например, грубо говоря, какие инструкции на языке ассемблера будут компилировать следующий код на 8086?
long arr[65536]; // Assume 32 bit longs.
long i;
for(i = 0; i < 65536; i++) {
arr[i] = i;
}