是否可以告诉铛其注册使用的代码的某些部分,而无需使用装配

问题描述 投票:1回答:1

我的工作需要它来在Linux和Windows上工作的项目。 但是,有没有在Linux上由于不同的下clangmsvc登记工作的部分代码。

是否有clang在操作过程中使用特定的寄存器的方式要么使寄存器使用一致的或要求?我想找到一种不组装涉及重写部分的解决方案。下面是我讲的是不同的输出码。

https://godbolt.org/z/DO9pQN

任何帮助表示赞赏。

每评论编辑: 这是一个模拟器使某些寄存器用于某些任务。其中一个主要的事情是,我们使用RSI一定变量,然后铛函数调用使用RSI。 MSVC编译不会有同样的问题。

EDIT 2%的评论: 这是为Xbox 360模拟器,森雅。 目前,我们正在努力完成的事情Linux机器上。但是,我们正在运行到使用相同的寄存器用于函数调用,因为我们用来存储一些所谓的上下文铿锵的问题。 我们的想法是只问铛不使用特定的寄存器,但我无法找到一个方法来做到这一点,而不只是在大会写它。与解决方案的另一个问题是,gcc也可能对不同的寄存器同样的问题。具体来说,我们正在寻找在PPC测试。以上的链接是从与MSVC相比铛的输出。

下面是相关的代码:

c++ visual-c++ x86 x86-64 clang++
1个回答
3
投票

rsi不能用于在Linux上你自己的目的,因为它是在函数调用约定psABI-x86_64使用

但是,如果你可以使用其它寄存器与GCC和选项r10编译-ffixed-r10代码将无法使用r10demo)。

© www.soinside.com 2019 - 2024. All rights reserved.