ATT语法。
我正在努力理解我们在课堂上谈到的练习题。
我们为switch语句提供了以下部分汇编代码:
movl 8(%ebp), %eax
addl $2, %eax
cmpl $6, %eax
ja .L2
jmp *.L8(,%eax,4)
//rest of switch statement would go here
.L8
.long .L3
.long .L2
.long .L4
.long .L5
.long .L6
.long .L6
.long .L7
我知道第二部分是跳转表。我无法弄清楚的是如何计算原始C级开关的情况值。我怎么能这样做?
答案 0 :(得分:1)
分析代码。
函数的参数+ 2用作表的索引。因此,常量从-2开始,然后继续-1,0等等。
最大常数为4,参见检查参数+ 2> 6,或等效地,对于参数> 4.表格中的元素数量也反映了这一点。