The Visual C++ compiler uses intrinsics to support the Advanced Encryption Standard (AES). With these intrinsics, AES uses a cipher key - also known as a round key - that is 128 bits. AES encryption with a 128 bit key requires 10 iterations of encryption. Each iteration is executed with a separate round key. The final iteration of encryption uses a different intrinsic because of the implementation of the AES algorithm.
All supported Windows architectures use little endian orientation. Any AES tests designed with the big endian orientation must have the parameters byte-reflected for them to work correctly
Only x86 and x64 architectures support the AES intrinsics; the IA64 architecture does not support them. With all intrinsics, you must make sure that the underlying processor supports the instruction before you use it. Use the __cpuid, __cpuidex instruction to determine what functionality your processor supports.
The Visual C++ compiler included the following intrinsics in Microsoft Visual Studio 2008 SP1: