机器语言中%运算符和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
在该输出中,CCD_ 3是除法指令。