저는 LLVM으로 컴파일 될 작은 C++ 같은 언어로 작업하고 있습니다. 내가 구현하고자하는 일 중 하나는 협력적인 멀티 태스킹이다. 스택 포인터와 프로그램 카운터를 내 프로그램의 다음 "스레드"로 바꿀 수있는 "yield"연산자가있을 것입니다.스택 포인터를 LLVM에 설정할 수 있습니까?
llvm에서이 작업을 수행 할 수 있습니까? 스택 포인터 레지스터를 설정할 수 있습니까? 그렇지 않다면 내가 할 수있는 비슷한 것이 있습니까?
편집 : LLVM coroutines (http://llvm.org/docs/Coroutines.html)는 유망한 것으로 생각되지만, https://internals.rust-lang.org/t/llvm-coroutines-to-bring-awarness/3708/12은 stackful 또는 stackless coroutines에 관한 몇 가지 질문을 제기합니다. 일반적인 yield-like 연산자를 구현하는 데 사용할 수 있습니까?
편집 2 : C++ 부스트에는 스택 콜 루틴을 구현할 수있는 "컨텍스트"라는 것이 있습니다. 아직도 그들이 그것을 어떻게하는지 계산하려고 노력하고 있습니다. 누구 알아?
재미 있습니다! 이것은 마치 사과 만있는 것처럼 보입니다. 또한, 이것은 스택 포인터를 교환하는 것만큼 빠르지 않습니까? 아니면 커널을 통과하는 것과 같이 느린 일을합니까? – Verdagon