gpt4 book ai didi

c - C程序中if语句的时钟周期数?

转载 作者:行者123 更新时间:2023-11-30 20:47:24 24 4
gpt4 key购买 nike

抱歉,我没有具体说明问题。我正在尝试使用系统的固有位并行性。一小部分代码如下-

int d;
char ch1;
char ch2;

cin>>ch1>>ch2;
if((d&1) == 0) {
//heavy computation
}
if(ch1 == ch2){
//heavy computation
}

如果设置了 d 的 lsb,则执行第一个 if 条件。执行两个“if”条件需要多少个时钟周期?包括将变量值转换为二进制形式所需的时钟周期。

最佳答案

在 i386 架构上,使用 gcc,为居住条件生成的汇编代码将是,对于条件 1:

subl    $16, %esp
movb $97, -2(%ebp)
movb $98, -1(%ebp)
movl -12(%ebp), %eax
andl $1, %eax
testl %eax, %eax
jne .L2

对于条件 2:

movzbl  -2(%ebp), %eax
cmpb -1(%ebp), %al
jne .L4

因此,为了简单起见,我们认为 i386 是具有 RISC 内核的 MIPS,它遵循下表: enter image description here上述语句的时钟周期数为 18。

实际上,当您使用“gcc -S file.c”进行编译时,不会生成两个条件的程序集,因为编译器可能会优化空条件(无效条件或死代码),因此请尝试包含条件中的一些有用的语句并编译代码,您将得到上述说明。

关于c - C程序中if语句的时钟周期数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21831607/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com