ページへ戻る

− Links

 印刷 

GUIGUI01​/man0004 :: OSASK計画

osaskwiki:GUIGUI01/man0004

「ぐいぐい01」のAPIのための構造体のフォーマットなど(1) anchor.png[1]

  • (by K[2], 2008.11.18)
Page Top

(1) gh4 anchor.png[3]

  • アプリの実行ファイル内の数値記述の基本エンコード。API内でもデフォルトのエンコード。
  • (註)旧バージョンではこれに比較的よく似た"eh4"というものが使われていた。
    総bit長フォーマット(2進数)xのbit数表現可能な最大値(10進)同最大値(16進)俗称
    40xxx3(註)6(註)60型
    810xxxxxx6633F8型
    12110xxxxxxxxx95111FFC型
    161110xxxx....xxxx124095FFFE型
    201111_0xxxx....xxxx15327677FFFF0型
    241111_10xxxx....xxxx182621433_FFFFF8型
    281111_110xxxx....xxxx2120971511F_FFFFFC型
    321111_1110xxxx....xxxx24(省略)FF_FFFFFE型
    360111_1111_1110xxxx....xxxx24(註)(省略)FF_FFFF7FE型
    400111_0100xxxx....xxxx32(省略)FFFF_FFFF74型
    440111_0111_0100xxxx....xxxx32(省略)FFFF_FFFF774型
    480111_0101xxxx....xxxx40(省略)FF_FFFF_FFFF75型
    520111_0111_0101xxxx....xxxx40(省略)FF_FFFF_FFFF775型
    560111_0110xxxx....xxxx48(省略)FFFF_FFFF_FFFF76型
    600111_0111_0110xxxx....xxxx48(省略)FFFF_FFFF_FFFF776型
    641111_1111_0xxxx....xxxx55(省略)7F_FFFF_FFFF_FFFFFF0型
    680111_1111_1111_0xxxx....xxxx55(省略)7F_FFFF_FFFF_FFFF7FF0型
    720111_0111_1111_1111_0xxxx....xxxx55(省略)7F_FFFF_FFFF_FFFF77FF0型
    760111_0111_0111_1111_1111_0xxxx....xxxx55(省略)7F_FFFF_FFFF_FFFF777FF0型
    801111_1111_10xxxx....xxxx70(省略)3F_FFFF_FFFF_FFFF_FFFFFF8型
    84~92(7FF8型~777F8型)70(省略)(省略)
    961111_1111_110xxxx....xxxx85(省略)(省略)FFC型
    100~112(7FFC型~777FC型)85(省略)(省略)
    1281111_1111_1110xxxx....xxxx116(省略)(省略)FFE型
    132~156(7FFE型~7777777FE型)116(省略)(省略)
    1600111_1010_0000xxxx....xxxx148(省略)(省略)7A0型
    164~188(77A0型~77777777A0型)148(省略)(省略)
    1920111_1010_0001xxxx....xxxx180(省略)(省略)7A1型
    196~220(77A1型~77777777A1型)180(省略)(省略)
    2240111_1010_0010xxxx....xxxx212(省略)(省略)7A2型
    228~252(77A2型~77777777A2型)212(省略)(省略)
    2560111_1010_0011xxxx....xxxx244(省略)(省略)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型は将来の拡張性のためにリザーブされている。

Last-modified: 2009-11-21 (土) 00:00:00 (JST) (109d) by k-tan