快速比较两个内存区域

时间:2013-11-09 17:47:12

标签: c++ c

如何将快速两个(可变大小)内存区域比较为二进制文件?

int compare (void *a,void *b,size_t size){
...
}


// reg1 > reg2
reg1 = 00001000000000000000000000000000000000000000 (binary);
reg2 = 00000100000000000000000000000000000000000000 (binary); 

if (compare(reg1,reg2,32) > 0){
  return true;
}else{
  return false;
};

1 个答案:

答案 0 :(得分:3)

所有比较都使用本机二进制执行,因为这是内部表示,除非您需要比较二进制数的文本表示。

有关特定于平台的答案,请检查平台处理器的汇编语言。许多现代处理器具有用于比较存储器区域的汇编语言指令。

正如其他评论者所说,memcmp是您的最佳选择,因为它应针对您的平台进行优化。

如果您必须自己编写,我建议从内存中加载一个单词并逐字比较内存,直到没有匹配为止。如果您需要更多详细信息,请逐字节比较单词以找出确切差异的位置。