Я использую LLVM для инструментария кода, где нужно извлечь каждый байт переменной. У меня есть две альтернативы:
for (int i = 0; i < 8; i++)
{
Value* cur_byte = CreateTruncOrBitCast(var, Int8Ty);
cur_byte = IRB.CreateZExt(cur_byte, Int64Ty);
/* do something */
var = IRB.CreateLShr(var, 8);
}
или
for (int i = 0; i < 8; i++)
{
Value* cur_byte = CreateAnd(var, 0xFF);
/* do something */
var = IRB.CreateLShr(var, 8);
Я хотел бы проконсультироваться, какой метод быстрее, или есть другой лучший метод?