我正在努力理解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?
谢谢大家。
TB有两个外接链路(尽管其中一个可能未用于无条件分支)。当我们把结核病联系在一起时,我们把我们所取得的联系联系起来。因此,如果我们进行"分支"退出从TB1,发现它进入TB2,然后我们链接TB1分支采用直接到TB2的代码路径。但这并不影响分支未采用代码路径。稍后如果我们做一个分支没有采取从TB1退出,我们可能能够将其链接到不同的TB。
(实际上,出站链接的编号仅为0和1,并且没有要求使用它们进行拍照和不拍照以任何特定顺序。)