Saturday 12 August 2023

Aarch64 の builtin_setjmp

CbC側からCに復帰する部分なんですが、まぁ、setjmp/longjmp で良いわけで、要らないという意見も。

理論的には、たんにreturnするので良いはずだったり。まぁ、つじつま合わせではある。

GCCでは nested function 使ってるんですが、LLVMにはそれはない。sp/fp をいじれば良いだけなんだが、

GCC/LLVMとも「frame pointerなし」ってのをやりたかったらしく、直接 fp に触れない。なので、

  LLVMでは諦めて、setjmp 呼び出した

んですが、setjmp.h を読み込むのはあれなので、builtin_setjmp にしたという流れ。そこで、

  Aarch64 の builtin_setjmp は実装されてない

ってのはあんまりだと思うんですけどね。たぶん、既に実装はされてるんだが、なんかの問題があるんだろうな。

いろいろ選択肢はあって、

  1) Aarch64 の builtin_setjmp を実装する
  2) setjmp.h 使えば良いので、仕様から落とす

まぁ、後者が楽ではあるんだが...

No comments: