Skip to content
Takym (たかやま) edited this page Jul 2, 2021 · 15 revisions

Takym > QA

質疑応答

このページでは Slack の初心者質問相談チャンネルで行われた質問とその回答を要約しています。

目次

質問: 機械語命令に数字が使われる事はありますか?

回答: あります。

例えば x86 では下記の様な命令があります。

命令 説明 (概略) 参考
CMPXCHG8B レジスタとメモリ上の値を比較し等しければ交換します。 https://www.felixcloutier.com/x86/cmpxchg8b:cmpxchg16b
CRC32 巡回冗長検査します。 https://www.felixcloutier.com/x86/crc32
INT3 デバッグ時に使用されます。 https://x86.puri.sm/html/file_module_x86_id_142.html
UD2 無効命令例外を発生させます。 https://mudongliang.github.io/x86/html/file_module_x86_id_318.html

質問: リアルモードで BIOS (INT 0x10 命令) を使わずに描画処理を行う方法はありますか?

回答: ありますが、難易度は高いです。

BIOS (INT 0x10 命令) を使わずに描画処理を行うには下記の方法が考えられます:

  • グラフィックコントローラ、ビデオチップ、GPU等の仕様書を入手する。
    • 仕様書は有料である場合や公開されていない場合もあります。
  • X Window System 等既存のオープンソースシステムを利用または解析する。

補足

BIOS ROM に保存されているコードの解析は利用規約や著作権に抵触する可能性があります。


質問: 「あ」という文字のコードポイントは Unicode では U+3042 ですが、「あ」と書かれたファイルには 30 42 という値は見つかりません。

回答: UTF-16BE または UTF-32BE 以外の文字コードで保存されている可能性があります。

Unicode では必ずコードポイントと同じ値がファイルに保存される訳では無く、通常は UTF-8UTF-16UTF-32 のいずれかに符号化してから保存されます。 「あ」(U+3042)という文字の場合は文字コード毎に下記の様に変換されます。

  • UTF-8: E3 81 82
  • UTF-16LE: 42 30
  • UTF-16BE: 30 42
  • UTF-32LE: 42 30 00 00
  • UTF-32BE: 00 00 30 42

補足

C言語の型 wchar_t はワイド文字型であり、どの文字コードを使うかは規定されておらず、環境依存になります。コンパイラやOSなどにより異なります。 上記で挙げた文字コードではない可能性もあります。 どの文字コードが使われるかは適宜確認する必要があります。


質問: 立方体を回転させるプログラムの作り方を教えてください。

回答: こちらのページを参考にしてください。

(書きかけ...)


Clone this wiki locally