比如求解c=a+b
c语言实现
int a = 10;
int b = 20;
int c = a + b;
此c语言转成汇编语言
MOV R0, a ; 将a的值加载到寄存器R0
MOV R1, b ; 将b的值加载到寄存器R1
ADD R0, R1 ; 计算a + b
MOV c, R0 ; 将结果存储到c
而汇编语言实现a+b
MOV R0, a ; 将a的值加载到累加器R0
ADD R0, b ; 计算a + b
MOV c, R0 ; 将结果存储到c
可以看到c语言多了一行MOV R1,b.这是因为编译没有这么智能,在生成汇编代码时只能按照固定规则,很多时候不能优化掉冗余部分。