你好。我想创建一个程序,从而节省了寄存器集 - 进程上下文。当我尝试读取CS寄存器,我的编译器和IDE告诉我,那注册“CS”不存在。
register int *cs asm ("cs");
我这样做对吗?保存过程中是指节约每寄存器 - 尤其是代码段(和其它段一样) - 这些寄存器都需要恢复过程图像,并且开始执行,其中最后一次执行停止。
保存过程中是指节约每寄存器
当然,你可以保存cs
和eip
。然而...
我想创建一个程序,从而节省了寄存器集 - 进程上下文。
register int *cs asm ("cs");
现在,它变得非常可怕的:
如果你真的想编写一些代码,节省了CPU上下文(例如,用于手动实现在“低级别” C一try
-catch
机制),你应该写在汇编程序的完整功能。
不要尝试写中的C函数这个内联汇编!
否则,你不知道“编译”的C代码如何与汇编代码交互;这是极有可能的是你的程序将无法正常工作。