Как работали 16-битные компиляторы C?

Модель памяти C с ее использованием арифметики указателей и прочего, похоже, моделирует плоское адресное пространство. 16-битные компьютеры использовали сегментированный доступ к памяти. Как 16-битные компиляторы C справились с этой проблемой и смоделировали плоское адресное пространство с точки зрения программиста на C? Например, в какие примерно инструкции на языке ассемблера компилируется следующий код на 8086?

long arr[65536];  // Assume 32 bit longs.
long i;
for(i = 0; i < 65536; i++) {
    arr[i] = i;
}
14
задан dsimcha 30 September 2010 в 03:42
поделиться