C言語

C言語

volatile

組み込み機器向けのソースコードでとても重要になるキーワード、それがvolatileです。volatileとは必ずメモリアクセスをともなうコードを生成する、という意味です。コンパイラの仕事の一つに最適化があります。その名の通り、プログラムを...
C言語

あなたのintは何バイト?

C言語におけるint型というのは何バイトなのでしょうか? int i; C言語におけるint型というのは、言語上のサイズ規定はありません。そのCPUにおけるもっとも扱いやすいサイズがint型ということになります。 int...
C言語

DebugビルドとReleaseビルド

親切な開発環境を使うと、DebugビルトとReleaseビルドが最初から用意されています。何が違うのでしょう? Debugビルドはデバッグしやすいようにできています。コンパイラの最適化は無しか最低レベルに設定されていて、1行ずつステ...
C言語

リンカ

PC上でのプログラミングではあまりリンカを意識することはありません。なぜなら、すべてのプログラムはHDD/SSDに保存され、実行時にはすべてRAM上に置かれるからです。組み込みソフトウェアの開発ではリンカの存在がとても大事です。 リ...
C言語

ROMとRAM

組込みソフトウェアの世界では、メモリにはROMとRAMが存在します。パソコンの場合、すべてのソフトウェアやファイルはHDDやSSDなどに保存されていて、必要になった時にはDRAMに持ってきて、そこからCPUで読み書きします。一方、小規模な...
C言語

デバッグ手法

あなたの書いたソフトウェアは思った通りに動いていますか?何かがおかしいけど何がおかしいのかわからない。デバッグするにはどうしましょう。純粋なソフトウェア開発ではテストコードを書いたりデバッガーを使うという方法があります。もちろんそういった手...
C言語

コンパイラは何をするか

C言語を勉強すると、コンパイラは何をしてリンカは何をして、みたいなことを学ぶけれど、組み込みシステム向けC言語の場合に特に注意しないといけないコンパイラの動作があります。それが最適化です。最適化というと、読んで字のごとく、最適な状態に変...
C言語

数字の大きさ

日常生活で考える数字とソフトウェアで考える数字で、気をつけないといけないことは、数字の大きさです。日常生活で数字を考えるとき、それはすべて可変長で考えられています。1なら1、1桁の数字です。100なら3桁、高い買い物をするときは100万...