【发布时间】:2021-11-13 21:06:12
【问题描述】:
我在这本教科书上,Randal E. Bryant, David R. O'Hallaron - Computer Systems。程序员的视角 [第 3 版](2016 年,Pearson)
我一直在搞不清楚作者是如何计算出switch table的case number的,如下图~
我不确定的是他们如何获得类似 Case A 的案例编号是 Case 5: 以及 Case 2/7 是如何获得 Case C 和 Case D ,等等对于本示例中的其余案例
感谢您的帮助!
【问题讨论】:
-
在跳转表中,cases从0开始,所以case 0跳转到
.L3。案例 2 和 7 跳转到.L5。案例 4 跳转到.L6。案例 5 跳转到.L7。案例 1、3、6 和任何大于 7 或小于 0 的数字,跳转到default标签,即.L2。 -
您发布的第三张图片包含对他们如何计算案件编号的解释。所以我不确定我是否理解你的问题。您对解释有什么不清楚的地方?
-
这可能是 CS:APP 3e 全球版吗?如果是这样,那将解释实践问题中的错误,例如丹尼尔回答中提到的混合调用约定。有关详细信息,请参阅CS:APP example uses idivq with two operands?。如果没有,那么它有望列在非全球版本的勘误表中。 csapp.cs.cmu.edu/3e/errata.html。哦,是的,那里列出了那个问题,所以可能你有一个很好的版本,这是那个版本中少数勘误表之一。
-
请勿发布代码、数据、错误消息等的图片 - 将文本复制或输入到问题中。 How to Ask
标签: c assembly x86 switch-statement jump-table