CoroutineDemo icon indicating copy to clipboard operation
CoroutineDemo copied to clipboard

svc 模式

Open darbee opened this issue 5 years ago • 7 comments

ARM 芯片有五种模式,在不同模式有不同的作用。只有开启了 SVC 模式,不在此模式访问了那些寄存器,会出现硬件错误

这句话我不听明白,汇编的协程上下文切换的代码中,哪些寄存器的访问需要SVC 模式,不都是有些浮点寄存器和通用寄存器吗?

darbee avatar Mar 20 '19 12:03 darbee

ARM 芯片有五种模式,在不同模式有不同的作用。只有开启了 SVC 模式,不在此模式访问了那些寄存器,会出现硬件错误

这句话我不听明白,汇编的协程上下文切换的代码中,哪些寄存器的访问需要SVC 模式,不都是有些浮点寄存器和通用寄存器吗?

这方面可能我理解有错误,可以查看一下阿里巴巴开源的 coobjc,里面不需要开启特权模式就已经实现上下文切换和保存。

suancaiAmour avatar Mar 20 '19 15:03 suancaiAmour

好的,我看了下,没有涉及 svc模式 谢谢哈

darbee avatar Mar 21 '19 08:03 darbee

好的,我看了下,没有涉及 svc模式 谢谢哈

那个汇编是我反汇编 setjmp 和 longjmp 得来的,setjmp 汇编代码是开启 SVC 模式的,但我自己也曾尝试过不开启 SVC,实际上是出现错误了。

suancaiAmour avatar Mar 21 '19 08:03 suancaiAmour

@suancaiAmour 这比较奇怪,我没有进入SVC,并没有出错,我和阿里实现的 arm 64的协程是一样的几乎, 难道是使用场景并没有覆盖你跑的case? 跑helloworld 你也会失败吗?

darbee avatar Mar 21 '19 08:03 darbee

@suancaiAmour 这比较奇怪,我没有进入SVC,并没有出错,我和阿里实现的 arm 64的协程是一样的几乎, 难道是使用场景并没有覆盖你跑的case? 跑helloworld 你也会失败吗?

是的,我到时候研究下,这方面我当时理解可能有点错误。你代码能发送给我吗?可以的话发送到 [email protected],谢谢。

suancaiAmour avatar Mar 21 '19 08:03 suancaiAmour

@suancaiAmour 这比较奇怪,我没有进入SVC,并没有出错,我和阿里实现的 arm 64的协程是一样的几乎, 难道是使用场景并没有覆盖你跑的case? 跑helloworld 你也会失败吗?

是的,我到时候研究下,这方面我当时理解可能有点错误。你代码能发送给我吗?可以的话发送到 [email protected],谢谢。

不好意思,我们现在代码还没有开源,我发给你违反公司规定了,等后续开源,我会第一时间通知你,到时候多多交流一下。

darbee avatar Mar 21 '19 08:03 darbee

@suancaiAmour 这比较奇怪,我没有进入SVC,并没有出错,我和阿里实现的 arm 64的协程是一样的几乎, 难道是使用场景并没有覆盖你跑的case? 跑helloworld 你也会失败吗?

是的,我到时候研究下,这方面我当时理解可能有点错误。你代码能发送给我吗?可以的话发送到 [email protected],谢谢。

不好意思,我们现在代码还没有开源,我发给你违反公司规定了,等后续开源,我会第一时间通知你,到时候多多交流一下。

好的 谢谢

suancaiAmour avatar Mar 21 '19 08:03 suancaiAmour