相关疑难解决方法(0)

高效的整数比较功能

compare函数是一个函数,它接受两个参数a,b并返回一个描述其顺序的整数.如果a小于b,则结果为负整数.如果a大于b,则结果为正整数.否则,a并且b相等,结果为零.

此功能通常用于参数化标准库中的排序和搜索算法.

实现compare字符功能非常简单; 你只需减去参数:

int compare_char(char a, char b)
{
    return a - b;
}
Run Code Online (Sandbox Code Playgroud)

这是有效的,因为通常假设两个字符之间的差异适合整数.(请注意,此假设不适用于以下系统sizeof(char) == sizeof(int).)

这个技巧无法比较整数,因为两个整数之间的差异通常不适合整数.例如,INT_MAX - (-1) = INT_MIN建议INT_MAX小于-1(技术上,溢出导致未定义的行为,但让我们假设模运算).

那么我们如何才能有效地为整数实现比较函数呢?这是我的第一次尝试:

int compare_int(int a, int b)
{
    int temp;
    int result;
    __asm__ __volatile__ (
        "cmp %3, %2 \n\t"
        "mov $0, %1 \n\t"

        "mov $1, %0 \n\t"
        "cmovg %0, %1 …
Run Code Online (Sandbox Code Playgroud)

c x86 assembly inline-assembly

61
推荐指数
4
解决办法
3万
查看次数

标签 统计

assembly ×1

c ×1

inline-assembly ×1

x86 ×1