Выполнены ли жестко запрограммированные математические операции во время компиляции или во время выполнения в Objective-C в XCode? - PullRequest
3 голосов
/ 19 февраля 2012

Если я напишу строку кода для математической операции, например:

x = 109.0f*768.0f/320.0f;

Вычисляется ли результат (261.6f) во время компиляции или выполнения?Другими словами, признает ли оптимизация XCode, что результат жестко запрограммированной математической операции всегда будет одинаковым, и, следовательно, может быть предварительно вычислен во время компиляции?

1 Ответ

4 голосов
/ 19 февраля 2012

Он вычисляется во время компиляции, по крайней мере, с использованием Xcode для iOS. Эта функция:

float test() {
    float x = 109.0f*768.0f/320.0f;
    return x;
}

соответствует этим трем инструкциям:

movw    r0, #52429
movt    r0, #17282
bx  lr

Вычисление значения во время компиляции не требуется стандартом C. Фактически, если вы установите прагму FENV_ACCESS, есть случаи, когда запрещено вычислять ее во время компиляции. Включение FENV_ACCESS не повлияло на сгенерированные инструкции в этом тестовом примере.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...