我试图理解QEMU的块链接。 我对每个执行的TB的分支方向有疑问。 假设TB#1现在已经执行,并找到next_tb(TB#2)。 然后我们知道方向是TB#1 ---> TB#2并将链存储在代码缓存中以加速 下次执行。 所以,下次qemu找到下一个TB(TB#1),然后TB#1 ---> TB#2将在代码缓存中执行。
但我认为结核病有两个分支方向。(分支采取/未采取) 我的问题是qemu如何确保方向是TB#1 ---> TB#2下次?
谢谢大家。
答案 0 :(得分:0)
TB有两个绑定链接(尽管有一个可能未使用) 无条件的分支)。当我们将TB结合在一起时,我们只会 链接我们采取的链接。因此,如果我们采取"分支采取"出口 从TB1发现它进入TB2,然后我们链接TB1' s 分支代码路径直接到TB2。但这并没有影响 分支未采用的代码路径。后来如果我们做分支 - 不采取 退出TB1,我们可以将它链接到不同的TB。
(事实上,出站链接只是编号为0和1,并且 没有要求将它们用于拍摄和未拍摄 以任何特定的顺序。)