1

8、16、32 ビット ワードを 64 ビット ワードに変換するポリモーフィック関数を作成したいと思います。どうすればいいですか?

更新1

基本ライブラリでは、すべての単語構造には関数がtoLargeあり、 とfromLargeの間で変換しLargeWordます。これは、私が理解している限り、Word32 の同義語です。

更新2

仕様によると、ワード サイズは 2 の累乗でなければなりませんが、SML/NJ では

Standard ML of New Jersey v110.84 [built: Mon Dec 03 10:23:14 2018]
- Word.wordSize;
val it = 31 : int
- Word32.wordSize;
val it = 32 : int
- Word.toLarge;
val it = fn : word -> Word32.word
> LargeWord.wordSize;
val it = 32 : int

PolyML にいる間

Poly/ML 5.7.1 Release
> Word.wordSize;
val it = 63: int
> Word64.wordSize;
val it = 64: int
> Word.toLarge;
val it = fn: word -> ?.word
> LargeWord.wordSize;
val it = 64: int

それはどうですか?Word.wordSize2 のべき乗でないのはなぜですか? Wordまた、これらの SML 実装で表現が異なるのはなぜですか?

更新3

実際、(<<) 演算子を使用して小さな単語を大きな単語に「昇格」させたいのですが、その方法がわかりません。

更新4

WordアーキテクチャにLargeWord依存し、機械語を表すようです。SML/NJ は 64 ビット アーキテクチャをサポートしていないため、ワード サイズが異なります。

4

2 に答える 2