% 和 fmod() 使用多少 CPU 操作编程语言?

问题描述

机器语言中%操作符和fmod()函数的C翻译结果是什么?它的实现是什么?

例如:61199 % 256 的解法与 61199 % 171 的解法相同吗?

解决方法

如果平台支持整数除法,就像所有现代非嵌入式处理器一样,它是一条指令。除法指令给出商和余数。

考虑这个 C 程序 (https://godbolt.org/z/vxj8fKdjG):

int main() {
    int a = 61199;
    int b = 171;
    int c = a % b;
}

它编译为:

main:
        push    rbp
        mov     rbp,rsp
        mov     DWORD PTR [rbp-4],61199
        mov     DWORD PTR [rbp-8],171
        mov     eax,DWORD PTR [rbp-4]
        cdq
        idiv    DWORD PTR [rbp-8]
        mov     DWORD PTR [rbp-12],edx
        mov     eax,0
        pop     rbp
        ret

在这个输出中,idiv 是除法指令。