タグ

Cに関するmurasukeのブックマーク (26)

  • 「infoを読め」と言われたら...

    このページは、「組込み向けプログラム開発では絶対必要なスキルなんだけど、誰に聞いても「info読めば」としか答えてくれないものを、多少まじめに答えてみる」という趣旨のものです。基的には組込み応用だけでなく、プログラマとして重要な項目なども含めていくつもりです。 注意 : いきなりこのページを読むと、調べる力が身につかなくなります。なぜ相手が「infoを読め」と言ったのかを考えてから読むようにするとよいでしょう。 アライメントとか、ワード境界とか 構造体のサイズが妙に大きいとか、変数の読み出しが妙に遅いとか、アクセスエラー例外が起こるとか セクションとか.textとか ROMから動かないとか、変数の初期値が消えるとか、プログラムローダが止まるとか 初期化してない変数とか.bssセクションとか 「初期化してない変数が利用されました」警告とか、Cランタイムとか スクラッチレジスタとか呼出規約と

    murasuke
    murasuke 2019/07/03
  • 呼出規約 - Calling Convention(コーリングコンベンション)

    キーワード C言語, コンパイラ, 引数, 返却値, スタック, スクラッチレジスタ これだけは覚えよう C言語プログラムとアセンブリ言語プログラムをつなげるには、呼出規約を知らないといけない。 呼出規約は、コンパイラ毎に変化する。 関数呼出 C言語やPascalなどの高級言語の多くは、関数を作ることができます。ある程度の処理をひとつの関数(手続き)として分離することで、問題を簡単にしたり、使い回ししやすくしたり、コードの見栄えを良くしたりできます。呼び出す側は処理に必要な情報を与え、呼び出された側は渡された情報のみ(※)を用いて処理を行って答えを返します。 プログラムが計算を行うためには、レジスタを使用する必要があります。しかし、呼出元も呼出先もレジスタを使用するので、そのままではレジスタを取り合ってケンカがおきます。これを調停するのが呼出規約です。 呼出規約の中には、次のような決め事が

    murasuke
    murasuke 2019/07/03
  • 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
  • どこで割り当てられたメモリか突き止める方法 - ペンギンの備忘録

    前回の記事のような場合、ヒープ破壊を起こしている箇所を突き止めることも重要ですが、同時にどこでメモリを割り当てたのかも調べなければ不具合を解決することが出来ません。ただ、小さなプログラムならざっとソースを眺めれば問題のある箇所がすぐ分かるかもしれませんが、ただでさえ大規模で、しかもスキルの異なる多数の人が長年手を加え続けたスパゲティコードから調査するのは大変です。そういった場合、ページヒープの機能を使えばメモリ割当箇所のスタックトレースを得ることが出来るので、そこを手がかりに調査していくと効率が良い場合があります。 ページヒープのスタックトレースを有効にするコマンドプロンプトで次のコマンドを入力します。 >C:\Program Files\Debugging Tools for Windows (x64)>gflags -i +ust +hpa 結果、次のような文字が表示されれば OK で

  • 2014-01-04

    C 言語のプログラムの汚さで競い合うプログラミングコンテスト、The 22nd International Obfuscated C Code Contest の今年の結果が公開されました。 http://www.ioccc.org/years.html#2013 相変わらずの変態ぞろいですのでぜひご覧ください。既報の通り、ぼくは以下の 4 つの賞を貰いました。 Most lazy SKIer Most recyclable Most tweetable 1-liner Most solid それぞれ順次紹介していきたいと思います。 ref: http://ioccc.org/2013/endoh1.c #ifndef SKI #define A(x)B(x##0)B(x##1)B(x##2)B(x##3)B(x##4)B(x##5) #define B(x)C(x##0)C(x##1)C

    2014-01-04
  • ウェブリブログ:サービスは終了しました。

    「ウェブリブログ」は 2023年1月31日 をもちましてサービス提供を終了いたしました。 2004年3月のサービス開始より19年近くもの間、沢山の皆さまにご愛用いただきましたことを心よりお礼申し上げます。今後とも、BIGLOBEをご愛顧賜りますよう、よろしくお願い申し上げます。 ※引っ越し先ブログへのリダイレクトサービスは2024年1月31日で終了いたしました。 BIGLOBEのサービス一覧

    ウェブリブログ:サービスは終了しました。
  • プログラミング :: 高速なプログラムを書く為に :: コンパイラの最適化

    5. アセンブリについて 「アセンブリ」と言うと、「高速なプログラム」の代名詞的な響きがありますが… これは余りお薦めしません。 最近のコンパイラは性能が高いので、自分でアセンブリコードを書いても太刀打ち出来ません。 下手に書くと絶対にコンパイラの吐くコードよりも遅くなりますし、 ちゃんと勉強してペアリングなども考慮して記述したとしても、 コンパイラの吐くコードと殆ど同じ速度のコードにしかなりません。 アセンブリで書いて効果があるのは、 通常の C/C++ では記述できないような処理の仕方をする場合 コンパイラの知らない機能 (CPU の拡張命令とか) を使う場合 位の物です。 どうしてもアセンブリで書きたいというのであれば、 どんな命令が存在するのかをちゃんと知る。 実際に組む時には、各命令のクロック数を全て数え上げて短くなる様に勉める。 勿論、ペアリングなども考慮する Intel の出

  • ポインタの裏話

    ポインタの裏話 岡﨑 直観 okazaki at ecei.tohoku.ac.jp http://www.chokkan.org/ @chokkanorg ポインタの裏話 プログラミング演習A 1 このような説明を 覚えていますか? 知らなくても全く問題ありません ポインタの裏話 プログラミング演習A 2 int x = 0; &xは変数xの「アドレス」 「番地」「住所」を返す 変数x 0 &x メモリ空間, 記憶空間 変数xのアド レス(住所) ポインタの裏話 プログラミング演習A 3 ____ / \ 何言ってたんだこいつ? / ⌒ ⌒\ 番地 アドレス ぬるぽ / (●) (●) \ \ / | 、“ ゙)(__人__)" ) __________ \ 。` ⌒゚:j´ ,/ j゙~~| | | | __/ \ |__| | | | || / , \n||

    murasuke
    murasuke 2012/06/04
  • TechCrunch | Startup and Technology News

    We caught up with Antler founder and CEO Magnus Grimeland about the startup scene in Asia, the current tech startup trends in the region, and investment approaches during the rise…

    TechCrunch | Startup and Technology News
  • ジャパンプライズ(Japan Prize/日本国際賞)

    「Japan Prize」(日国際賞)とは、「世界の科学技術の発展に資するため、国際的に権威のある賞を設けたい」との政府の構想に民間からの寄付を基に設立され、実現したものです。 この賞は、全世界の科学技術者を対象とし、独創的で飛躍的な成果を挙げ、科学技術の進歩に大きく寄与し、もって人類の平和と繁栄に著しく貢献したと認められる人に与えられるものです。 毎年、科学技術の動向を勘案して決められた2つの分野で受賞者が選定されます。受賞者には、賞状、賞牌及び賞金が贈られます。 授賞式には天皇皇后両陛下が毎回ご臨席、三権の長始め関係大臣と各界の代表のご出席を得、挙行されます。 この顕彰事業を行っているのが公益財団法人 国際科学技術財団です。

  • 史上最高に愚かしいCのバグとは何か - YAMDAS現更新履歴

    The most stupid C bug ever | elpauer 先日は徳丸浩さんによる PHP5.3.7 の crypt 関数におけるバグの解説を読み、世界的に有名なオープンソースソフトウェアでもこんな初歩的なミスをやらかすのかとすごく親近感が湧いてしまったが、Pau Garcia Quiles が語るこれまでで最も愚かしい C のバグとは何か? 彼はテンポラリファイルを tmpfile() で作る Unix アプリケーションの移植をやっていた。 else if (code == 200) { // Downloading whole file /* Write new file (plus allow reading once we finish) */ g = fname ? fopen(fname, "w+") : tmpfile(); } マイクロソフトの tmpfile

    史上最高に愚かしいCのバグとは何か - YAMDAS現更新履歴
    murasuke
    murasuke 2011/08/29
    こえぇ
  • やじやじ's 温COM知新

    今や Windows開発環境は、新しい .NET Frameworkが拡大しつつあり、 開発言語も C#や VB .NETが広まっていくことでしょう。 そのような中で、従来のCOMはどうなるのでしょう。 COMは依然として重要な機能であり、DirectXなどの主要なインターフェイス、 また .NETアプリケーションをホストするカスタム環境を構築するのであれば、 COMが必要になります。 今後、.NET対応アプリケーションを作る人でも、何らかの形でCOMの知識は必要 となるでしょう。 ここでは、主に .NET環境での開発をするので直接 COMアプリケーションを作る 機会は少ないので、COMの習得にそれほど時間はかけられないのだけれども、 どうにかして COMをマスターしたいという方を想定して、 COMをできるだけ短期間で理解できるように、 様々なCOMの情報を集大

    murasuke
    murasuke 2009/01/29
  • 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
  • Windows 徹底解説 - Web/DB プログラミング徹底解説

    ここでは Windows の基礎事項、仕組み、各種 API の使い方等をまとめます。 基礎といっても、初級の意味ではなく、土台としての基礎です。 Windows プログラミングに関する初級的なトピックは、 Windows プログラミング入門にまとめていますので、そちらをご覧ください。 UI・ウィンドウ Window と GUI ファイル・I/O 処理 非同期 I/O, ファイル セキュリティ 認証、SSPI の利用 ネットワークプログラミング WinSock, Windows ネットワーク, HTTP API 内部動作 Windows サービス、DLL と仕組み、メモリ、プロセス・スレッド、例外処理 その他

    Windows 徹底解説 - Web/DB プログラミング徹底解説
  • Network over OpenSSL

    OpenSSLで安全なネットワークプログラム OpenSSLが提供するライブラリを使うと簡単に暗号化された 通信を行うことができます。 OpenSSLについては私は詳しくは知らないので他をあたってください。 しかし、私が理解した程度で作ったSSLによる通信プログラムを用意しましたので 参考にして下さい。 OpenSSL家のページ(英語) SSLのサーバーを動かす前の準備 SSLは公開鍵暗号方式のためサーバー側で公開鍵と秘密鍵のファイルを 事前に用意しておかなければなりません。それには openssl コマンドを 以下のようにして実行します。 openssl req -new -x509 -nodes -out public.key -keyout private.key いろいろ尋ねられますが、全部無視してリターンだけでも大丈夫です。 終ると公開鍵ファイル public.key と秘密鍵

    murasuke
    murasuke 2008/09/16
    サンプル
  • 文字配列char str[x]の初期化

    murasuke
    murasuke 2008/09/09
  • http://mars.elcom.nitech.ac.jp/security/aicrypto-ssl/node2.html

  • Microsoft Visual C++へのPro*C/C++の統合

    A Microsoft Visual C++へのPro*C/C++の統合 この付録では、Pro*C/C++Microsoft Visual C++開発環境に統合する方法について説明します。 この付録の項目は次のとおりです。 Pro*C/C++Microsoft Visual C++プロジェクトへの統合 「ツール」メニューへのPro*C/C++の追加 Pro*C/C++Microsoft Visual C++プロジェクトへの統合 この項では、Microsoft Visual C++プロジェクトにPro*C/C++を完全に統合する方法について説明します。 プリコンパイラのすべてのエラーと警告は、Microsoft Visual C++がコンパイラおよびリンカーのメッセージを表示する出力ボックスに表示されます。Microsoft Visual C++のビルド環境とは別にファイルをプリコンパ

  • 【ハウツー】今こそ再考察! C言語ポインタ徹底解説 (1) ポインタと1次元配列の関係 | エンタープライズ | マイコミジャーナル

    C言語は、ポインタが使える言語です。ポインタを使えば、メモリの直接的な操作など、より柔軟なプログラミングが可能です。一方、そのためにはポインタがどのようなメモリ領域を指し示しているか、またポインタ自体が有効なアドレスを保持しているかなどについて十分な理解が必要です。 稿では、C言語のポインタについて、配列との対比に焦点を当てて解説を行います。 *** C言語では、ポインタを配列のように扱うことができます。また、配列名はポインタに変換可能で、別のポインタに代入できます。 まずは1次元の場合について、ポインタと配列の関係を考えてみましょう。 宣言文の記述 いま、ポインタと配列を次のように宣言したとします。 char *p; ← char型へのポインタpを宣言 char a[5]; ← char型を要素とする、要素数5の配列aを宣言 この宣言の結果を図にすると、図1、図2のようになります。 図

  • S.S'S HOMEPAGE

    コンピューター、情報通信用語集 (Last Up Date 01/08/21) C言語 (完 03/02/03) Bから始める Visual Basic (Last Up Date 01/04/29) 逆アセのスス乂 (Last Up Date 02/11/20) MASM32の遊び方 (Last Up Date 03/12/31) Operaを極める ~目指せ!最速のネットサーファー~ (とりあえず完 03/11/10) VISIOの解説書 (Last Up Date 05/03/13)