「C言語」の記事一覧
-
自己書き換えCプログラムの作成法
2025-05-25 17:00
科学・技術本記事では、x86_64環境で自己書き換えを行うCプログラムの作成手法を詳解しています。実行中に命令を書き換えるため、mprotect関数でメモリ保護属性を変更し、バイトコードを直接操作します。例として、整数の加算値を変更するシンプルなケースから始まり、最終的にはexecveシステムコールを用いてシェルを起動するコードへの動的書き換えまでを実装。セキュリティと低レイヤーの理解を深める学習教材として紹介されています。
-
構造体最適化でdav1dのデコード性能を改善
2025-05-24 23:24
IT・ネット動画デコーダーdav1dの構造体サイズ最適化により、CPUキャッシュ効率を高め、4K動画で約1%、1080pで最大3%の性能向上が達成されました。具体的には、構造体のフィールド順序の見直し、列挙型のサイズ制限、int型からuint16_tへの変換などが行われ、CPUキャッシュラインに収まるように調整されています。この改善は64bit環境においてより効果的で、既存のCコンパイラの最適化だけに頼らず、手動による調整が効果を発揮した事例です。
-
Cライブラリ「Ratatoi」:オーバーフロー時に即クラッシュする安全指向設計
2025-05-21 19:00
科学・技術Ratatoiは、C言語の標準関数strtolをラップした小型ライブラリで、オーバーフローを検出すると即座にabort()を呼び出してクラッシュさせる仕様です。従来のatoi関数とは異なり、エラーを黙って無視することなく、メモリ安全性を優先した設計となっています。開発者は明示的なエラーチェックを不要としつつ、安全な数値変換処理を実現できます。
-
Kilo:1000行未満の軽量テキストエディタ
2025-05-19 20:28
IT・ネットKiloは1000行未満のC言語コードで構成された軽量テキストエディタで、シンタックスハイライトや検索機能を備えています。外部ライブラリに依存せず、VT100互換ターミナルで動作します。開発者向けに、他のエディタやCLIツールのベースとしての活用も提案されています。
-
OBNC:OberonのためのCコンパイラ
2025-05-17 12:00
IT・ネットOBNCは、ニクラウス・ヴィルトのプログラミング言語Oberonの2016年最終版に対応したC言語ベースのコンパイラです。OberonのソースコードをC言語に変換し、ホストOSのCコンパイラでビルド・リンクします。GNU GPLとMozilla Public Licenseで配布され、ライセンス互換性が高く、標準ライブラリや拡張モジュールを含んでいます。POSIX環境でのビルドに対応し、Windows版には依存関係が同梱されています。GeditやPluma用のエディタ拡張も提供されています。
-
整数分割と組み合わせ:プログラマのための列挙組合せ論入門
2025-05-15 12:10
科学・技術列挙組合せ論は、集合の要素数を数える数学の一分野で、整数分割や組み合わせなどが代表例です。この記事では、整数分割と整数組み合わせの違いや、それぞれの計算法、C言語による列挙アルゴリズムを紹介。Leetcode感覚で学べるように構成され、数式とコードを用いて、アルゴリズム思考に役立つ理論を実践的に解説しています。
-
Win32 APIプログラミング入門チュートリアル
2025-05-13 13:44
科学・技術「theForger's Win32 API Tutorial」は、Windowsアプリケーション開発におけるWin32 APIの基礎を学ぶための入門的ガイド。段階的に知識を積み重ねる形式で構成されており、ローカル環境でも読めるように完全なコード例のダウンロードも可能。ページ内にはよくあるエラーへの対処もまとめられており、初心者にとって分かりやすい教材となっている。ただし、翻訳版やPDF版は更新が遅れているため、公式サイトの最新版を読むよう推奨されている。
-
Odin言語はC開発者に最適な設計思想を継承
2025-05-13 08:35
科学・技術OdinはC言語のベストプラクティスを取り入れたシンプルで効率的なプログラミング言語です。特にカスタムアロケータや一時メモリアロケータ、追跡アロケータの機能が標準で組み込まれており、Cでのゲーム開発に近いスタイルが自然に再現できます。Odinはゼロ初期化を基本とし、SoA構造のサポートや指定初期化にも対応。C++より簡素ながら、現代的な機能を備えています。
-
C言語とWin32 APIで作られた軽量ToDoアプリ
2025-05-11 15:57
IT・ネットこのプロジェクトは、C言語とWin32 APIのみを使用して構築された軽量でネイティブなWindows向けToDoアプリです。タスクの追加・編集・削除に対応し、システムトレイへの最小化やWindows起動時の自動実行など、OSとの統合も特徴です。すべてのタスクはAppData配下にバイナリ形式で保存され、実行ファイルサイズもUPX圧縮後26.5KBと非常に小さくなっています。
-
ビット演算で描くシェルピンスキーの三角形
2025-05-10 21:42
科学・技術C言語のビット演算でシェルピンスキーの三角形を生成する驚くべきコードが紹介されている。論理積(AND)を用いた簡素なロジックで、2進数の位置表現が図形の自己相似性を自然に生み出している。作者はこれを80年代的な「ビットいじり文化」とフラクタルへの懐古として楽しんでおり、C言語や整数表現に親しみのある技術者には興味深い内容。コードの美しさと数学的意味が融合した解説となっている。
-
fui:Cで作られたフレームバッファUIライブラリ
2025-05-08 22:05
科学・技術fuiは、C言語で記述されたTTYコンテキスト向けのフレームバッファ操作ライブラリで、複数レイヤーの描画、テキスト・図形の描画、キーボードやマウス入力、音声再生まで対応しています。libevdevとalsaを活用し、低レベルで直感的なUI開発が可能です。静的リンクでの導入も簡単で、ゲームやシステムツール開発に応用できます。サンプルにはアステロイド風ゲームも含まれています。
-
CやC++だけじゃない:コンパイラの使い方を学ぶ意義
2025-05-05 02:17
IT・ネットこの記事は、CやC++の学習は豊富な良書で楽しい体験だったが、プログラムを実行形式に変換するためのコンパイラやリンカの使用方法を学ぶのは困難だったという著者の経験から始まります。その原因として、ツールの使い方に関する体系的な解説がほとんど存在しない点を挙げています。そこで本シリーズでは、コンパイラドライバ、プリプロセッサ、コンパイラ、リンカ、ローダといった各段階を丁寧に解説し、特に初心者がつまずきやすい実用的な知識のギャップを埋めることを目的としています。