タグ

Cに関するainameのブックマーク (19)

  • Cello • High Level C

    #include "Cello.h" int main(int argc, char** argv) { /* Stack objects are created using "$" */ var i0 = $(Int, 5); var i1 = $(Int, 3); var i2 = $(Int, 4); /* Heap objects are created using "new" */ var items = new(Array, Int, i0, i1, i2); /* Collections can be looped over */ foreach (item in items) { print("Object %$ is of type %$\n", item, type_of(item)); } /* Heap objects destructed via Garbage

    ainame
    ainame 2013/05/09
    なんだこれは
  • ポインタの裏話

    ポインタの裏話 岡﨑 直観 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||

  • Rubyの拡張ライブラリを作ってみよう! - ser1zw's blog

    はじめに Ruby Advent Calendar jp: 2011 : ATNDの17日目の記事です。昨日は@yoppiblogさんのSeleniumの自動テストをCI環境(Jenkins)で快適に実施するでした。 Rubyを使ってて 遅い…ここだけ超遅い… とか あのライブラリが使いたい!でもRuby用のライブラリじゃないし… みたいなこと、ありますよね? そんなとき、Rubyの拡張ライブラリで解決できるかもしれません。 Rubyの拡張ライブラリは、普通のライブラリと異なりC(とかC++とかその他の言語とか)で作成します。そのため、Rubyで直接書くよりも高速に処理できたり、Cのインタフェースが用意されているライブラリをRubyから呼びだしたりすることができます。すばらしい! そんなわけで、拡張ライブラリの作り方をざっくり説明したいと思います。 用意するもの Cコンパイラとかmakeと

    Rubyの拡張ライブラリを作ってみよう! - ser1zw's blog
  • GCC Inline Assembler

    "asm"と"__asm__"は、基的には同じであるが、"__asm__"は使用している言語の予約語/関数等とぶつかる場合使用します。またはANSI C互換のコードをつくっている場合、"asm"キーワードが使用できなくなるので"__asm__"を使います。 /* keyword asm と同じ関数*/ function asm(void){ } /* asmが使用できないので__asm__を使用 */ function inline(){ __asm__("asm code"); }

  • https://jp.techcrunch.com/2011/10/18/20111015what-can-we-learn-from-dennis-ritchie/

    https://jp.techcrunch.com/2011/10/18/20111015what-can-we-learn-from-dennis-ritchie/
  • デニス・リッチー - Wikipedia

    デニス・マカリスター・リッチー(Dennis MacAlistair Ritchie、1941年9月9日 - 2011年10月12日[1][2][3][4][5])は、アメリカ合衆国の計算機科学者。 コンピュータ言語のC言語を開発し、ケン・トンプソンと共にオペレーティングシステム(OS)であるUNIX、Multicsなどの開発者として知られる[2]。2007年に引退するまで、ルーセント・テクノロジーズのシステムソフトウェア研究部門を指揮していた。技術的なコミュニティの中では、彼を指して "dmr"(ベル研究所におけるアカウント名)と呼ぶことがある。 1941年9月9日、ニューヨーク州ブロンクスビルに生まれる。父親のアリステア・E・リッチーはベル研究所の研究者で、スイッチング回路理論(英語版)に関する共著書 The Design of Switching Circuits がある。子どものこ

    デニス・リッチー - Wikipedia
    ainame
    ainame 2011/10/13
    何だって!! > デニス・リッチー(Dennis MacAlistair Ritchie, 1941年9月9日 - 2011年10月12日)
  • __stdcall ‐ 通信用語の基礎知識

    Stdcall呼び出しシーケンスを使って関数を呼び出す規約には、次のような特徴がある。 引数の渡しかた: スタック経由のみ スタックへの積みかた: 右から左にPUSHする スタックに積まれた引数の始末: 関数が呼び出された側で行なう その他、次のような特徴がある。 _を生成しない 大文字・小文字を区別しない 関数は引数の正確な数と型を渡す必要がある 変数の型の特定が必要なため、__stdcallの関数はプロトタイプ宣言が必須である。 殆どのWin32 APIは__stdcallで定義されている。 より具体的には、Microsoft Visual C++ 2003環境では、windef.hで次のように定義される。 #define WINAPI __stdcall こうして、Win32 APIは概ね、関数名の前にWINAPIを付けて表現される。例えば、 int WINAPI WinMain(

  • __fastcall ‐ 通信用語の基礎知識

    Microsoft系のC/C++では、次のような特徴がある。 引数の渡しかた: 左から2つはECX、EDXレジスター経由、残りはスタック経由 スタックへの積みかた: 右から左にPUSHする スタックに積まれた引数の始末: 関数が呼び出された側で行なう 変数の型の特定が必要なため、__fastcallの関数はプロトタイプ宣言が必須である。 Borland系のC/C++/Delphiでは、次のような特徴がある。 引数の渡しかた: 左から3つはEAX、EDX、ECXレジスター経由、残りはスタック経由 スタックへの積みかた: 左から右にPUSHする スタックに積まれた引数の始末: 関数が呼び出された側で行なう 変数の型の特定が必要なため、__fastcallの関数はプロトタイプ宣言が必須である。 つまり、Microsoftの__fastcallとBorlandの__fastcallは互換性がないた

  • “本物のマクロ”でCのコード行数を半分に! - @IT

    2009/09/07 毎年夏に開催される軽量プログラミング言語(LL:Lightweight Language)をテーマにした「LLイベント」。第7回目となる「LLTV」が、2009年8月29日に東京・中野で開催された。この記事ではプログラムの一部、「大改善!!劇的ビフォーアフター」をレポートする。前編では、Rubyによるfortuneコマンドの“増築”と、Firefox拡張によるslコマンドの実装というネタ系発表をレポートした。中編となる記事では、C言語にLisp風のマクロを取り入れ、lsコマンドのソースコードを約半分に“修繕”する匠の技をレポートする。後編では、売り場業務が滞りがちだった販売管理システムをbashコマンドで“建て直した”という劇的ビフォーアフターの発表をレポートする。 Cで書かれたlsのソースコードの問題点 「Real/Macro Metaprogramming On

  • 史上最高に愚かしい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現更新履歴
    ainame
    ainame 2011/08/29
    死ぬほど面白い。
  • 呼出規約 - Wikipedia

    この記事は検証可能な参考文献や出典が全く示されていないか、不十分です。 出典を追加して記事の信頼性向上にご協力ください。(このテンプレートの使い方) 出典検索?: "呼出規約" – ニュース · 書籍 · スカラー · CiNii · J-STAGE · NDL · dlib.jp · ジャパンサーチ · TWL (2020年12月) 呼出規約(よびだしきやく)ないし呼出慣例(よびだしかんれい)(英: calling convention)は、コンピュータの命令セットアーキテクチャごとに取り決められるABIの一部で、サブルーチンが呼出される際に従わねばならない制限などの標準である。名前修飾について、データを渡す「実引数」、戻るべきアドレスである「リターンアドレス」、データを戻す「返戻値」などを、スタックなどに対してどのように格納するのか、また各レジスタを、呼び出し側とサブルーチンのどちらの

  • 参照カウント - Wikipedia

    この記事は検証可能な参考文献や出典が全く示されていないか、不十分です。 出典を追加して記事の信頼性向上にご協力ください。(このテンプレートの使い方) 出典検索?: "参照カウント" – ニュース · 書籍 · スカラー · CiNii · J-STAGE · NDL · dlib.jp · ジャパンサーチ · TWL (2021年5月) 参照カウント(さんしょうカウント、英: reference counting)は、メモリオブジェクトのライフサイクル(寿命)管理に使用される方式のひとつ。ガベージコレクションの実装方法およびガベージコレクタの動作方法のひとつとしても利用される。また、コピーオンライトの実装方法としても多用される。 すべてのオブジェクト(メモリ上に置かれているデータの単位)に対して、参照カウントと呼ばれる整数値を付加しておく。これは、このオブジェクトへの参照(あるいはポインタ

  • ホワット・ア・ワンダフル・ワールド do { . . . } while(0) の意味

    じゅうりん じう 0 【▼蹂▼躙】 (名)スル ふみにじること。暴力や権力によって他の権利を侵したり、社会の秩序を乱したりすること。 (goo 辞書) 血気盛んな若者たちが main を蹂躙し陵辱の限りを尽くすことにいびつな快楽を見出し始めている今日この頃,皆様いかがお過ごしでしょうか ? memologue (yupo5656 さん) : [GCC] mainを一度も呼ばないばかりか蹂躙する 更新履歴兼雑記 (shinh さん) : ■[Program][Bin] main 蹂躙 J (wo さん) : mainがputsを呼ぶHello World giveupの日記 : ■ [C] コードの再利用 更新履歴兼雑記 : ■[Program][Bin] main 蹂躙の説明を試みる ぼくもいつか,こういうお兄ちゃんたちみたいな大人になりたいです. ・・・ ごめん,嘘. (師 (wo さん

  • ビットを数える・探すアルゴリズム

    作成日:2004.05.04 修正日:2012.09.01 このページは 2003年の9/11、9/28 の日記をまとめて作成。 はじめに PowerPC 系や Alpha などには population count と呼ばれるレジスタ中の立っているビット数を数える命令が実装されている。 集合演算を行うライブラリを実装したい場合などに重宝しそうな命令である。 職場でこの population count 命令について話をしているうちにビットカウント操作をハードウェアで実装するのは得なのか?という点が議論になった。 CPU の設計をできるだけシンプルにするためには、複雑で使用頻度の低い命令は極力減らした方がよい。 例えば SPARC は命令セット中にビットカウント演算があるが、CPU 内には実装しないという方針をとっている(population 命令を実行すると不正命令例外が発生し、それを

  • 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
  • 初心者への GNU perf のススメ

    Last modified: Mon Oct 29 15:01:59 JST 2018 初心者への GNU perf のススメ Lynx Optimized Pages! 51035 accesses since 2001/07/27. 5 accesses per day. [ TOP ] 目次: 初めての gperf (1) …簡単なプログラムを作ってみる 初めての gperf (2) 初めての gperf (3) …文字の重複問題を解決する gperf 実用編(1) …構造体にアクセスする gperf 実用編(2) …構造体の初期化 gperf が出力したソースコードの権利について 終わりに 初めての gperf (1) 一部から完全ハッシュ関数を作るツール gperf の使い方を知りたい、というリクエストが あったので、軽く説明してみようと思います。 (深く突っ込めないという話も。

  • Geekなぺーじ : winsockプログラミング

    ここでは、WinSockを使ったWindowsネットワークプログラミングの説明を行いたいと思います。 ここで対象としている読者は、ネットワークプログラミング初心者(もしくは入門者)かつWindows環境でプログラミングを行いたい人です。 WinSockという名称は、Windows Socketsから来ています。 名前の通り、Winsockはウィンドウズでソケットを使ってプログラムを書くためのAPI(Application Program Interface)です。 Winsockを使うと、TCP/IPなどインターネットを使って通信を行うプログラムが書けます。 ここで説明を行うwinsockのバージョンは2.0です。 ただし、大枠に関してはversion 1.0と2.0で同じ部分もあるので1.0を利用する方でも参考にはなると思います。 Winsockが対応するWindowsのバージョンとして

  • srand

    擬似乱数の発生系列を変更する 【書式】 #include <stdlib.h> void srand(unsigned seed); 【説明】 乱数とは、要は「でたらめな値」ですが、コンピュータ内ではある規則に従って「でたらめな値」を生成しています。これを擬似乱数と言い、C言語では rand関数を使って発生させます。 srand関数は rand関数で発生させる擬似乱数の発生系列を変更します。srand関数の引数seedに同じ数値を与えると、rand関数は同じ繰返しで擬似乱数を発生させます。たとえば、下の使用例1では同じ seed で10回 srand関数を呼んでいますが、結果を見ると、10回とも同じ繰返しでrand関数は擬似乱数を発生させています。 また、srand関数を呼ばずにrand関数を実行した場合には、srand関数でseedに1を設定したことと同じになり、プログラムを何度実行して

  • C言語におけるプリプロセッサのディレクティブ、マクロ一覧と使い方

    #define #define ディレクティブはマクロの定義を行う。C言語では数値や文字列、数式にに名前を付けて定数を定義することができます。 #define identifier #define identifier replacement #define identifier (parameter) replacement identifier マクロの識別子を指定する。識別子は大文字と小文字を区別する。マクロの識別子は慣習的に大文字で付けることが多い。 #include <stdio.h> #define DEBUG int main(int argc, char **argv) { int i = 1; #ifdef DEBUG printf("i = %d\n", i); #endif } 上記プログラムの実行結果を以下に示す。 $ gcc -o example example.

  • 1