タグ

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

タグの絞り込みを解除

cに関するpidekazuのブックマーク (45)

  • 表紙 - 本物のC

    このサイトは「物の C 言語」について学習する機会の提供を目的としています。 「物の」とはつまり、 標準規格(仕様)が C 言語をどういうものとして定めているか C プログラムが実際に CPU をどう動かすか という二つの意味合いに於いてです。 どうも巷間にはその辺りを気にせず何となくで書かれた資料が多い様なので、このサイトにより少しでも世界が最適化される事を期待します。 権利について 当然ですがこのサイト全体は著作権法により保護されています。法と良心に則って御利用下さい。 連絡はcontact<アット>real-c.infoまで。

    pidekazu
    pidekazu 2022/03/02
  • JNIでC側のポインタを保持する方法について - 今日もプログラミング

    Cのポインタを保持したい 現在embulk-output-oracleを高速化するために、JNI(Java Native Interface)を使ってプログラミングしている。 その時ちょっと悩んだのが、Cのポインタをどうやって保持するか、だ。 フローとしては、 Java C 初期化処理 → 必要なメモリを確保 処理体 → メモリを使っていろいろ処理 後処理 → メモリを解放 のような感じだ。 初期化時に確保したメモリのポインタを、後続の処理に引き継ぐ必要がある。 どうやってポインタを保持するか まず、C側でグローバル変数で持つ方法。 これだと並列処理に対応できないからだめだ。 Java側にポインタを返し、後続の処理で渡し直してもらう方法がいいだろう。 と思ったが、Javaにはポインタ型というのが無い。intとかlongにキャストすればいいのかな?とも思ったが、処理系依存になるし気持ち悪い

    JNIでC側のポインタを保持する方法について - 今日もプログラミング
    pidekazu
    pidekazu 2020/01/21
  • マイクロカーネルとL4について (Yabaitech.tokyo, Writing a (micro)kernel in Rust in 12 days より) - 豆腐の豆腐和え

    怒田さん*1のこの記事、「CとRustで一から作るマイクロカーネルOS」のおかげで、マイクロカーネルとRustが今ホットです。そこで、技術書典6, 7に出展したYabaitech.tokyoにて連載している、"Writing a (micro)kernel in Rust in 12 days"から、マイクロカーネルとL4についての話を書いた"1日目"の記事の一部冒頭を、いい機会なので再編集してご紹介します。「マイクロカーネルってタネンバウム教授とリーナスの論争のあれだよね?」とか、「L4ってなに?」って方に読んでいただいて、L4ファミリーとマイクロカーネルについて簡単にご紹介できればなと思います。 ちなみに抜粋元の上述の記事は、僕が怒田さんと同じようにRustでマイクロカーネルを書いてみよう、という趣旨の企画です。なので、Yabaitech.tokyoの方もよろしくお願いします!ただし、

    マイクロカーネルとL4について (Yabaitech.tokyo, Writing a (micro)kernel in Rust in 12 days より) - 豆腐の豆腐和え
    pidekazu
    pidekazu 2019/12/16
  • できる! コンパイラ作成の資料まとめ

    あけましておめでとうございます。今年もよろしくおねがいします。艮鮟鱇です。 さてつい先程、友人から「冬休みに言語処理系ちょっと書いてみたいんだけどいい資料ない?」(意訳)と言われました。新しい年も始まりましたし、これを機にコンパイラ・インタプリタを書き始める人も少なくないこともないかもしれません。 ということで私が把握している言語処理系開発のための資料を以下に一覧します。上から順に見ていって、自分に合うものを探して頂ければと思います。私がよく知っているものを並べたので、全体的にCコンパイラよりです。「自分が開発するときに見るやつが載ってない!」という方は是非コメントをくださるか、 Twitterで雑にリプライをお願いします。 低レイヤを知りたい人のためのCコンパイラ作成入門セキュキャン2018 Cコンパイラ開発ゼミの講師の一人、Rui UeyamaさんのCコンパイラ作成入門資料です。タイト

    できる! コンパイラ作成の資料まとめ
  • 「低レイヤを知りたい人のための Cコンパイラ作成入門」を読んで、オレオレコンパイラを作り始めた - Moiz's journal

    はじめに 表題通りですが、Rui Ueyama氏の「低レイヤを知りたい人のための Cコンパイラ作成入門」というPDFを読んでCコンパイラ的なものを作り始めましたよ、というダラっとした内容です。 はじめに 発端 とりあえず書いてみる 別のコンパイラ入門書をよんでみる 次にどうする? 書くぞ、書くぞ、書くぞ リポジトリー 便利な資料 セキュリティキャンプの参加者のリポジトリー オンラインコンパイラGodbolt セキュリティキャンプ講師のスライド C言語規格のドラフト 書籍 Compilers: Principles, Techniques, and Tools 2nd By Alfred V. Aho Intel® 64 and IA-32 Architectures Software Developer Manuals 発端 ツイッター等で知ったのですが、セキュリティキャンプというイベン

    「低レイヤを知りたい人のための Cコンパイラ作成入門」を読んで、オレオレコンパイラを作り始めた - Moiz's journal
    pidekazu
    pidekazu 2018/12/25
  • 3(0)日でできる!�Cコンパイラ自作入門

    3(0)日でできる! Cコンパイラ自作入門 2018-11-09 hikalium @ コンパイラ勉強会

    3(0)日でできる!�Cコンパイラ自作入門
    pidekazu
    pidekazu 2018/11/12
  • 低レイヤを知りたい人のための Cコンパイラ作成入門

    はじめに このオンラインブックは執筆中です。完成版ではありません。フィードバックフォーム このには一冊のに盛り込むにはやや欲張りな内容を詰め込みました。書では、C言語で書かれたソースコードをアセンブリ言語に変換するプログラム、つまりCコンパイラを作成します。コンパイラそのものもCを使って開発します。当面の目標はセルフホスト、すなわち自作コンパイラでそれ自身のソースコードをコンパイルできるようにすることです。 このでは、コンパイラの説明の難易度が急に上がりすぎないように、様々なトピックを書全体を通じて次第に掘り下げていくという形で説明することにしました。その理由は次のとおりです。 コンパイラは、構文解析、中間パス、コード生成といった複数のステージに概念的に分割することができます。よくある教科書的アプローチでは、それぞれのトピックについて章を立てて解説を行うことになりますが、そのよう

    pidekazu
    pidekazu 2018/11/01
  • A級プログラマーへの道 構造体のコピーにmemcpyは使わない

    僕が中堅社員になるまでの頃、実務のソースでは、構造体のコピーは memcpy で行うのが当たり前のように書かれていました。 struct { int n; char str[16]; } a, b; a.n = 100; strncpy(a.str, "text", sizeof(a.str)); memcpy(&b, &a, sizeof(a));    // a を b にコピー しかし、この memcpy による構造体のコピーには、問題があります。 例えば、以下のように各メンバーの型、配列のサイズなどが異なっているような異なった型の構造体を指定してしまった場合、memcpy でコピーすると、メモリ上のデータが壊されてしまいます。 struct { int n; char str[256]; } a; struct { short s; char str[16]; } c; a.n =

    pidekazu
    pidekazu 2017/03/02
  • C言語で正確にミリ秒マイクロ秒単位まで計測する方法 - 8ttyan’s blog

    C標準ライブラリには多数の時間に関するライブラリがある. 注目すべきはtime.hとsys/time.hである.よくあるのはtime.hのstruct time_tに1970年1月1日からの秒数を格納し,それを年月日時分秒をメンバ変数として持つ構造体struct tmに変換して得る方法である. しかし,sys/time.hではさらに上位の(?)構造体timevalが定義されており,メンバ変数としてtime_t型のtv_secとマイクロ秒単位で時刻を格納するsuseconds_t型のtv_usecが定義されている: /* <time.h>および<sys/time.h>から構造体の定義を抜粋 */ // timevalは基準年からの秒数とマイクロ秒を格納 struct timeval { time_t tv_sec; /* 秒 */ suseconds_t tv_usec; /* マイクロ秒

    C言語で正確にミリ秒マイクロ秒単位まで計測する方法 - 8ttyan’s blog
    pidekazu
    pidekazu 2017/03/02
  • 2016年、C言語はどう書くべきか (前編) | POSTD

    (訳注:2016/3/2、いただいた翻訳フィードバックをもとに記事を修正いたしました。) (訳注:著者のMattより、「文中で明言はしていないが、この記事の内容はx86-64 Unix/Linux/POSIXでアプリケーションをプログラミングする場合にフォーカスしている。他のプログラミング領域では、対象とするシステムに応じた(例: 8-bitの組み込みシステム、10年前のコンパイラ、多くの異なるCPUアーキテクチャで動く必要のあるアプリケーション、Win/Linuxでのビルド互換性など)特有のアドバイスが必要」との補足を頂いております。) 以下の文章は2015年の始めに書いたドラフトで、今まで公開していませんでした。私のドラフト用フォルダの中で誰の目も引かなかったため、大部分が書いた時のままです。公開するにあたり、単純に2015年を2016年に変更しました。 必要な修正、改善、苦情があり

    2016年、C言語はどう書くべきか (前編) | POSTD
  • Makefileの書き方 - $ cat /var/log/shin

    まえがき その昔、Makefileの書き方という非常にわかりやすいMakefileの入門ページがあったのですが、seiichirou氏の卒業(?)とともにページが消えてしまいました。 私も大変お世話になったページだった、というかこれからもお世話になりそうなので、そこでWebArchiveから引っ張りだしてきたものを、はてな記法で書き直したものがこの記事になります。 元々自分用に書き直したのですが、せっかくなので公開してみます。 なので、以下の著作はseiichirou氏に帰属します*1。 Makefileの書き方 はじめに ここでは、Makefileの中でもGNU makeにかぎって説明します。 makeって何? ソースファイルを分割して大規模なプログラムを作成していると、コマンドでコンパイルするのが面倒です。また、一部のソースファイルを書き換えただけなのに全部をコンパイルし直すのは時間の

    Makefileの書き方 - $ cat /var/log/shin
  • http://www.mech.tohoku-gakuin.ac.jp/rde/contents/course/computer/programming.html

  • http://sometime.minidns.net/

  • C言語の定石

    C言語の定石 ヘボ将棋って言葉がある。筆者も将棋をするが、まさにヘボ将棋だ。ヘボ将棋というのは、最低限のルールだけで楽しむ将棋と思う。「歩は1つ前にしか進めない」とか「飛車は前後左右は自由に動かす事が出来る」などの知識だけで楽しむ将棋だ。もちろん、目的が友人との親睦を深める事なら大いに結構だと思う。 将棋と同様に、筆者はヘボプログラムというのがあると思う。コンパイラはエラー無しに通るが、それ以外、全部自己流というか目茶苦茶なプログラムの事である。そして、ここからが重要なのだが、この様なヘボプログラムは、同僚との親睦を深めるどころか同僚を精神的肉体的に過労に追い込み病にしたり、挙げ句の果ては自殺に追い込む事もありうる。ヘボプログラムを書く下手糞は、ともすれば、業務上過失傷害や業務上過失致死に問われるに値する迷惑をかけているのだ。 さて、ヘボ将棋から脱却する一つの方法は、定石を覚える事

  • C/C++のポインタの機能--配列との関係 - builder by ZDNet Japan

    ポインタ変数と配列との関係 ポインタ変数と配列との深い関係を表す例を示そう。それは、配列の変数名をポインタ変数のように扱えるということだ。 int n[] = { 7, 3, 5, 9, 2 }; printf( "%d\n", *n ); /* 7 と出力される */ 上記は、nを5つのint型の要素を持つ配列として宣言した後、すぐに*nの値を表示させている。この結果は7と出力される。つまり、*nは配列の最初の要素(n[ 0 ])の値を表していることになる。 では、n[ 1 ]以降の値を*nを使って表すにはどうしたらよいだろうか。そのためには以下のように記述する。 int n[] = { 7, 3, 5, 9, 2 }; printf( "%d\n", *(n + 1) ); /* 3 と出力される */ printf( "%d\n", *(n + 2) ); /* 5 と出力される *

    C/C++のポインタの機能--配列との関係 - builder by ZDNet Japan
  • MALLOC

    時事ネタ いや、「今、fj.comp.lang.cが熱い!」という話は ちょっと前から聞き及んではいたのですが、 流量が尋常じゃないらしいので、 忙しさもあって読むのを控えていたんですけど、 先日、大筋を拾い読みしてみました。 確かに熱いですねえ。 いったん収束するかなあ、と思ったら、なんかまた泥沼の気配が(^^; fjを読んでない人のために説明すると(って、 私も普段はあんまり読んでないんですが)、 「malloc()で確保した領域は、必ずfree()で解放しなきゃいけないか?」という 話題でして、「exit()する時には、OSが解放してくれるんだから 別にfree()しなくてもいいじゃん」という主張と、 「いや、malloc()には常に対になるfree()があるべきだ」という主張があって、 議論を呼んでいたのでした。 んで、私がどう思うかなんですが、 私は面倒臭がりなので、free()

  • malloc() が返すアドレスの下位数ビットは常に0って知ってます?

    当は「malloc() が返すアドレスは8の倍数って知ってます?」 にしたかったんだけど,「8」というのは CPU 依存の数字だし, 一般には2の冪乗なのでこういうタイトルにした. そもそもこの記事を書くきっかけは, YLUG の 「第67回カーネル読書会 (glibc malloc について)」の ビデオと資料を見たこと. 1985年頃に Lisp の処理系を作ろうとして (結局作らなかったけど(^^;)) メモリ管理方法について色々考えたアイディアと同じものもいくつか出てきて, 懐かしくもあり,またとても面白かったが, 私にとって目新しいアイディアは少なかった. malloc() の内部実装に興味を持つ人であっても, 意外と上記タイトルに書いた事実を知らない人が多いようなので, 「ビデオと資料」のページに色々とコメントした. この記事はそれを整理してまとめたものである. 2016/0

  • Charming Python: Functional programming in Python, Part 3

    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.

    Charming Python: Functional programming in Python, Part 3
  • エスケープシーケンス

    ○エスケープシーケンス エスケープシーケンスとはターミナルを制御(カーソル位置や色など)する制御文字をあらわし、 ESC : 8進数で033 から始まる文字列です C言語ではprintfで出力してターミナルを制御します printf("\033[2J") //画面クリア printf("\033[0K") //カーソル位置からその行の右端までをクリア printf("\033[1K") //カーソル位置からその行の左端までをクリア printf("\033[2K") //カーソル位置の行をクリア printf("\033[%d;%dH" ,10,20) //カーソル位置を、高さ10行目、横20行目に移動 printf("\033[%dC" ,10) //カーソルを10行だけ右に移動 printf("\033[%dD" ,10) //カーソルを10行だけ左に移動 printf("\033[%

  • エスケープシーケンス - C言語 - 碧色工房

    サイトトップ 過去のコンテンツ C言語 エスケープシーケンス コンソール制御について、より詳しく、実際の出力例などを上げながら、 まとめたページを作りましたので以下も参照ください。 エスケープシーケンス ANSIエスケープコード コンソールグラフィック CUI のコマンドラインで動くプログラムを書く上でカーソルの位置などをコントロールできたらと思うことがあります。 こいつを実現するには、「エスケープシーケンス」というものを使います。 しかし、このエスケープシーケンスはハードウェアやOSに依存した部分が多いので注意が必要です。 とりあえず、 Windows 2000/XP (おそらく NT も)のコマンドプロンプトでは機能しない ※ことを確認しました。(ただし、 Cygwin 上では使用可能でした) MS-DOS プロンプトでは一部動くことを確認しました(一部が動いたのではなく、一部確認した

    エスケープシーケンス - C言語 - 碧色工房
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy