FPGA開発日記

カテゴリ別記事インデックス https://msyksphinz.github.io/github_pages , English Version https://fpgadevdiary.hatenadiary.com/

「30日でできる!OS自作入門」を読み始めた (18. 19日目)

30日でできる! OS自作入門

30日でできる! OS自作入門

30日でできる!19日目はコマンドをさらに追加する。typeコマンドとか、実行コマンドを追加する。

typeコマンドを実装しているとき、QEMUのバグなのか?GCCのバグなのか?どうしても動かない部分があった。 なんで同じfor文なのに動かないんだ?相当苦労してしまった。

github.com

  • mtask.c
          } else if (cmdline[0]=='t' && cmdline[1]=='y' && cmdline[2]=='p' && cmdline[3]=='e' && cmdline[4]==' ') {
                        for (y = 0; y < 11; y++) {
                          s[y] = ' ';
                        }
...
                        // Find file
                        for (x = 0; x < 224;) {
                          if (finfo[x].name[0] == 0x00) {
                                break;
                          }
                          if ((finfo[x].type & 0x18) == 0) {
                for (int idx = 10; idx >= 0; idx--) {      // 何故かこのコードだと動く
                // for (int idx = 0; idx < 11; idx++) {    // 何故かこのコードでは動かない
                                  if (finfo[x].name[idx] != s[idx]) {
                    goto type_next_file;
                                  }
                                }
                break;  // Find file
              }
            type_next_file:
                          x++;
                        }
...

f:id:msyksphinz:20180415172918g:plain

最後の、アプリケーション起動もとりあえずうまくできるようになった。次はAPIだ...