タグ

cに関するjjzakのブックマーク (340)

  • デバイスドライバ開発入門

    これは、私が仕事でたまたまやることになった、最初で(多分最後の?)Linux によるデバイス・ドライバ開発の経験から、学んだことを抜粋しています。これを読んだからといってすぐさまドライバが書けるようになるとは思わないでください。ただ、この手の文書はあまり見たことがなかったので、少しはインパクトあるかなあ、ぐらいの軽い気持ちで書きました。 実際のコードや関数仕様書などはお見せできませんが、雰囲気くらいは分かると思います。 カーネルのソースを読む際の参考になれば幸いです。 前提 SCSIについて 開発の必要条件 入門 デバイスドライバに関する一般的な考慮事項 UNIXでのアプリケーション開発に関する一般的な考慮事項 UNIXでのデバイスドライバ開発に関する一般的な考慮事項 ドライバとカーネルのインターフェース プロセス・スケジューリング関連サービス タイマー機能 メモリ操作関連 リソース関連

    jjzak
    jjzak 2007/07/30
    Linuxのデバイスドライバ開発入門
  • kei3.jp > 電子工作

    kei3.jp Twitter:@keiso Instagram:keiso TikTok:@keisow

  • Kazuho@Cybozu Labs: Cインタプリタ アーカイブ

    2006年07月13日 Collatz 予想 キミならどう書く 2.0 - ROUND 2 - について。 いきなり brainf*ck で書く元気はないので、とりあえず C に起こしてみました。bf 化をにらみつつコード短縮をかねてループや判定条件を 0 基準に変更していったら、こんな感じになりました。 続きを読む "Collatz 予想" 投稿者 kazuho : 2006年07月13日 11:15 | トラックバック (0) 2006年06月26日 C で tail に queue は不要 なんか C で tail を書くのが流行っているらしいので参戦します。 はこべさんや弾さんの例だと、動的なデータ構造を使っているが、これは牛刀だと思いました。少なくとも、djb 先生のお好きな回答でないことは確かです (^^; C で書くとしたら、やはり目的に特化したデータ構造を使うことで、速度と

  • gcc のデバッグ術

    Unix系コマンドラインユーザーのための、 gcc/g++/g77 による開発におけるデバッグ術を簡単に紹介します。 以下の内容は gcc 2.7.2.3 での動作は確認しています。 g++/g77 でも恐らくは通用すると思うのですが、 ひょっとすると異なる部分があるかもしれません。 筆者は g++/g77 の使用経験がないので、その場合は御容赦を願います。 実行前 キーワード「コンパイルオプション, -Wall, -O2, -O4」 まずは gcc にオプション opt'-Wall' を付けてコンパイルし、 警告がなくなるまでソースを修正します。 これは 常識 です。 次に opt'-O4 -Wall' でコンパイルします。 「未初期化変数の使用」の警告 (`foo' might be used uninitialized in this function) は、 opt'-O4' を付

  • はてなブログ | 無料ブログを作成しよう

    トルコ水紀行 -前編 イスタンブール- みなさんこんばんは、地図子です!8月は久しぶりに毎月更新にしようと思います。今までずっと名古屋について書いてきましたが、ワープして・・・ トルコについて書きたいと思います。 2024年6月に念願のトルコに行ってきました。いつからトルコに行きたかったかわから…

    はてなブログ | 無料ブログを作成しよう
    jjzak
    jjzak 2007/07/26
    Tiny c compiler
  • プログラミング言語C再訪

    Tiny C Cmpiler 0.9.23のインストール ISO C99に対応した、コンパクトでコンパイル速度が大変速いコンパイラーです。生成されたバイナリーの実行速度はgccよりも若干劣るようです。 LGPLライセンスのもとで、フリーで入手して使用することができます。 http://b2c-1.rocketbeach.com/~bitwalk/tcc_intro.html TinyCC について http://www.nminoru.jp/~nminoru/programming/x86-cc.html x86 で動作する C/C++ コンパイラ 同じ名前ですが、つぎのtiny Cコンパイラは学習用のサブセットです。 http://www.watalab.cs.uec.ac.jp/tinyCabs.html tiny C コンパイラの概要 Tincy C Compilerの入手方法 つぎ

    jjzak
    jjzak 2007/07/26
    Tiny C Compiler
  • C/C Compilers for x86

    What's New (2006.01.12) 情報を更新。 (2005.08.23) Tiny C Compiler の情報を追加。 (2005.07.07) Borland C++ Compiler の情報を更新。 (2003.05.13) 4/18 の日記を元にしてページを作成。 コンテンツ x86 バイナリを生成可能な C/C++ 処理系のリスト 手持ちの処理系の比較 x86 バイナリを生成可能な C/C++ コンパイラ処理系のリスト x86 というか IA-32 命令セットに基づくバイナリを生成可能な C/C++ コンパイラ処理系のリスト。 ただし DOS 時代の 8086 命令を生成するだけのものは省いた。 メーカ 名称 対応OS 備考

    jjzak
    jjzak 2007/07/26
    [][][compiler]x86 で動作する C/C コンパイラ
  • サービス終了のお知らせ

    サービス終了のお知らせ いつもYahoo! JAPANのサービスをご利用いただき誠にありがとうございます。 お客様がアクセスされたサービスは日までにサービスを終了いたしました。 今後ともYahoo! JAPANのサービスをご愛顧くださいますよう、よろしくお願いいたします。

  • Optimization of Computer Programs in C

    Michael E. Lee Senior Programmer/Analyst Ontek Corporation 22941 Mill Creek Road Laguna Hills, CA 92653 USA Abstract: A substantial portion of a knowledge worker's life may be spent waiting for a computer program to produce output. Users and organizations control their wait time by purchasing faster computers, adding memory, or using faster network connections. Developers of application progra

  • 例外とバックトレースを使ったデバッグ - odz buffer

    あるプログラムを使っていると std::out_of_range で abort したので、デバッグしようとするものの、C++ は例外で abort しても Java のようにバックトレースを表示してくれたりしないので、どこが問題か分かり難くて困った。 #include <cstdlib> #include <cstdio> #include <execinfo.h> namespace std { void __throw_out_of_range(const char* msg) { void *trace[128]; int n = backtrace(trace, sizeof(trace) / sizeof(trace[0])); backtrace_symbols_fd(trace, n, 1); int a = 0 / 0; printf("%d\n", a); abort(

    例外とバックトレースを使ったデバッグ - odz buffer
    jjzak
    jjzak 2007/07/17
    [][][debug][programming]
  • IBM わかりやすいコードを作成するための 6 つの方法 - Japan

    IBM Developer is your one-stop location for getting hands-on training and learning in-demand skills on relevant technologies such as generative AI, data science, AI, and open source.

    IBM わかりやすいコードを作成するための 6 つの方法 - Japan
  • IPA セキュア・プログラミング講座

    IPA 独立行政法人 情報処理推進機構 セキュリティセンターによるセキュア・プログラミング講座:Webアプリケーション編 & C / C++言語編

    jjzak
    jjzak 2007/07/05
    [][][education][programming][security]
  • Lisp500

    [up] | news license installation usage bugs features Is your program large and complex? Are you tired of Greenspunning? Now, in only 500 lines, here we have an informally-specified bug-ridden implementation of Common Lisp, ready to meet your needs. -- Christophe Rhodes Lisp500 is a 500-line implementation of an informally specified dialect of Lisp. It attempts to be not too bug-ridden. Unfortunate

    jjzak
    jjzak 2007/07/05
    500行のC言語で書かれたLisp実装「Lisp500」
  • Part1 オープンソース/C言語に学ぶ「ソースコードの読み方」:ITpro

    「Code Reading―オープンソースから学ぶソフトウェア開発技法」(毎日コミュニケーションズ発行,写真1)というがあります。私はこのの監訳者ですから,やや自画自賛になってしまいますが,ソースコードの読み方を主題にしたはほかにはあまりありません。技法からツール,データ構造,アーキテクチャ,さらには実際にコードを読んで利用する実例まで紹介している網羅的で良いだと思います。 このの「はじめに」で「達人プログラマー」として知られるDave Thomas氏は以下のように書いています。 他人の作品を読まなかった偉大な作家,他人の筆づかいを研究しなかった偉大な画家,同僚の肩越しに技を盗まなかった腕のよい外科医,副操縦席で実地の経験を積まなかった767機長――果たして,そんな人たちが当にいるのでしょうか? たしかにその通りです。ソフトウエア以外の領域では修行することとはすなわち,他の人の

    Part1 オープンソース/C言語に学ぶ「ソースコードの読み方」:ITpro
  • 「攻殻機動隊」「電脳コイル」の世界を実現! - ARToolKitを使った拡張現実感プログラミング

    仮想世界と現実世界を融合する技術は,拡張現実感(Augmented Reality:AR)と呼ばれています. おおげさな言い方をするとARは現実の世界に情報を「上書き」することができる技術です. アニメや映画にでてくる「電脳」を想像してみてください. 手のひらの上に3Dキャラクタを表示したり,現実の世界でデジタル・データに触れてみたり… そんな魔法のような技術です. ARToolKitは,ARアプリケーションの実装を手助けするC言語用のライブラリです. ARToolKitを使うと,紙に印刷されたパターンをカメラで読み取り, その上に3Dオブジェクトをオーバーレイ表示するアプリケーションが簡単に作れます. 来は非常に敷居の高い技術なのですが,このライブラリは「難しい部分」の処理を 全てやってくれます. …というわけで今回はARToolKitを使って近未来の技術 「拡張現実感」 を体験してま

  • 某日記(後期)

    .久しぶりに釣りがしたくなったので MoE アカウントを取り直した。結果的に週末で釣りスキル 71 くらいになった。 .昔は海ヘビの失敗上げで地道に上げるか、地下水路でタゲから逃げ回ってエイ釣って上げるしかなかったような気がするんだが、今は 40 くらいまではタイタンの生簀で簡単に上がるし(これは序盤には良い銭稼ぎにもなる)、そこから先はジェイドの鮫で簡単に上がる。 .半角カナ - SJIS はそのままにしといて EUC-JP の方だけを修正すれば、特に困ることはないでしょう。 .将来的に困るとすれば EUC-JP と SJIS の ctype 定義を一つにまとめたい場合ですが、これは単に charmap 導入してキャラクタ名で抽象化しろという話だと思います。 .TODIGIT 不用論 - そういえばそうね。消しちゃっていいのかな。少なくとも NetBSD では参照しているように見えない。

    jjzak
    jjzak 2007/05/31
    cpp マニアックス
  • はてなグループの終了日を2020年1月31日(金)に決定しました - はてなの告知

    はてなグループの終了日を2020年1月31日(金)に決定しました 以下のエントリの通り、今年末を目処にはてなグループを終了予定である旨をお知らせしておりました。 2019年末を目処に、はてなグループの提供を終了する予定です - はてなグループ日記 このたび、正式に終了日を決定いたしましたので、以下の通りご確認ください。 終了日: 2020年1月31日(金) エクスポート希望申請期限:2020年1月31日(金) 終了日以降は、はてなグループの閲覧および投稿は行えません。日記のエクスポートが必要な方は以下の記事にしたがって手続きをしてください。 はてなグループに投稿された日記データのエクスポートについて - はてなグループ日記 ご利用のみなさまにはご迷惑をおかけいたしますが、どうぞよろしくお願いいたします。 2020-06-25 追記 はてなグループ日記のエクスポートデータは2020年2月28

    はてなグループの終了日を2020年1月31日(金)に決定しました - はてなの告知
  • Cで継続渡し - ヒビノキロク

    できた。試行錯誤している内に無駄に凝った作りになってしまった。ここまで来ると完全に手段が目的と化しているな。 fib.h: #ifndef __FIB_H__ #define __FIB_H__ typedef void (*destructor_t)(); typedef struct object { int ref_count; size_t size; destructor_t destructor; } *object_t; void addRef(object_t obj); void release(object_t obj); object_t newObject(size_t size, destructor_t destructor); void deleteObject(object_t obj); typedef void* (*func_t)(); typedef

    Cで継続渡し - ヒビノキロク
    jjzak
    jjzak 2007/05/11
    Cで継続渡し
  • Cで継続渡し(末尾最適化バージョン) - ヒビノキロク

    Cで継続渡しを書いてから、もう少しがんばれば末尾最適化もできそうだということに気付いて、やってみたらなんとかできた。しかも、絶対にアセンブラが必要だろうと思っていたんだけど結果的にはアセンブラに頼らずにCの範囲内で実現することができた。さすが高級アセンブラ。 fib2.c #include <stdio.h> #include <stdlib.h> #include "obj.h" int main(int argc, char *argv[]) { // 汎用レジスタのつもり void *r1; void *r2; closure_t c = newClosure(0); c->func = (func_t) &&fib_cps_0; for (int i = 1; i < 10; i++) { addRef((object_t) c); // printf("Fibonacci(%d)

    Cで継続渡し(末尾最適化バージョン) - ヒビノキロク
  • プログラミング言語処理

    jjzak
    jjzak 2007/05/11
    tiny Cという処理系の作成、スタックマシンへのコンパイラ レジスタマシンへのコンパイラ