m68k 프로세서 용 gcc를 사용하여 컨텍스트 스위치를 구현하려고합니다. 모든 레지스터 d0, d1 ... d7 및 a0, ... a7을 저장하기 위해 인라인 어셈블리를 사용해야합니다. 내 인라인 gcc에서 각 레지스터에 별도의 코드 줄을 작성하는 대신 이러한 레지스터를 저장할 수있는 루프를 사용할 수 있는지 궁금합니다.컨텍스트 스위칭을위한 gcc 인라인 어셈블리
예 :
move.l의 % d0에서, 임시 pcb.cpuregs.d0 = 임시 제가
루프 카운터 등 D0 내부에 0을 할.
예, 정말로 setjmp를 사용하십시오. 어셈블리 코드를 피할 수 있다면 그렇게하십시오. –
나는 비슷한 것을하고있다. 콜 루틴의 스택 포인터를 그들 자신의 별도의 스택 공간으로 설정하기 전에 호출한다.이 경우'setjmp '만으로는 충분하지 않다. 함수 호출 (및 저장하려는 레지스터의 관련 변이)을 피하기 위해 asm을 인라인으로 보장하거나 매크로를 사용해야하는 인라인 함수에 넣을 수 있습니까? – Alexander
컴파일러에 따라 다르지만 인라인 어셈블리를 사용하는 것과 정확히 같습니다. –