Может ли линейный блок (__asm )препятствовать оптимизации функций?

При использовании Microsoft Visual C++ (не CLI, а только стандартного родного C++ )приводит ли встроенный ассемблер к отключению оптимизации для функции?

Когда я проверил с помощью IDA, код некоторых функций за пределами блока, кажется, изменился, но я не уверен, в чем причина. Функция (относительно )проста, содержит манипуляции с битами и некоторые математические операции, но не содержит внешних вызовов.

Другими возможными причинами, о которых я мог подумать, являются::

  • Дополнительная подготовка для включения отладки во встроенном ассемблере.
  • Изменения в обработке исключений (На самом деле это не похоже на это, хотя)
  • Частичное встраивание чего-то еще из-за какой-то неизвестной логики компилятора.

Есть идеи?

5
задан Bo Persson 30 April 2012 в 18:02
поделиться