kouzdra (kouzdra) wrote,
kouzdra
kouzdra

Category:

Из серии очевидных не для всех очевидностей

Тут мне в комментах напоминают что в ранних фортранах нельзя было просто писать обращение к элементу массива более сложное, чем A(2*I+3)

Решение на сам деле для автокода (к каковому классу ранние фортраны и принадлежали) вполне разумное и встречается не только там:

Потому как A(I) реализуется как Addr(A) + I*sizeof(элемента А)
Понятно что A(2*I+3) переходит соответственно в (Addr(A) + 3*sizeof(элемента А)) + I*(2 * sizeof(элемента А))

(напомню что в классическом фортране нет рекурсии и все массивы статически размещены в памяти и имеют константный адрес - так что и Addr(A) и Addr(A) + 3*sizeof(элемента А) - просто константы)

То есть с точки зрения реализации обе конструкции идентичны по сложности* - одно умножение на константу и одно сложение с константой.

Что-то более сложное уже требует реального вычисления индексного выражения

Тож самое кстати и с iSUB-ами - они в варианте линейных функций над ними еще реализуются просто соответствующей модификацией дескриптора массива (все равно необходимого для реализаций конструкций типа М(I,*)). Чтото более сложное уже хуже.

Специально для rdia: на деле iSUB-ы не заменяются в С/C++ макросами или инлайн-функциями. Точнее все хорошо ровно до тех пор, пока на массив не создается ссылка или он не передается параметром. Там макросы и inline-функции обламываются. В отличие от.
*) Исключением является передача массива параметром - но и там усложнение умеренное - в случае когда к индексу прибавляется ненулевая константа - два сложения вместо одного.
Tags: Языки программирования
Subscribe

  • Нафиг - нафиг...

    Мое отношение к "медицине" определяется тем, что она силком вытягивает из меня уже лет 35 довольно приличные деньги на свои "услуги". При этом на…

  • My comment to an entry 'Снова все о том же: вакцинация от Ковида' by mary_spiri

    Я полагаю все эти меры никак не оправдываемыми их результатом. Я сам не очень молодой — 55 — и подогаю риск смерти от вируса незначимым по сравнению…

  • Это жжж неспроста

    Йебанутые собачники - это все-таки диагноз: Водокачкин был заметен ебанутым собачничеством и любовью к "ножичкам". Тут вдруг разразился тоже…

  • Post a new comment

    Error

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 39 comments

  • Нафиг - нафиг...

    Мое отношение к "медицине" определяется тем, что она силком вытягивает из меня уже лет 35 довольно приличные деньги на свои "услуги". При этом на…

  • My comment to an entry 'Снова все о том же: вакцинация от Ковида' by mary_spiri

    Я полагаю все эти меры никак не оправдываемыми их результатом. Я сам не очень молодой — 55 — и подогаю риск смерти от вируса незначимым по сравнению…

  • Это жжж неспроста

    Йебанутые собачники - это все-таки диагноз: Водокачкин был заметен ебанутым собачничеством и любовью к "ножичкам". Тут вдруг разразился тоже…