Assembly 汇编:如何知道何时声明局部变量?

Assembly 汇编:如何知道何时声明局部变量?,assembly,Assembly,我正在看一本包含以下问题和答案的学习指南: Q. Write the corresponding C code int decode2(int x, int y, int z) 1: movl 16(%ebp), %eax 2: movl 12(%ebp), %edx 3: subl %eax, %edx 4: movl %edx, %eax 5: imull 8(%ebp), %edx 6: sall $31, %eax 7: sarl $31, %eax 8: xorl %edx, %eax

我正在看一本包含以下问题和答案的学习指南:

Q. Write the corresponding C code
int decode2(int x, int y, int z)
1: movl 16(%ebp), %eax
2: movl 12(%ebp), %edx
3: subl %eax, %edx
4: movl %edx, %eax
5: imull 8(%ebp), %edx
6: sall $31, %eax
7: sarl $31, %eax
8: xorl %edx, %eax

Answer:
int decode2(int x, int y, int z) {
int t1 = y - z;
int t2 = x * t1;
int t3 = (t1 << 31) >> 31;
int t4 = t3 ˆ t2;
return t4;
}
Q.编写相应的C代码
整数解码2(整数x,整数y,整数z)
1:movl 16(%ebp),%eax
2:movl 12(%ebp),%edx
3:subl%eax,%edx
4:movl%edx,%eax
5:imull 8(%ebp),%edx
6:sall$31,%eax
7:31南非兰特,每股
8:xorl%edx,%eax
答复:
整数解码2(整数x,整数y,整数z){
int t1=y-z;
int t2=x*t1;
int t3=(t1>31;
int t4=t3ˆt2;
返回t4;
}
我从来没有猜到通过查看汇编代码创建了4个局部变量。有什么明显的方法可以告诉我我没有注意到吗? 一个相关的问题:您如何知道返回的是哪个变量?在本例中是t4


编辑:找到我第二个问题的答案-%eax用于返回值。

也从我身边飞过。我想你问题的答案是:“不,没有明显的方法”当然这是错误的;
intt3=t1>31;intt5=t4^t2;
显然是正确的答案……哦,当注意到变量或寄存器依赖链的生命周期(仅计算寄存器)时,可以看出只有两个局部变量,
a
d