ページへ戻る

− Links

 印刷 

GUIGUI01​/man0004 のバックアップソース(No.2) :: OSASK計画

osaskwiki:GUIGUI01/man0004 のバックアップソース(No.2)

« Prev[4]  Next »[5]
* 「ぐいぐい01」のAPIのための構造体のフォーマットなど(1)
-(by [[K]], 2008.11.18)
*** (1) gh4
-アプリの実行ファイル内の数値記述の基本エンコード。API内でもデフォルトのエンコード。
-(註)旧バージョンではこれに比較的よく似た"eh4"というものが使われていた。
|総bit長|フォーマット(2進数)|xのbit数|表現可能な最大値(10進)|同最大値(16進)|俗称|
|RIGHT:''4''|RIGHT:0xxx|RIGHT:3|RIGHT:(註)6|RIGHT:(註)6|0型|
|RIGHT:''8''|RIGHT:10xxxxxx|RIGHT:6|RIGHT:63|RIGHT:3F|8型|
|RIGHT:''12''|RIGHT:110xxxxxxxxx|RIGHT:9|RIGHT:511|RIGHT:1FF|C型|
|RIGHT:''16''|RIGHT:1110xxxx....xxxx|RIGHT:12|RIGHT:4095|RIGHT:FFF|E型|
|RIGHT:''20''|RIGHT:1111_0xxxx....xxxx|RIGHT:15|RIGHT:32767|RIGHT:7FFF|F0型|
|RIGHT:''24''|RIGHT:1111_10xxxx....xxxx|RIGHT:18|RIGHT:262143|RIGHT:3_FFFF|F8型|
|RIGHT:''28''|RIGHT:1111_110xxxx....xxxx|RIGHT:21|RIGHT:2097151|RIGHT:1F_FFFF|FC型|
|RIGHT:''32''|RIGHT:1111_1110xxxx....xxxx|RIGHT:24|RIGHT:(省略)|RIGHT:FF_FFFF|FE型|
|RIGHT:36|RIGHT:0111_1111_1110xxxx....xxxx|RIGHT:24|RIGHT:(註)(省略)|RIGHT:FF_FFFF|7FE型|
|RIGHT:''40''|RIGHT:0111_0100xxxx....xxxx|RIGHT:32|RIGHT:(省略)|RIGHT:FFFF_FFFF|74型|
|RIGHT:44|RIGHT:0111_0111_0100xxxx....xxxx|RIGHT:32|RIGHT:(省略)|RIGHT:FFFF_FFFF|774型|
|RIGHT:''48''|RIGHT:0111_0101xxxx....xxxx|RIGHT:40|RIGHT:(省略)|RIGHT:FF_FFFF_FFFF|75型|
|RIGHT:52|RIGHT:0111_0111_0101xxxx....xxxx|RIGHT:40|RIGHT:(省略)|RIGHT:FF_FFFF_FFFF|775型|
|RIGHT:''56''|RIGHT:0111_0110xxxx....xxxx|RIGHT:48|RIGHT:(省略)|RIGHT:FFFF_FFFF_FFFF|76型|
|RIGHT:60|RIGHT:0111_0111_0110xxxx....xxxx|RIGHT:48|RIGHT:(省略)|RIGHT:FFFF_FFFF_FFFF|776型|
|RIGHT:''64''|RIGHT:1111_1111_0xxxx....xxxx|RIGHT:55|RIGHT:(省略)|RIGHT:7F_FFFF_FFFF_FFFF|FF0型|
|RIGHT:68|RIGHT:0111_1111_1111_0xxxx....xxxx|RIGHT:55|RIGHT:(省略)|RIGHT:7F_FFFF_FFFF_FFFF|7FF0型|
|RIGHT:72|RIGHT:0111_0111_1111_1111_0xxxx....xxxx|RIGHT:55|RIGHT:(省略)|RIGHT:7F_FFFF_FFFF_FFFF|77FF0型|
|RIGHT:76|RIGHT:0111_0111_0111_1111_1111_0xxxx....xxxx|RIGHT:55|RIGHT:(省略)|RIGHT:7F_FFFF_FFFF_FFFF|777FF0型|
|RIGHT:''80''|RIGHT:1111_1111_10xxxx....xxxx|RIGHT:70|RIGHT:(省略)|RIGHT:3F_FFFF_FFFF_FFFF_FFFF|FF8型|
|RIGHT:84~92|RIGHT:(7FF8型~777F8型)|RIGHT:70|RIGHT:(省略)|RIGHT:(省略)||
|RIGHT:''96''|RIGHT:1111_1111_110xxxx....xxxx|RIGHT:85|RIGHT:(省略)|RIGHT:(省略)|FFC型|
|RIGHT:100~112|RIGHT:(7FFC型~777FC型)|RIGHT:85|RIGHT:(省略)|RIGHT:(省略)||
|RIGHT:''128''|RIGHT:1111_1111_1110xxxx....xxxx|RIGHT:116|RIGHT:(省略)|RIGHT:(省略)|FFE型|
|RIGHT:132~156|RIGHT:(7FFE型~7777777FE型)|RIGHT:116|RIGHT:(省略)|RIGHT:(省略)||
|RIGHT:''160''|RIGHT:0111_1010_0000xxxx....xxxx|RIGHT:148|RIGHT:(省略)|RIGHT:(省略)|7A0型|
|RIGHT:164~188|RIGHT:(77A0型~77777777A0型)|RIGHT:148|RIGHT:(省略)|RIGHT:(省略)||
|RIGHT:''192''|RIGHT:0111_1010_0001xxxx....xxxx|RIGHT:180|RIGHT:(省略)|RIGHT:(省略)|7A1型|
|RIGHT:196~220|RIGHT:(77A1型~77777777A1型)|RIGHT:180|RIGHT:(省略)|RIGHT:(省略)||
|RIGHT:''224''|RIGHT:0111_1010_0010xxxx....xxxx|RIGHT:212|RIGHT:(省略)|RIGHT:(省略)|7A2型|
|RIGHT:228~252|RIGHT:(77A2型~77777777A2型)|RIGHT:212|RIGHT:(省略)|RIGHT:(省略)||
|RIGHT:''256''|RIGHT:0111_1010_0011xxxx....xxxx|RIGHT:244|RIGHT:(省略)|RIGHT:(省略)|7A3型|
--(註)どのフォーマットでも表現可能な最小値は0。
--(註)"0111"は特別な意味があるので(プリフィクス)、7は8bit以上で表現する。
--(註)総bit長36bit形式は1つのプリフィクスのあとに32bit形式が続いただけのものなので、表現力は増えない。これを「36bit形式は基本形式ではない」と呼ぶことにする。44bit形式も基本形式ではない。一般に、nbit形式が基本形式であるかどうかは、nを2進数表記したときに最初の3bit以外のbitに"1"があるかどうかで決められている。
---このような仕様は非常に長い形式に対してヘッダを短くするためのものである。32bit形式までのように単調に決めていくと(これはsh4と呼ばれる)総ビット長のうちx以外のビットが占める割合は25%を下回ることがないが、gh4の方法だと極端に長い形式では25%を十分に下回ることができ、効率がいい(たとえば32768bit形式では、0.037%未満になる?)。
---ただしそのような非常に長い形式はおそらくめったに出てこないので、32bit形式以下では(4bitの7ができないことを除いて)そのような工夫を施していない(工夫を入れるとどうしても短い形式で効率が下がる)。
--(註)"0111"の直後に4bit形式の0~3や、8bit形式の0~31や、12bit形式の0~255が来る形式などはgh4を利用する仕様が特別な意味を持たせるために独自に意味を持たせる。特に断りがなければ使用不能な組合せとする。"0111"の直後に32bit形式より長い形式が来る場合についてのリザーブはない。たとえば"0111"の直後に32bit形式が来るのはただの36bit形式であり、独自に意味を持たせる余裕はない。
--(註)見ての通りgh4は4の倍数のbit長であればすべての長さの形式を持っており、どのような長さの場所にも隙間なく入れることができる。したがってアライン等のためのパディングの仕様を上位仕様で考慮しなくてもよい。
--(註)260bit以上の長さの仕様ももちろん存在するが、表の中では省略している。256bit以下の仕様から十分に推測可能だろう。ただし7B8型~7BF型は将来の拡張性のためにリザーブされている。


« Prev[4]  Next »[5]