Skip to content

Latest commit

 

History

History
73 lines (47 loc) · 3.22 KB

2022-03-21.md

File metadata and controls

73 lines (47 loc) · 3.22 KB

2022-03-21

今日は呼び出し規約とアセンブリについて勉強します。

【テキスト】

実習 hello13

hello13のbuild.cmdを参照。gcc/g++に-Sオプションを追加することで汗が吐き出される。

【課題3】

  1. hello13.cppとhello13.asmを参照し、「cfunc」と「stdfunc」を比較して下さい。
  2. 「ccaller」と「stdcaller」を比較して下さい。
  3. テキストの「呼出規約とは」を参照し、この違いを説明して下さい。

実習 imm32_apitest

【課題4】

$(REACTOS)/output-MinGW-i386/modules/rostests/apitests/imm32 にimm32_apitest.exeがある。これはimm32に対するテストプログラムだ。

  1. Win2k3上でこのファイルを使って「imm32_apitest」「imm32_apitest himc」を実行せよ。
  2. 自前でビルドしたReactOS上で「cd \ReactOS\bin」「imm32_apitest himc」を実行せよ。
  3. テスト結果を保存し比較せよ。

「failures」というのは、失敗ということです。この失敗数を減らすのが最初の仕事です。

【豆知識1】 コマンドプロンプトで「imm32_apitest himc > test.txt」のように「>」を使うと出力をtest.txtに保存できます。

【豆知識2】 「git clone https://github.com/katahiromz/ImeStudy 」でkatahiromz/ImeStudyをダウンロードできます。 ImeStudyフォルダの中で「git pull」を実行すると最新の状態になります。

実習 hello14

【課題5】katahiromz/ImeStudy/ARTICLES のhello14を参照。これは自己参照構造体NODEの実装例である。

  1. ビルドして実行せよ。
  2. 「//deleteNode(g_pHead, ...」という行の最初の「//」を取り除いて再びビルドして実行せよ。※コンソールプログラムで無限ループにおちいった場合はCtrl+Cで強制終了できる。
  3. deleteNode関数を修正して正しく実行されるようにせよ。

C++のnew/delete演算子は、C言語にはない。代わりにmalloc/freeなどを使用することになる。 PNODE&といった参照型も、C言語にはない。

実習 imm32_apitest その2

【課題5】 課題4のテスト結果について、 imm32_apitestソースの $(REACTOS)/modules/rostests/apitests/imm32 を参照し、失敗理由を簡単に考察せよ。

【豆知識3】 ちょっとした図を描きたいときは、「http://draw.io」「いらすとや」「Inkscape」などを使うとよいでしょう。 画像形式にSVGを使うと劣化なしで図を保存できます。

【豆知識4】 電源の「スリープ」「休止状態」を使うとパソコンを早く再起動できる。 「休止状態」がないときは電源の追加設定で。

【豆知識5】 このページの右上を使うと高速grepができる:https://git.reactos.org/?p=reactos.git;a=summary

今日はここまで。


戻る | 次へ