mcommit's message

大阪でソフトウェア開発の仕事をしている simotinといいます。記事の内容でご質問やご意見がありましたらお気軽にコメントしてください\^o^/

C言語

cppcheckをビルドして使ってみる

目次 cppcheckという静的解析ツールを試してみました。静的解析ツールですが、メモリリーク検出を目的として試してみたのでビルド~インストールや試してみた結果について書いてみました。 目次 背景 cppcheckを試してみる ビルド ビルド時の注意点 cppcheck…

Linuxでシリアル通信のプログラム(C言語)を書く

Linux上でC言語でシリアル通信をするプログラムを書く際に、いろいろ調べたので書いておきたいと思います。 目次 目次 シリアル通信プログラムの流れ シリアルポートのデバイスファイル termios構造体 制御コードに気をつけろ! raspberry piで動かしてみる…

farポインタとポインタの違い

RL78マイコンを使っていてポインタと__farのついたポインタサイズの違いを意識する必要がありましたので書いておきたいと思います。 結論 __far付きのポインタと(__farのつかない)ポインタでは型のサイズが異なる場合があり、その場合アクセスできる領域も当…

/*~*/ コメントアウトを除去するコードをRubyで書いてみた

タイトルの通り、C言語系の複数行 /* ~ */ コメントを除去するコードを書いてみました。 Rubyで書いていますが状態遷移が基本になるのでどの言語でも同じように書けそうです。 # コメントアウトの除去 def delete_comment_out code status = :STATUS_WAIT_S…

ビルドしたモジュールに使われているDWARFのバージョンを調べる

最近デバッガに興味を持ってDWARFのフォーマットについて調べていました。DWARFの仕様については公式サイトで公開されています。Download DWARF StandardsDWARFの仕様にはいくつかのバージョンが存在するのですが、ビルド後のモジュールにどのバージョンのDW…

C言語のおすすめ書籍

C言語のシフト演算に関する記事を書いてから何冊かC言語の入門書を読み直したり、最近出ている書籍を読んでみました。 mcommit.hatenadiary.com これまで私が読んできたC言語に関する書籍の中で、個人的に良かったと思う書籍を上げておきたいと思います。 C…

C言語のシフト演算は気まぐれ

仕事でC言語のコードを見ていて、シフト演算に関するバグにはまったので備忘録として挙げておきたいと思います。 #include <stdio.h> int main(int argc, char **argv) { char num = 0xB3; // - 77 unsigned short hoge = (num << 0); printf("0x%02X", hoge); return</stdio.h>…

C言語での電卓の作り方~「コンパイラ」を読んでみた~

随分と前の話ですが、「小飼弾のコードなエッセイ」を読んで、「C言語でもevaりたい」という記事を書きました。mcommit.hatenadiary.comそちらの記事でも書きましたが、この本の最初のエッセイに、 「堂々とevaろう。でもevaりすぎにご用心。」 というエッセ…

SP会に参加させて頂きました

7月2日に東京で開催されたシステムプログラミング会(SP会)に参加させて頂きました。畏れ多くも参加させて頂きました。■目次 参加動機 敷居の高さ 内容 感想 感謝 余談 1.printfの挙動について 2.家路につくまで かなりヤバい人たちの集まりだとは理解し…

GCC 4.7系をcygwinでビルドする

cygwinのパッケージでは2016年2月6日現在で、GCC 4.9.3か5.3.0がインストールできますが、事情があって4.7系をcygwinで使いたくセルフコンパイルしてみました。 最近のGCCはビルドするのに ・GMP ・MPFR ・M4 ・MPC 等のライブラリに依存しているのでこれら…

RXのアセンブラについてちょっとだけ調べてみた

先日「熱血アセンブラ入門を読んだ」という記事を書きましたが、mcommit.hatenadiary.comお正月休みで時間もあるので、個人的に気になっていたRXのアセンブラについて少し調べてみました。備忘録がてら調べた内容を挙げておきたいと思います。 調べた内容 開…

modbus RTUのCRC計算方法(C言語)

modbusの仕様を読んでいてCRCの計算方法がよくわかなかったのでC言語のソースコードを上げておきたいと思います。 この手の計算処理はフローチャートは文章で説明されてもよくわからないことが多く、いつもソースくれ!って思います。 // buf 受信データ // …

RXマイコン PDG(Peripheral Driver Generator)の活用法

ちょうど1年半ほど前にPDG(Peripheral Driver Generator)を使ったという記事RX62N UART通信 - mcommit's messageを書きましたが久しぶりに組み込みの仕事でRXマイコンを使うことになり今回もPDGを活用しているのでいろいろと使ってみた結果についてまとめて…

No More No Prototype Function

■2016/7/4 追記 こちらの記事に書いている内容について、2016/7/2にシステムプログラミング会で発表させて頂きました。 参加者の皆様には釈迦に説法な話で、お時間を取ってしまい失礼しました! _(m_m)_ 参考までにプレゼンの内容はこちらにあげております。…

組込みプログラマかを見分ける10の質問

Androidの勉強をしていてこんな記事を見つけたので、組込系で仕事をしている経験から戯れに、「組込みプログラマかを見分ける10の質問」を考えてみました。といってもこの記事を書く時に1〜10まで考えたのではなくて、 派遣で来てくれる人のスキルを見…

C言語でもevaりたい 〜コードなエッセイを読んだ〜

立ち読みだけにするつもりがついつい買ってしまいました。小飼弾のコードなエッセイ。最初のエッセイでカッコつきの四則演算をするプログラムを書こうという話が登場していました。入力:(1 + 3) * 3 出力:12みたいなことをやるプログラムをかけということ…

C言語 共有ライブラリのメモリリーク調査方法

最近、C言語での開発を行っているのですがメモリリークの調査方法について調べてみたので上げておきます。調べたと言っても、こちらの記事を参考に少し実験をしてみましたという感じですが。 ※「プログラミングでメシが食えるか!?」で有名な小俣光之さんの記…

ネットワークプログラミングについて

最近仕事で、 LinuxでTCPサーバアプリ(C言語)を作ることになったのでリチャードスティーブンスの UNIXネットワークプログラミング〈Vol.1〉 を読んでいます。UNIXネットワークプログラミング〈Vol.1〉ネットワークAPI:ソケットとXTI作者: W.リチャードスティ…

sprintf long long

--------------------------------------------char str[32]; unsigned long long num1 = 10000; unsigned long long num2 = 10000; sprintf(str, "%ld %ld", num1, num2);printf("%s", str);--------------------------------------------結果: 10000 0 っ…