3.6.8 switch语句

目录

P161

解释一下图3-23和.rodata文件:这两个文件都是由编译器产生的,在遇到switch语句的时候,编译器先产生.rodata文件,于是就可以知道可以用.L4去标识这个文件;然后.L4(,%rsi,8)的意思就是地址.L4+0+8*%rsi.quad是一个声明,表示这里是8字节的值;.L7重复两次就是Case 104Case 106的情况;另外索引不会是负的,如果有Case的值是负的,那么进行偏置
另外还补充一个情景
image
可以看到这里在汇编语言中,Case 3还要令w1,而且Case 2直接跳转到了merge,这是为了防止直接进入Case 3的情况
补充一些学生的提问

  • 如果最小的Case和最大的Case的差很大,但是总的Case的个数很小,难道要建立一个很大的表吗?
    • 这时候编译器会将switch变成if-else语句
posted @ 2025-07-15 17:01  最爱丁珰  阅读(12)  评论(0)    收藏  举报