タグ

cに関するkarronoliのブックマーク (28)

  • UEFIアプリケーションの書き方/Hello Worldプログラム - Wikibooks

    どのような環境/言語であっても、最初にHello worldプログラムを書くことは作法になっています。 ソースコードを書く[編集] プログラミング言語はCを使用します。ホスト環境のCプログラムとは違い、標準Cライブラリは使用できず、ヘッダーファイルも float.h、limits.h、stdarg.h、stddef.h、iso646.h、stdbool.h、stdint.h以外は使用することはできません。 #include <efi.h> #include <efilib.h> EFI_STATUS EFIAPI efi_main (EFI_HANDLE hnd, EFI_SYSTEM_TABLE *SystemTable) { InitializeLib(hnd, SystemTable); Print(L"Hello, world!\n"); while(1){} return EFI

    karronoli
    karronoli 2016/03/26
    gnu-efiでめっちゃ簡単にHello Worldできた!
  • 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

    karronoli
    karronoli 2013/05/08
    アリなアプローチだけどCの用途でこんなシンタックス必要な人いるのか…?
  • http://google.com/codesearch/p?hl=en

    karronoli
    karronoli 2011/05/21
    sysreadの実装.PerlLIO_readはread(2)にdefineされてるだけだから普通にファイル読んでるようだ
  • Installation of the "o" packages

    karronoli
    karronoli 2010/09/05
    OMakeで探しものしてたらomakeという別物にあたってしまった.まあ,なんというか,ふーんという感じ
  • ビジネスマナーをC言語で例えると - なつたん

    そうだ、ビジネスマナーを勉強しなくてはいけないことを思い出した。 まずはビジネスマナー以前の、一般常識をクリアーせねばいけない。例によって僕はそこらは全然駄目だ。マジ、駄目。人間として駄目。生きていてすいません。 例えば良く上司から言われるのが、「ひもほどけてるよ」「シャツ出てるよ」とかそんなレベルなんだけど、正直良いじゃんって思ってる。いや、それではいけない。そんな僕にマナーの大事さをC言語で例えて欲しい。 1.ひもが解けてる人 2.scanf()を普通に使う人 なら、僕は1.の人と仕事がしたいんだが、人事の人は、2.の人を採用しちゃうよね。逆にひもが解けているってのは、scanf()を使っちゃうくらい駄目な事なんだよ、って言ってくれたらどんなときもちゃんとひもを結ぶ気がする。シャツが出ているのは、gets()を使うことですよ、って言われると、お客さんに対しては駄目だけど、社内の

    ビジネスマナーをC言語で例えると - なつたん
  • #if 0ハックすごくね?すげーってw - Seasons.NET

    #If 0ってC,C++では、#endifまで問答無用でコメントにしますが、 これを使ったハックがすごく便利。 元ネタ http://gpwiki.org/index.php/SDL:Tutorial:Using_SDL_net #if 0 #!/bin/sh gcc -o a a.c exit #endif int main( void ) { printf( "Hello\n"); return 1; } これを保存して、実行属性をつけてから(chmod 755とか) ターミナルで、 # ./a.c と打ち込むと、 aという実行ファイルが生成される。 んで、./aと打ち込むと Helloと表示される。 今までは、Makefileか直接、gcc -o a a.cとかやっていた作業が、 ソースコード+Makefileの代わりになるわけ。 なぜこんな事ができるかってーと、 shのシェルスクリ

    #if 0ハックすごくね?すげーってw - Seasons.NET
    karronoli
    karronoli 2009/12/01
    簡易Makefile的にソース頭に書いておけるとかナイスだな。
  • LN0 - Loop Nest Optimizer

    karronoli
    karronoli 2009/11/25
    ループのブロック化がよく分からん。b1とb2がブロックのことを言いたいのか? 不思議
  • 404 Page Not Found. - GMOインターネット

    karronoli
    karronoli 2009/11/25
    C++でループのアンロール。確かにtemplateでループ(≒再帰)はアンロールできるわなー
  • テンプレートメタプログラミング - Wikipedia

    出典は列挙するだけでなく、脚注などを用いてどの記述の情報源であるかを明記してください。記事の信頼性向上にご協力をお願いいたします。(2022年9月) テンプレートメタプログラミング(英: template metaprogramming)は、メタプログラミング技法の一種であり、コンパイラがテンプレートを使って一時的ソースコードを生成し、それを他のソースコードと結合してコンパイルする方式である。テンプレートが出力するものは、コンパイル時の定数、データ構造、関数定義などがある。テンプレートの利用は言わばコンパイル時の実行である。この技法は様々な言語で使われている(C++、D言語、Eiffel、Haskell、ML、XLなど)。 テンプレートメタプログラミングの構成要素[編集] メタプログラミング手法としてのテンプレート利用には2段階の操作が必要である。まずテンプレートを定義し、次にそれをインス

    karronoli
    karronoli 2009/11/05
    静的ポリモーフィズムってのをはじめてみた。びみょー
  • C++編(言語解説) 第36章 placement new

    サービス終了のお知らせ いつもYahoo! JAPANのサービスをご利用いただき誠にありがとうございます。 お客様がアクセスされたサービスは日までにサービスを終了いたしました。 今後ともYahoo! JAPANのサービスをご愛顧くださいますよう、よろしくお願いいたします。

    karronoli
    karronoli 2009/11/05
    あー placement newってヒープじゃなくてスタックを使うときの構文か
  • リニアPCMのWAVファイルを読み込む - yattのブログ

    wavファイルを読み込む簡単なC++のクラスを書いた。バイナリファイルを構造体定義とfreadで一気に読み込む方法は始めて知った。なんて楽なんだ。 参考urlのデータ読み出し手順の例を読んでいる限り、タグの現れる順番は予め決まっているわけではないようだ。factとかいうタグ情報もあるみたいだけどもう眠いので明日以降読む。 参考:http://www.kk.iij4u.or.jp/~kondo/wave/ 実行結果 winsowsXPのsystem32フォルダにあるLoopyMusic.wavとBuzzingBee.wavを読みこませた。 $ a LoopyMusic.wav | expand --tabs=12 size 940794 rate 44100 bits 16 ch 1 data bytes 940750 duration 10.67sec $ a BuzzingBee.wav

    リニアPCMのWAVファイルを読み込む - yattのブログ
    karronoli
    karronoli 2009/11/04
    ちまちまファイルを読んでヘッダの確認するんじゃなくて、ファイルのヘッダの構造通りに構造体をそろえて、そのサイズ分単に一気に読んであとは名前でアクセスするのは見やすい。ヘッダが固定じゃないとだめだろうけ
  • gccの最適化オプション(1)

    今回は最適化オプションのまとめとLINK関連のオプションの補足,および出力の種類の制御オプションの補足,またIntel386とAMD x86-64オプションについて説明する. (筆者) 来は最適化オプションを付けなくとも理想的なコードを生成することがコンパイラの役目です.しかしそのようなレベルに達していない以上,使う側が理解して最適化オプションを付加してやらなければなりません. 特にこだわらないのであれば,普遍的な最適化をコマンド・オプション一つで行うことが可能です. ● -O この最適化オプションを付けることで,無理のない最適化を行うことができます.あまりコンパイル時間をかけず,メモリも消費しない程度に,コード・サイズと実行時間を減らす最適化を行います.なお,フレーム・ポインタなしでもデバッグをサポートできる機種では,-fomit-frame-pointerをオンにします. -O1オプ

    karronoli
    karronoli 2009/07/30
    レジスタリネーミングは-O3もしくは-frename-registers指定したときだけ有効になる
  • CPU と機械語(4)

    サブルーチン呼び出し (subroutine call) サブルーチン呼び出しは、手続き呼び出し(procedure call) とも呼ばれる。 C 言語では、サブルーチンのことを関数と呼んでいるので、 サブルーチン呼出しは関数呼び出しと呼ばれる。 サブルーチン呼び出しを実現するには、次のような問題について考えなけれ ばならない: 引数渡しの規約 --- どのようにしてサブルーチンに引数を渡すか? レジスタの保存 戻り値の規約 --- サブルーチンは、どのようにして呼び出し側に値を戻すか? サブルーチンからのリターン方法 --- サブルーチンの実行終了後、 どのようにして呼び出し側に実行を戻すか? サブルーチンを呼び出した命令の次の命令の場所を覚えておいて、 そこにジャンプしなければならない。 ルーチンA サブルーチンB │ ┌───→ ↓ │ │ ───┘ │ ←──┐ │ │ │ │

    karronoli
    karronoli 2009/07/30
    フレームポインタはスタックフレームポインタの略らしい。基準のスタックポインタを差すポインタ。
  • ENV31-C. 環境変数へのポインタを無効にするかもしれない操作の後で、そのポインタを参照しない

    ENV31-C. 環境変数へのポインタを無効にするかもしれない操作の後で、そのポインタを参照しない 環境によっては main() が呼び出された時点で有効な環境変数へのポインタが提供されるが、そのポインタは環境を変更するなんらかの操作を行うと無効になる場合がある。 C 標準 [ISO/IEC 9899:2011] セクション J.5.1 には次のように記載されている。 ホスト環境において、main 関数は第3引数 char *envp[] をとる。この引数は char へのポインタの null 終端配列を指す。char への各ポインタは、このプログラム実行環境に関する情報を提供する文字列を指す。 したがって、ホスト環境においては、次のように main() の形式を変えることで環境変数にアクセスすることができる。 main(int argc, char *argv[], char *envp

    ENV31-C. 環境変数へのポインタを無効にするかもしれない操作の後で、そのポインタを参照しない
    karronoli
    karronoli 2009/07/30
    *envp[]は鬼門のようだ
  • KMC Staff Blog:gccのビルトイン関数 (printf)

    2009年07月03日 gccのビルトイン関数 (printf) gccのtipsを紹介します。主にgcc3.x からgcc4.x で変わっているところです。 #include <stdio.h> int main() { printf("Hello, world!\n"); } このプログラムはgcc3では普通にprintfを呼び出すコードを生成しますが、gcc4ではどうなるでしょうか。ARM版のexeGCC4でちょっと試してみます。 > gcc -S hello.c 生成されたhello.s を見てみると ... .LC0: .ascii "Hello, world!\000" .text .align 2 .global main .type main, %function main: @ args = 0, pretend = 0, frame = 8 @ frame_needed

    karronoli
    karronoli 2009/07/30
    gcc頭いいなー c言語しかビルトイン関数の置き換えの最適化しないのかな。
  • assertion プログラミングのすすめ - DOSEIの日記

    assertion とは id:DOSEI:20041116:p1 に書いたとおり。 次の定理が成り立つ。 プログラムにバグがない ⇒ 全てのアサーションは真 逆は成り立たないが、十分多くのテストがアサーションを真にするならば、プログラムにバグがある可能性を下げることができる。したがって、プログラムを改変していく過程で、常にアサーションを成り立たせるように努力すればよい。また、変更をするたびに、テストを増やすとよりよい。 アサーションを使う上で注意すること。 assertion は実行時エラーを見つけるためのものではない。 assertion は、「仕様」をコード化する手法であり、「想定されるエラー状況」とは区別される。たとえば、「ファイルを開くことに失敗した」のがその関数で想定される状況であるなら、「バグ」ではないのだから、「ファイルは必ず開く」という assertion はできない。

    assertion プログラミングのすすめ - DOSEIの日記
    karronoli
    karronoli 2009/07/08
    assertってマクロだったのかー。assertの条件に続けてコメントじゃなくて文字列リテラルを&&につづけると見やすいよ、という手段
  • プログラムは ASCII で書くべきだよ - 兼雑記

    ふと、 main = 195; とかやって喜んでいた私はバカだったんじゃないかと思いました。 Binary 2.0 などとうかれてほとんどバイナリのコードをゴルフに submit してたのはどうなのか、と。プログラムは ASCII で書くべきだったんじゃないでしょうかと。それもメンテナンスしやすいように、 isprint が true を返すような文字で書くべきではないのか、と。 とりあえず Hello, world! 書きました。そのままコピペでたぶん最近の x86 & linux & glibc なら動きます。それ以外の環境では無理です。 char main[]="`j X$@P[PYPPPPX4.4 PZUX, P^XH,=)F(P_X3F()8)8@)8@@)8)8@PYX@@@@CQBaGHello, world!\n"; int 0x80 とか ret とか ASCII の範囲

    プログラムは ASCII で書くべきだよ - 兼雑記
    karronoli
    karronoli 2009/05/16
    このHelloWorldはすげー
  • apache module 開発事始め : DSAS開発者の部屋

    先日は,必要に迫られて Apache 1.3 の mod_access を改造したという話を書きました.その時は単にあるものを改造しただけでしたが,ふと思い立って,一から Apache 2.0 用のモジュールを書いてみました.書く上で色々 Web サイトを探してみたのですが,あまり日語の入門向けの文章が見あたらなかったので,開発する上で分かったこと(と言うほど大したものじゃないですが)をまとめておこうと思います. フェーズには,例えばそのリクエストを受け付けるか拒否するかを決めるフェーズや,リクエストされた URI と実際のディスク上のファイルとの間の対応付けを解決するフェーズ,そしてもちろん実際のレスポンスを生成するフェーズ等があります.hook 関数を挿入するポイントはこれらのフェーズになりますが,もちろんその全てのフェーズのための関数を用意する必要はありません.また個別の設定を施す

    apache module 開発事始め : DSAS開発者の部屋
  • 標準Cライブラリの実装

    しばらく忙しくて放置していますが、また春頃になれば、それなりに注力できる可能性があります。もっとも、そのころになれば、JSPカーネルではなく、ASPカーネルに対応することを考えるような気もしますが...。 さて、このたび、このブログで公開しているソースコードのライセンスに関して質問を受けました。このブログは、あくまでも実装レポートで、私が実装中に考えたことや、判断に迷ったことなどを交えながら、記録を残して行けたらと思って始めたものです。現在公開されている内容も、ざっと動作は見ていますが、いろいろバグも指摘されていますし、私自身も過去の記事のバグを見つけています。 そんな感じで、まだ現状では非常に完成度は低いと考えてください。それでもよければ、あくまでも自己責任の下で、自由に利用していただいてかまいません。ただし、(合法・非合法にかかわらず)反社会的または反人道的な用途への利用だけはご遠慮く

    karronoli
    karronoli 2008/07/25
    かっこいいブログだな
  • perlを習得してからC言語に挑戦しているところです。perlにおけるsubstrの機能は、Cにはないのでしょうか?文字列の途中のみを抜き... - Yahoo!知恵袋

    perlを習得してからC言語に挑戦しているところです。 perlにおけるsubstrの機能は、Cにはないのでしょうか? 文字列の途中のみを抜き出したいとき、strncpyでは無理ですよね・・・? perlを習得してからC言語に挑戦しているところです。 perlにおけるsubstrの機能は、Cにはないのでしょうか? 文字列の途中のみを抜き出したいとき、strncpyでは無理ですよね・・・?

    perlを習得してからC言語に挑戦しているところです。perlにおけるsubstrの機能は、Cにはないのでしょうか?文字列の途中のみを抜き... - Yahoo!知恵袋
    karronoli
    karronoli 2008/07/25
    substrとして使わせてもらいます。こういうCには標準関数ではないけど他には標準であるような関数をCで実装したライブラリってないかな?