Add new...Clone CompilerExecutor From ThisOpt RemarksStack UsagePreprocessorASTLLVM IRClangIROpt PipelineDeviceRust MIRRust HIRRust Macro ExpansionGHC CoreGHC STGGHC CmmGCC Tree/RTLGNAT Debug TreeGNAT Debug Expanded CodeControl Flow Graph
Finding and Understanding Bugs in C Compilers Xuejun Yang Yang Chen Eric Eide John Regehr University of Utah, School of Computing { jxyang, chenyang, eeide, regehr }@cs.utah.edu Abstract Compilers should be correct. To improve the quality of C compilers, we created Csmith, a randomized test-case generation tool, and spent three years using it to find compiler bugs. During this period we reported m
4 volatileを指定したくなるとき volatileということばを聞いたことがありますか?また,volatileの使いかたを知っている人はいますか?volatileは,C言語の解説書ではあまり詳しく説明されていませんが,組み込みソフトウェアでは必須です. volatileは型修飾子の一つです.型修飾子は型の持つ性質を表すものです.volatileの仲間にはconstがあります.constを思い浮かべれば,型修飾子がどのようなものかを想像できると思います.さて,volatileの説明をKernighan&Ritchieの本『プログラミング言語 C』から引用すると, 「volatileの目的は,黙っていると処理系で行われる最適化を抑止することにある.例えば,メモリ・マップ方式の入出力をもつマシンでは,ステータス・レジスタに対するポインタは,ポインタによる見かけ上,冗長な参照をコンパイラが
17.2. volatile volatile修飾型は,次の文法を持ちます。 非volatile修飾型の左辺値によって volatile修飾型のオブジェクトを参照する場合,未定義の動作となる。[C99, 6.7.3, 5] volatile修飾型は,処理系に不明な形で値が変更される可能性を持ち,それへのアクセスは処理系依存となる。[C99, 6.7.3, 6] プログラムの実行とは無関係に値が変化するデータという意味なのですが,仕様書(C99)だけでは良く分からないので,冗長にならない程度に説明を付します。 volatile は該当の変数に処理の最適化をしないようにコンパイラに知らせるためのものです。コンパイラは処理の最適化を試み,一部の変数を CPU のレジスタに割り当てたり,文を削除することがあります。次の例では,register を付していないにもかかわらず,変数 i が CPU の
It would probably take us many years to look into all the intricate details of the countless cyber operations that are taking place globally in relation to the Ukraine/Russia conflict the last couple of years. As a tiny step towards that direction, in 2023 I did some research on how Russian intelligence services have been setting up and utilising “bot farms” inside Ukraine. Eventually, I was accep
ここでは、プログラムなどでよく使用されるアルゴリズムについて紹介したいと思います。 元々は、自分の頭の中を整理することを目的にこのコーナーを開設してみたのですが、最近は継続させることを目的に新しいネタを探すようになってきました。まだまだ面白いテーマがいろいろと残っているので、気力の続く限りは更新していきたいと思います。 今までに紹介したテーマに関しても、新しい内容や変更したい箇所などがたくさんあるため、新規テーマと同時進行で修正作業も行なっています。 アルゴリズムのコーナーで紹介してきたサンプル・プログラムをいくつか公開しています。「ライン・ルーチン」「円弧描画」「ペイント・ルーチン」「グラフィック・パターンの処理」「多角形の塗りつぶし」を一つにまとめた GraphicLibrary と、「確率・統計」より「一般化線形モデル」までを一つにまとめた Statistics を現在は用意していま
Linux カーネルのプロセススケジューラの核である kernel/sched.c の schedule() を読み進めていくと、タスク切り替え(実行コンテキスト切り替え)はその名も context_switch() という関数に集約されていることが分かります。2.6.20 の kernel/sched.c だと以下のコードです。 1839 static inline struct task_struct * 1840 context_switch(struct rq *rq, struct task_struct *prev, 1841 struct task_struct *next) 1842 { 1843 struct mm_struct *mm = next->mm; 1844 struct mm_struct *oldmm = prev->active_mm; 1845 184
ソースファイルのコンパイル 事前準備 Fail-Safe C システムを構築するためには、以下のソフトウェアが必要です。 Objective Caml: version 3.09 以降. 可能なら 3.10 以降を推奨. ARM では 3.11.0 以降を推奨. findlib: 1.1 以降. extlib: 1.5 以降. Gnu C Compiler (gcc): version 4.1 以降. GNU binutils: 2.15 以降. Bohem’s GC library: version 6.0 以降. Perl: 5.8 以降. Debian GNU/Linux 4.0 (etch) では、これらのソフトウェアはパッケージとして入手可能です。以下のパッケージをインストールして下さい。 ocaml-nox (または ocaml), ocaml-native-compilers
だ,である調で断定的に書いてありますが,間違い等絶対あると思うので,よろしければご指摘お願いします. Linuxでは,起動するカーネルイメージとしてvmlinux/圧縮版vmlinux/Image/zImageを用いる.ここでは,ARMアーキテクチャにおいてzImageがROM/CFカードに存在し,自己解凍コードによってRAMに展開&ロードされる手順を述べる.解説に使用するカーネルソースは2.6.22である. 以下が実行環境の設定である(armadillo-300の環境を想定).この設定でアセンブル/実行されないコード部分については省略している. CONFIG_CPU_CP15=y CONFIG_CPU_ABRT_EV5TJ=y #ARMv5TEJ ARM9 以下を実行前の状態とする. zImageがROMにある場合(CONFIG_ZBOOT_ROM時)はPCがzImageの先頭アドレスを
The iPhone Wiki is no longer updated. Visit this article on The Apple Wiki for current information. How to set up IDA pro to reverse the 3G baseband The X-Gold 608 has a memory map, as seen in it's page. The Secpack 2.0 takes up the first 0xCF8 of the .fls file. So to load the 3G .fls file into IDA pro, the file offset is 0xCF8(for the secpack), and the CODE starts at the ROM start address of 0x20
CP/M80のシミュレータは数多くあるようです。また、MSXのシミュレータもよい 物があるようですが、筆者は一つも見ていません。 筆者も大昔に8080のシミュレータを書いたのですが、それにCP/M80の シミュレーションを加えたのがこのCP/Mシミュレータです。 このCP/MシミュレータのCP/MとのコンパチビリティーはMSX-DOS並です。 このシミュレータでは、CP/M のファイル操作をUNIXファイル操作に変換してい ます。 CP/Mの古いプログラムは、ディスクI/Oを直接に色々といじる可能性があ るのですが、MSX-DOS程度にはコンパチビリティーを確保しています。 「Z80に対応しないのか?」という疑問に対しては、「Z80の命令をつけると、 8080の美しさが失われるので、Z80にはしない」のです。 このCP/M80シミュレータを ftp://www.takeoka.org/pu
C言語 Version 6のUNIXのソースコードは「pre K&R」とよばれる古いCで記述されている。 現在のCの知識でだいたいはわかるが、理解に苦しむ個所もある。 うるさいことを言えば当時のリファレンスマニュアルを参照して、 当時の文法に親しむのが正攻法であろう。 が、とりあえず「これだけわかっていればソースは読める」というところだけ、 てっとりばやくまとめておこう。 構造体のポインター なかでも衝撃的なのは、 構造体のポインターからメンバーを参照する演算子「->」が自由に使えることである。 たとえば、slp.cから関数setpri()を見てみると setpri(up) { register *pp, p; pp = up; p = (pp->p_cpu & 0377)/16; p =+ PUSER + pp->p_nice; if(p > 127) p = 127; if(p > c
Next: Up: Previous: 細粒度マルチスレッディング 導入 関連研究 単純なタスクプールを使用するスレッド管理 より手の込んだスレッド管理方式 制限された並列モデルでの単純なCコード生成 C手続きの手続き結合慣例 概観 スタックフレームの配置 レジスタ使用慣例 まとめ:コンテキストはどこにあるのか? StackThreads:枠組と実装 概観 C手続き呼びだしによってスレッドを生成する Epilogue Code Threadingによって親を再開する 呼び出しの鎖の再構成によってブロックしたスレッドを再開する 制限と議論 仮定とマシン依存の詳細を明らかにする StackThreadsの上に高レベルのAbstractionを実装する 遠隔読みだし Fork-Join 返り値渡しのプロトコル 潜在的にブロックする逐次手続き呼びだし--Concert Hybrid 実行モデル チ
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く