タグ

関連タグで絞り込む (0)

  • 関連タグはありません

タグの絞り込みを解除

programmingとgccとdevelopmentに関するjjzakのブックマーク (12)

  • gccでインラインアセンブリするときの記法 - big-eyed-hamster’s diary

    gccでインラインアセンブリ機能を利用しようとしたら、だいぶ記法が変態的(って言ったら怒られるかな^ー^;)だったのでメモ。 1 #include <stdio.h> 2 3 int main(int argc,char* argv[]){ 4 int a=10,b=0; 5 6 printf("before:%d\n",b); 7 8 //----memo---- 9 //通常のGASの構文では、レジスタを利用するためにプレフィックスとして 10 //%を1つだけつける。 11 //ところが、gccのインラインアセンブリの構文では、 12 //C言語中で宣言された変数を利用するために、レジスタを利用する 13 //プレフィックスを変更してあげる必要がある。具体的には、 14 // レジスタ:%%レジスタ名 15 // 変数名 :%C言語中の変数名 16 //となる。 17 // 18 /

    gccでインラインアセンブリするときの記法 - big-eyed-hamster’s diary
  • IBM Developer

    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 Developer
  • Omicron Linux/インラインアセンブラ

    Linux/インラインアセンブラ Linux get_current 関数を例にインラインアセンブラを説明する. Linux カーネルで使われているアセンブラは GAS (GNU Assembler) であり,インラインアセンブラの表記もこれに従う.GAS は Intel 表記ではなく,AT&T 表記を利用するアセンブラであり,Intel のマニュアルを読みながら GAS でコーディングする場合は注意が必要である. get_current (include/asm/current.h)の定義は次のようになっている. static inline struct task_struct * get_current(void) { struct task_struct *current; __asm__("andl %%esp,%0; ":"=r" (current) : "0" (~8191UL

  • gccインラインアセンブラ

    gccのasm命令を使うことで,Cの中でインラインアセンブラを使える. 【構文】 asm volatile ("アセンブラテンプレート" : "出力オペランド" : "入力オペランド" : "アセンブラの実行で変更されてしまうもの"); [アセンブラテンプレート] ニーモニックを指定する. "cpuid"とか"mov"とか. 複数指定することもできる. [出力オペランド] 下記のように指定する "=a" (出力先変数), "=b" (出力先変数) ex) "=a (buf)" はeaxレジスタの内容を変数bufに出力することを示す. [入力オペランド] "a" (入力)のように指定する "0"(入力)と指定すると,1番目に指定した出力オペランドの制約条件を流用する. ex) "a" (0) はEAXレジスタに入力として0を与えることを示す. 【オペランドの制約条件】 "=" asmが終わっ

  • OMake つかったらC言語でプログラム書く手間がバカみたいに減った - 日記を書く[・ _ゝ・]はやみずさん

    OMakeすごい。OMakeはマジですごい。 OMakeはGNU makeの代替品みたいなものなんだけど、正直なところこのツールの強力さはGNU makeと比べると失礼なくらいすごい。これのおかげで、「コード修正→ビルド→デバッグ→コード修正→・・・」のループの、ビルドにあたる作業がほぼ消え去った。 ファイルの依存関係の解析がとにかくすごい。よくあるユースケースなんかの場合、最小限の手間でほぼ完璧に依存関係を網羅して、よしなにビルドしてくれる。 とりあえず、はやみずが実際に使ってみたケースを例にとってそのすごさの一端を紹介しようと思う。 case study 論より証拠ということで、自分が OMake を試しにつかってみたケースを紹介する。C言語でスタティックライブラリを作っていて、それに加えて簡単なテストプログラムを書いている。 /include/ 以下にヘッダファイルが全部ある /sr

    OMake つかったらC言語でプログラム書く手間がバカみたいに減った - 日記を書く[・ _ゝ・]はやみずさん
  • The LLVM Compiler Infrastructure Project

    Useful Links Forums LLVM Discourse Mailing Lists: Commits List Discord (Real-time Chat): Discord Calendar: LLVM Community Calendar Dev. Resources: doxygen Sources (GitHub) Code Review Blog Bug tracker Buildbot Green Dragon LNT Scan-build llvm-cov Compile-time tracker Release Emails 20.1.8: Jul 2025 20.1.7: Jun 2025 20.1.6: May 2025 20.1.5: May 2025 20.1.4: Apr 2025 20.1.3: Apr 2025 20.1.2: Apr 202

  • GCC Error Messages

    This page has been converted from a Wiki formatted article. If I’ve missed anything in the conversion process, please tell. Sometimes GCC emits something that can be described as Haiku poems – and you have no clue as to what it really is complaining about. This page is a collection of such gems, their meaning in English and how to solve the problem. If you run into an error that you feel belongs h

    GCC Error Messages
  • 初めてのC言語 - 第9回 リンカスクリプト

    目的 メモリマップを自分で決めて、リンカスクリプトを(途中まで)記述する メモリマップ これまで普通にC言語を使ってきたときには、OSがありました。第1回の時にもプログラムを動かしていたのはLinuxでした。 プログラムはOSによって、様々なリソース割当を行われます。CPU時間もそのひとつですが、最も重要なのがメモリ割当です。実際にプログラムが使うメモリを予約して、その空間に適切な形でプログラムを読出し、プログラムを実行します。必要に応じてアドレス変換やメモリ保護なども行います。 しかし、この「始めてのC言語」ではOSはありません。メモリ割当は自分で行う必要があります。このメモリ割当を行うために必要なのがリンカスクリプトです。 リンカスクリプトを作る前に、ターゲットコンピュータのメモリマップを知る必要があります。メモリマップとは、どのアドレスに何が置いてあるかの表みたいなものです。今回対象

  • 組み込み向けクロス開発環境の構築

    ※ この記事は、Interface 2004年5月号に掲載された記事を加筆、修正したものです。 目次 1. はじめに 2. PCで開発できる組み込みシステム 3. クロス開発環境とは? 4. GNU開発環境とは? 5. GNU開発環境のビルド 6. GDBスタブのROMへの書き込み 7. アプリケーションのコーディング、ビルド、デバッグ 8. アプリケーションのROM化 9. さいごに 10. 用語集

    jjzak
    jjzak 2007/09/04
    組み込み向けのコンパイル方法等、コードROM化、デバック、リンカスクリプト等
  • HackingWithGnu - enbug.org

    はっきんぐ・うぃず・ぐにゅー GNU を使って開発しようっていう不定期な連載です。 いつ書かれるかも分からないし、いつ終わるかも、いつ改訂されるかも不明です。 もちろん、ここは全然公式なページじゃありません。 嘘は出来る限り書かないように努力しますが、絶対信頼してはいけません。 これらは、かなり昔に私自身が執筆していた記事を掘り返した物です。 古くなって、現状に当てはまらない部分を更新していますが、十分ではないかもしれません。 第一回 GNU C の書き方 (1) 第二回 GNU C の書き方 (2) 第三回 GNU C の書き方 (3) 第四回 GNU Make の初歩 第五回 GNU Automake の概要 第六回 GNU Autoconf (1) 第七回 GNU Autoconf (2) 第十二回までありますよ...

    jjzak
    jjzak 2007/03/23
    はっきんぐ・うぃず・ぐにゅー
  • J

    Cで汎用ライブラリをつくってると、void*の嵐になって型安全が無くなると思う。 ちょっとした手間で、それをなんとかする話。 struct varray { int nelem; void *values; }; #define VSET( t, a, i, e ) (((t*)a##t.values)[i] = e) #define VDECL( t, name ) struct varray name##tこんなふうにして。 int main() { VDECL( int, a ); VSET( int, a, 0, 4 ); }こんなふうにする。 変数宣言がちょっとキモくなるのと、配列アクセスが、キモくなる。のと、配列アクセスするときに型の名前がいる。 のだけど、 int main() { VDECL( int, a ); VSET( float, a, 0, 4.0 ); }こうい

    J
    jjzak
    jjzak 2007/01/19
    Cで型安全可変長配列ライブラリをつくる
  • GCC 解読室 Wiki*

    Wikiaへ引越し Wikiaへ引っ越す事になりました。 新しくページを作る時はWikiaの方にお願いします。 ▲ ▼ FrontPage GCC のソースコードをひらメソッドで読んでいこうかと思っています. GCC は,最も歴史が古く,よってたかって世界中の スーパハカー に知恵と技術の限りを尽くして叩かれ続け,今では全てのフリーソフトウェアの礎石となっている,地球が宇宙に誇れるプログラム ((c) shinichiro_h さん & wo さん) です.ぜひあなたも一緒に,この難攻不落の要塞に挑んでみませんか ? 私 (管理人 あろは) は,とりあえず今の所,フロントエンドが何をやっているのか (GCC の内部データ表現形式である木構造,GENERICTree と GIMPLE Tree がどのようにして生成されるのか) を理解したいです. (RTL を含む,ターゲットア

  • 1