требования выравнивания для атомарных x86 инструкций

    MethodInfo method = delegateType.GetMethod("Invoke");
    Console.WriteLine(method.ReturnType.Name + " (ret)");
    foreach (ParameterInfo param in method.GetParameters()) { 
        Console.WriteLine("{0} {1}", param.ParameterType.Name, param.Name);
    }
36
задан Yuhong Bao 5 August 2017 в 00:14
поделиться

2 ответа

См. этот вопрос SO : естественное выравнивание важно для производительности и требуется в архитектуре x64 (так что это не только системы PRE-x86, но и системы POST-x86. тоже - x64 все еще может быть немного нишевым случаем, но в конце концов его популярность растет ;-); может быть, поэтому Microsoft документирует это как требуется (трудно найти документы о том, решила ли MS ПРИНУДИТЬ проблему выравнивания, включив проверку выравнивания - это может варьироваться в зависимости от версии Windows; заявив в документах, что выравнивание требуется, MS сохраняет свобода принудительного применения этого параметра в одной версии Windows, даже если они не применяли его принудительно в других).

5
ответ дан 27 November 2019 в 06:16
поделиться

API-интерфейсы Microsoft Interlocked также применимы к ia64 (пока она еще существовала). На ia64 не было префикса блокировки, только инструкции cmpxchg.acq и cmpxchg.rel (или fetchadd и другие подобные чудовища), и все они требовали выравнивания, если я правильно помню.

3
ответ дан 27 November 2019 в 06:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: