Может кто-нибудь знает по какому параметру стоит оценивать работу с невыравненными указателями при проверке их в Intel VTune?
Здравствуйте, na1s, Вы писали:
N>>Может кто-нибудь знает по какому параметру стоит оценивать работу с невыравненными указателями при проверке их в Intel VTune?
N>И вообще как-нибудь можно отследить такие проблемы автоматически, а не просматривая вручную код?
Включить генерацию исключения при обращении к невыравненныму указателю
From Jeffery Richter's "Programming Applications for Windows, 4th Ed":
Let's take a closer look at how the x86 CPU handles data alignment. The x86 CPU contains a special bit flag in its EFLAGS register called the AC (alignment check) flag. By default, this flag is set to zero when the CPU first receives power. When this flag is zero, the CPU automatically does whatever it has to in order to successfully access misaligned data values. However, if this flag is set to 1, the CPU issues an INT 17H interrupt whenever there is an attempt to access misaligned data. The x86 version of Windows 2000 and Windows 98 never alters this CPU flag bit. Therefore, you will never see a data misalignment exception occur in an application when it is running on an x86 processor.
Ну и вот
тут почитать
SetErrorMode, with the argument field SEM_NOALIGNMENTFAULTEXCEPT
Здравствуйте, migel, Вы писали:
M>Здравствуйте, na1s, Вы писали:
N>>>Может кто-нибудь знает по какому параметру стоит оценивать работу с невыравненными указателями при проверке их в Intel VTune?
N>>И вообще как-нибудь можно отследить такие проблемы автоматически, а не просматривая вручную код?
M>Включить генерацию исключения при обращении к невыравненныму указателю
M>M>From Jeffery Richter's "Programming Applications for Windows, 4th Ed":
M> Let's take a closer look at how the x86 CPU handles data alignment. The x86 CPU contains a special bit flag in its EFLAGS register called the AC (alignment check) flag. By default, this flag is set to zero when the CPU first receives power. When this flag is zero, the CPU automatically does whatever it has to in order to successfully access misaligned data values. However, if this flag is set to 1, the CPU issues an INT 17H interrupt whenever there is an attempt to access misaligned data. The x86 version of Windows 2000 and Windows 98 never alters this CPU flag bit. Therefore, you will never see a data misalignment exception occur in an application when it is running on an x86 processor.
M>Ну и вот тут почитать
M>M>SetErrorMode, with the argument field SEM_NOALIGNMENTFAULTEXCEPT
Ну это не работает для x86. А как быть для x86?