アセンブリにグリーン スレッド/プロセスを実装しようとしています。
たとえば、この x64 アセンブリ コード (nasm 構文) には 2 つのループがあります。'a'がたくさん出力されますが、'a'と'b'を出力してほしいです。2 つのループを組み合わせるだけで問題が解決するため、これはもちろん実際の例ではありません。
global main
extern printf
section .text
main:
.t1:
mov eax, 0
mov rdi, a
call printf
jmp .t1
.t2:
mov eax, 0
mov rdi, b
call printf
jmp .t2
section .data
a: db "a", 0
b: db "b", 0
したがって、いくつかのレジスタを保存し、スタックポインタを変更しながら、命令ポインタをmain.t1
または数マイクロ秒ごとに変更するある種のスケジューラを書きたいと思います。main.t2
これがユーザー空間で不可能である場合は理解していますが、プロセスが実行中のプログラムを変更できる可能性は非常に低いと思われます。ユーザー空間からできない場合、カーネルモジュールで可能でしょうか?