diff options
author | Aki <please@ignore.pl> | 2022-02-09 22:23:03 +0100 |
---|---|---|
committer | Aki <please@ignore.pl> | 2022-02-09 22:53:55 +0100 |
commit | 373dc625f82b47096893add42c4472e4a57ab7eb (patch) | |
tree | 640228d02476d379de13071b13d1b1fa322b767f /contrib/Opcode/Ice/IceUtils.cpp | |
parent | 2d7dd844219965b81e81848e60d7f7bf23035ee4 (diff) | |
download | starshatter-373dc625f82b47096893add42c4472e4a57ab7eb.zip starshatter-373dc625f82b47096893add42c4472e4a57ab7eb.tar.gz starshatter-373dc625f82b47096893add42c4472e4a57ab7eb.tar.bz2 |
Moved third-party libraries to a separate subdirectory
Diffstat (limited to 'contrib/Opcode/Ice/IceUtils.cpp')
-rw-r--r-- | contrib/Opcode/Ice/IceUtils.cpp | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/contrib/Opcode/Ice/IceUtils.cpp b/contrib/Opcode/Ice/IceUtils.cpp new file mode 100644 index 0000000..890209c --- /dev/null +++ b/contrib/Opcode/Ice/IceUtils.cpp @@ -0,0 +1,39 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +/** + * Contains misc. useful macros & defines. + * \file IceUtils.cpp + * \author Pierre Terdiman (collected from various sources) + * \date April, 4, 2000 + */ +/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +// Precompiled Header +#include "StdAfx.h" + +using namespace IceCore; + +/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +/** + * Returns the alignment of the input address. + * \fn Alignment() + * \param address [in] address to check + * \return the best alignment (e.g. 1 for odd addresses, etc) + */ +/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +udword IceCore::Alignment(udword address) +{ + // Returns 0 for null addresses + if(!address) return 0; + + // Test all bits + udword Align = 1; + for(udword i=1;i<32;i++) + { + // Returns as soon as the alignment is broken + if(address&Align) return Align; + Align<<=1; + } + // Here all bits are null, except the highest one (else the address would be null) + return Align; +} |