cmp指令是什么意思

cmp指令是什么意思,第1张

CMP指令是由美国斯坦福大学提出的,英文名称是Chip multiprocessors,翻译成中文就是单芯片多处理器,也指多核心其思想是将大规模并行处理器中的SMP(对称多处理器)集成到同一芯片内,各个处理器并行执行不同的进程。与CMP比较, SMT处理器结构的灵活性比较突出。 扩展资料

该指令与SUB指令一样执行减法的 *** 作,但它并不保存运算结果,只是根据结果设置相关的'条件标志位(SF、ZF、CF、OF)。CMP指令后往往跟着条件转移指令,实现根据比较的结果产生不同的程序分支的功能。

但是,当半导体工艺进入0.18微米以后,线延时已经超过了门延迟,要求微处理器的设计通过划分许多规模更小、局部性更好的基本单元结构来进行。相比之下,由于CMP结构已经被划分成多个处理器核来设计,每个核都比较简单,有利于优化设计,因此更有发展前途。IBM 的Power 4芯片和Sun的 MAJC5200芯片都采用了CMP结构。多核处理器可以在处理器内部共享缓存,提高缓存利用率,同时简化多处理器系统设计的复杂度。

在微型计算机的汇编语言中,CMP(compare)是其中一条指令,叫做比较指令。cmp的功能相当于减法指令,只是对 *** 作数之间运算比较,不保存结果。cmp指令执行后,将对标志寄存器产生影响。其他相关指令通过识别这些被影响的标志寄存器位来得知比较结果。

cmp是比较指令,cmp的功能相当于减法指令(sub)。它不保存结果,只是影响相应的标志位。其他的指令通过识别这些被影响的标志位来得知比较结果。

cmp指令格式:   cmp   *** 作对象1, *** 作对象2

注意是计算 *** 作对象2 - *** 作对象1,和sub的一样,而不是 *** 作数1- *** 作数2(ATT格式), 但不保存结果,只是根据结果修改相应的标志位。示例代码:

#include <stdio.h>

int main()

{

int eax = 100

int ebx = 200

int output = -100

asm volatile(

"movl %1,%%eax\n\t"

"movl %2,%%ebx\n\t"

"cmpl %%eax,%%ebx\n\t" //用的是cmpl比较指令

"sets %%al\n\t" //负数时设置

"movzbl %%al,%%eax\n\t"

"movl %%eax,%0\n\t"

: "=m"(output)

: "r"(eax), "r"(ebx)

: "eax")

printf("%d \n", output)

return 0

}

最终的输出是1

扩展资料

cmp(compare)指令进行比较两个 *** 作数的大小

例:cmpoprd1,oprd2

为第一个 *** 作减去第二个 *** 作数,

但不影响第两个 *** 作数的值

它影响flag的CF,ZF,OF,AF,PF

若执行指令后

ZF=1 这个简单,则说明两个数相等,因为zero为1说明结果为0

当无符号时:

CF=1 则说明了有进位或借位,cmp是进行的减 *** 作,故可以看出为借位,所以,此时oprd1<oprd2

CF=0 则说明了无借位,但此时要注意ZF是否为0,若为0,则说明结果不为0,故此时oprd1>oprd2

参考资料:百度百科 CMP指令


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11468616.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-16
下一篇 2023-05-16

发表评论

登录后才能评论

评论列表(0条)

保存