タグ

cに関するanatofuzのブックマーク (19)

  • musl libc

    musl is an implementation of the C standard library built on top of the Linux system call API, including interfaces defined in the base language standard, POSIX, and widely agreed-upon extensions. musl is lightweight, fast, simple, free, and strives to be correct in the sense of standards-conformance and safety. New to musl libc? Read more about musl or visit the community wiki. SECURITY ADVISORY:

    anatofuz
    anatofuz 2020/10/22
    いかにも便利そう
  • 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

  • Unknown Domain

    anatofuz
    anatofuz 2019/10/15
  • How to optimize C and C++ code in 2018

    Because I canWhy performance mattersWe are still limited by our current hardware. There are numerous areas where it just not good enough: neural networks and virtual reality to name a few. There are plenty of devices where battery life is crucial, and we must count every single CPU tick. Even when we’re talking about clouds and microservices and lambdas, there are enormous data centers that consum

    How to optimize C and C++ code in 2018
    anatofuz
    anatofuz 2019/10/13
  • Cの可変長引数とABIの奇妙な関係 - Qiita

    printf に関する以下のツイートが流行っていました。 上のツイートでは割とあっさり説明されていますが、amd64 SysV ABIでこの現象が起こる理由にはもっと深遠なものがあると思うので、可変長引数とからめて説明してみたいと思います。 前提条件として「ABI」「可変長引数」「non-prototyped関数」の知識が必要なのでそこから説明します ABIとは ABI (Application Binary Interface) とは、機械語レベルでのインターフェースのことです。 機械語そのもののルールはISA (Instruction Set Architecture) によって規定されていますが、たとえばC言語の「関数呼び出し」などの概念を機械語でどのように表現するかについては規定していません。そのルールを定めたのがABIです。したがって、ISAとABIはおよそ1対多の関係にあります

    Cの可変長引数とABIの奇妙な関係 - Qiita
    anatofuz
    anatofuz 2019/09/01
  • 第53回 Cを用いたPerl拡張入門―Inline::Cで体験してみよう!(1) | gihyo.jp

    連載では第一線のPerlハッカーが回替わりで執筆していきます。今回のハッカーは上川慶さんで、テーマは「Cを用いたPerl拡張入門」です。 稿のサンプルコードは、誌「WEB+DB PRESS Vol.108」のサポートサイトから入手できます。 Cを用いたPerl拡張入門 筆者たちPerl Mongerは先人たちが築き上げてきたモジュールを使いながらPerl製のプログラムを作成します。しかしながら、すべてのモジュールがPerlだけで作成されているわけではありません。中にはCの力を借りてPerlの拡張を行っているものもあります。 Cを用いてPerlを拡張する理由 ではなぜ、Cを用いてPerlを拡張する必要があるのでしょうか。それには次の点が挙げられるでしょう。 ホットスポットの改善 ホットスポットとは、処理の中でとても時間がかかっている部分を指します。みなさんが今までにPerlで記述した処

    第53回 Cを用いたPerl拡張入門―Inline::Cで体験してみよう!(1) | gihyo.jp
    anatofuz
    anatofuz 2019/02/19
    一体この記事を寄稿したのは何Hexさんなんだ…!!
  • マイコンでモールス信号判定機をつくった話 - たのしい駆動開発

    大学の講義にEMB-88というAVRマイコンを用いて組み込みを学ぶ講義があり、 その講義の最後に自由課題としてすきなものをマイコンでつくって提出〜というレポートだったので、 モールス信号判定機をつくりました。 ちなみにEMB-88はこんなやつです↓。5600円弱するんですね。正直ラズパイ買ったほうが良いのでは? www.switch-science.com 実行結果はこんな感じです。ほかに動画取ればよかったんですが、これしかないです...もうしわけ! マイコンでモールス信号判定機作ったのじゃー pic.twitter.com/34kx6gXXt9— えりくべ¨̮¨̮¨̮¨̮¨̮ (@ssabcire) 2019年1月24日 コードとしてはこんな感じになります。正直自分でもこのコードは汚すぎるしもっとうまく書けるやろと思ってます。 user.cのくっそ長いif文がその例です。関数化すべきだと

    マイコンでモールス信号判定機をつくった話 - たのしい駆動開発
    anatofuz
    anatofuz 2019/02/03
    EMB-88楽しそう..!! インフルお大事に...!
  • 普通のやつらの下を行け: Cで動的コード生成・実行 - bkブログ

    普通のやつらの下を行け: Cで動的コード生成・実行 スクリプト言語には動的にコードを生成して実行する機能を持ったものが多くあります。 普通のやつらの下を行けの第3回として、今回は C による動的なコード生成と実行に取り組んでみたいと思います。 今回書いたコードの main() 関数は以下のようなものです。 int main(int argc, char **argv) { assert(argc == 2); define(int, add, (int x, int y), "{ return x + y; }"); define(int, mul, (int x, int y), "{ return x * y; }"); define(int, add_argv1, (int x), "{ return x + %d; }", atoi(argv[1])); printf("%d\n"

  • Pointers Are Complicated, or: What's in a Byte?

    This summer, I am again working on Rust full-time, and again I will work (amongst other things) on a “memory model” for Rust/MIR. However, before I can talk about the ideas I have for this year, I have to finally take the time and dispel the myth that “pointers are simple: they are just integers”. Both parts of this statement are false, at least in languages with unsafe features like Rust or C: Po

  • A Haskell Compiler

    hello mum");a.close()},find_slide_number:function(e){var c=e.indexOf("#");if(c<0){return 0}var b=unescape(e.substr(c+1));var f=document.getElementById(b);if(!f){var d=/\((\d)+\)/;if(b.match(d)){var a=parseInt(b.substring(1,b.length-1));if(a>this.slides.length){a=1}if(--a<0){a=0}return a}d=/\[(\d)+\]/;if(b.match(d)){var a=parseInt(b.substring(1,b.length-1));if(a>this.slides.length){a=1}if(--a<0){a=

  • cmocka - unit testing framework for C

    cmocka is ... an elegant unit testing framework for C with support for mock objects. It only requires the standard C library, works on a range of computing platforms (including embedded) and with different compilers. Download here Learn more API Mission Statement The goal of this project is to provide a powerful testing framework for C, on different platforms and operating systems, which only requ

  • テクノとしてのC言語、あるいはC99的書き方のすすめ - Qiita

    以下、読書感想文としてのポエムである。 21st Century C1(以下 21CC と略)という、いささか変わったがある。C言語のプログラマの多くが1980年代の知識に固まってしまっているのを打破しようと書かれたなのだろうと、ざっと自分が1st editionを読んだ感じ2では思っている。C89 aka ANSI Cがいまだに標準だと思っている人3には、おすすめかもしれない。 「Cはパンクロックだ」 21CCでは C is Punk Rock 4 という表現が書籍の最初と最後に出てくる。このパンクロックが何であるかについての議論はしない5。ただ、パンクロックの例えが「シンプルかつ荒削りだけど力強い」言語に対するものであるというのは、個人的なパンクロックへの印象、そしてC言語の特徴をふまえれば良くわかる。 私も気がつけば30年ぐらいC言語で仕事をしていたりする。そして現在の2015年

    テクノとしてのC言語、あるいはC99的書き方のすすめ - Qiita
  • 初心者への GNU autoconf のススメ

    初心者への GNU autoconf のススメ Lynx Optimized Pages! This page is written in Japanese. 143820 accesses since 2001/07/27. 17 accesses per day. [ TOP ] 目次: はじめに なぜ autoconf? インストール 実際に使ってみる ひとまずプログラムを書く configure.in を作る Makefile.in を修正する configure.in を見ながらいろいろ修正する config.h を作ってみる 終わりに 謝辞 変更履歴 はじめに このドキュメントは、初心者とはいえ C プログラミングができて Makefile を記述することが 可能な人を対象にしています。 「使ってみたいけど、とっかかりがわからない」という人に読んでほしいです。 なぜ autoc

  • C11の仕様-それ以外の主な機能強化点

    「無名」という言葉は、構造体/unionの識別子(いわゆるタグ名)が省略されていること(リスト1の(1))、メンバー名が省略されていること(リスト1の(2))の両方を指している。メモリ上での配置は通常の構造体/unionと変わらない。つまり、リスト1のintegerメンバーとfloatingメンバーは同一のアドレスに配置される。無名union/構造体内のメンバーへは、その無名union/構造体をメンバーとして持つunion/構造体のメンバーと同じようにアクセスできる。(3)を見ると分かるとおり、dataTypeメンバーと同じようにして、integerメンバーにアクセスできていることが分かる。 総称選択(§6.5.1.1) 総称選択(Generic selection)は、型に応じて分岐する式である(リスト2)。

    anatofuz
    anatofuz 2018/06/03
  • C言語のインライン関数について - OSのようなもの

    GCCや多くのコンパイラーは,C言語の標準(C99)にインライン関数が取り込まれるずっと前からインライン関数をサポートしていた。そのためかインライン関数の定義は様々で,同じ書式でも各コンパイラで挙動が異なる場合がある。 今回は,インライン関数の定義をまとめ。それぞれ出力されるアセンブラコードを比べてみる。 概要 先頭に inline という言葉を付けて関数を宣言すると,コンパイラーはそれをヒントにコードをインライン化――関数のコードを呼出し元に展開する。これにより,関数呼び出しのオーバーヘッドが取り除かれ実行が早くなる。 inline はコンパイラに対するヒントであって指示ではないから,様々な理由からヒントが無視され,インライン化されず実際の関数として出力される場合がある。例えば,その関数のアドレスが参照される場合や,関数定義内の再帰呼出しなどはインライ化できないし,コンパイラーの最適化を

    C言語のインライン関数について - OSのようなもの
  • C による Perl 拡張入門(

    現状、稿ははげしくかきかけです。フィードバックをおまちしております。 はじめに† Perl で C の拡張がスラスラと書けたら……。C の拡張がスラスラ書けたら、ネイティブのバインディングもスラスラ書けるし、ホットスポットを C で最適化するなんてこともお手の物。書けたらいいけど、XS ってなんかむずかしそう……。 ちがうんです! 今までの XS の教え方がまちがっていたんです!この教材をつかえば、誰でも簡単に今すぐに XS を書けるようになるんです。Perl の C 拡張を書いて同僚や上司を アッー! と言わせちゃおう! この教材では XS のややこしい機能をつかわずに、Perl の C 拡張を書く方法を伝授!初心者でもすぐに C 拡張が書けるようになるぞ! 前提知識† 稿では一般的な C の知識および Perl の知識を読者がもっていることを想定しています。XS の知識や Perl

    C による Perl 拡張入門(
  • xv6 source code: /Users/yutaka/project/lecture-os/xv6-src/sh.c ソースファイル

    anatofuz
    anatofuz 2018/03/30
  • cURL と libcurl を使ってインターネット経由でやりとりする

    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.

    cURL と libcurl を使ってインターネット経由でやりとりする
  • プログラマの友 第十ニ報:bison を使ってみる

    何年か前に単純な興味からコンパイラ(A.V.エイホ、R.セシィ、J.D.ウルマン著、原田賢一訳。麻宮騎亜の漫画の方ではない)というを読んだことがあるのですが、途中から yacc, lex といった解析プログラム作成プログラムの話になって「プログラム持っとらんけん実践できんやないの」とやるせなくなったことがあります。 で、Cygwin に yacc, lex の上位バージョンである bison, flex が入ってることが分かったので、その bison を使ってみることにしました。折角タダで用意してくれているので、info bison を読んでやってみることにしました。 今回のプログラマの友はその覚書のようなものです。bison を使おうと思ってるけど尻込みしている人の参考資料にでもなれば幸いです。 (註:用語には無頓着なので不正確なことがあります) bison とは? 構文解析の基知識

  • 1