如何将快速两个(可变大小)内存区域比较为二进制文件?
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;
};
答案 0 :(得分:3)
所有比较都使用本机二进制执行,因为这是内部表示,除非您需要比较二进制数的文本表示。
有关特定于平台的答案,请检查平台处理器的汇编语言。许多现代处理器具有用于比较存储器区域的汇编语言指令。
正如其他评论者所说,memcmp
是您的最佳选择,因为它应针对您的平台进行优化。
如果您必须自己编写,我建议从内存中加载一个单词并逐字比较内存,直到没有匹配为止。如果您需要更多详细信息,请逐字节比较单词以找出确切差异的位置。