CSAPP 中"程序机器级表示"一章有一段例程:
long lt_cnt = 0;
long ge_cnt =0;
long adsdiff_se(long x,long y)
{
long result;
if(x<y){
lt_cnt++;
result = y-x;
}
else {
ge_cnt++;
result = x-y;
}
return result;
}
其中 lt_cnt++被汇编为:
addq $1,lt_cnt(%rip)
印象中%rip 寄存器在 32 位下是指令指针寄存器,这里的这种用法有没有特别的含义?
还有这里的加 1 操作可以直接用 inc 指令吗?
long lt_cnt = 0;
long ge_cnt =0;
long adsdiff_se(long x,long y)
{
long result;
if(x<y){
lt_cnt++;
result = y-x;
}
else {
ge_cnt++;
result = x-y;
}
return result;
}
其中 lt_cnt++被汇编为:
addq $1,lt_cnt(%rip)
印象中%rip 寄存器在 32 位下是指令指针寄存器,这里的这种用法有没有特别的含义?
还有这里的加 1 操作可以直接用 inc 指令吗?
