重複の可能性:
FFI は配列を処理できますか? もしそうなら、どのように?
Haskell で記述された小さなアセンブラがあります。これは、アセンブリ コードを含む文字列を受け取り、バイナリ マシン コードの文字列を返します。この Haskell ライブラリを共有ライブラリとしてビルドすることで、C でこの関数を使用できるようにしたいと考えています。バイナリ マシン コードには null 値を含めることができるためCString
、通常の null で終わる文字列であるため、戻り値の型として使用できません。CStringLen
また、FFI では a を戻り値として使用できないためです。
これを達成するには、どのタイプを使用する必要がありますか?
内部アセンブリ関数の型シグネチャ:
assembly :: String -> ByteString
この関数の入力と出力の例を次に示します。
入力:
decl r0 0x02
decl r1 0x10
add r0 r1
mov rr rs
出力 (1 行あたり 3 バイトの 16 進数で表されるバイナリ データ):
01 00 02
01 01 10
03 00 01
02 05 04