並び順

ブックマーク数

期間指定

  • から
  • まで

1 - 38 件 / 38件

新着順 人気順

typedef c言語の検索結果1 - 38 件 / 38件

  • おっさんのためのModernC++入門ガイド(草稿) - dec9ue's diary

    みなさんはC++の読み書きができますか? 自信がある方、いつ頃勉強しましたか?もし20世紀に勉強したのであれば、その知識は相当古いです。実質現在のModernC++(C++11以降のC++)とは概念上の互換性がないので脳のアップデートが必要です。 自信がない方、文法は知っているけどなんとなく使いこなせていない方、マサカリ屋にあーだこーだ言われて大混乱している方。必勝パターンを身につければもっと楽にコードを読み書きできるようになるかもしれません。 この文章の目的は、ModernC++におけるメンタルモデル(考え方)や必勝パターンをざっくりと導入することでみなさんが楽にModernC++を読み書きできるようなお手伝いをすることです。主要な内容としてはムーブセマンティクスと右辺値 とその次の章でだいたいA4換算で15ページくらい?ほかは正直流し読みしてもらえるような内容です。また、内容的にはその

      おっさんのためのModernC++入門ガイド(草稿) - dec9ue's diary
    • Cコンパイラを作ろう!

      こんにちは、21Bのseasonです。この記事はtraP夏のブログリレー3日目の記事です。 自作Cコンパイラでセルフホスト達成しました。 リポジトリ: https://github.com/season1618/c-compiler/tree/main 自作Cコンパイラでセルフホスト達成しました!!!!!!🎉🎉🎉https://t.co/8fLIAJWksQ pic.twitter.com/2fgH5sKoZ0 — season (@season1618) July 27, 2022 実際にどうやって作るかを書くと長くなるので、ここでは経緯とか完成までの流れとかを書こうと思います。一応開発メモは以下に上げておきました。 開発メモ: https://github.com/season1618/note/blob/main/cs/c-compiler/index.md 経緯 大学の講義で

        Cコンパイラを作ろう!
      • gRPC Internal - gRPC の設計と内部実装から見えてくる世界 | Wantedly Engineer Blog

        こんにちは、Wantedly の Infrastructure Team で Engineer をしている南(@south37)です。 今日は、WANTEDLY TECH BOOK 6 から「gRPC Internal」という章を抜粋して Blog にします。 「WANTEDLY TECH BOOK 1-7を一挙大公開」でも書いた通り、Wantedly では WANTEDLY TECH BOOK のうち最新版を除いた電子版を無料で配布する事にしました。Wantedly Engineer Blogでも過去記事の内容を順次公開予定であり、この Blog もその一環となっています。 Wantedly における Go 導入にまつわる技術背景 | Wantedly Engineer Blog (本記事は Go Conference 2019 Autumn にて無料配布した冊子『WANTEDLY TE

          gRPC Internal - gRPC の設計と内部実装から見えてくる世界 | Wantedly Engineer Blog
        • 【プログラミング言語】モダンなV言語がリリースされたので触ってみる【シンプル且つ高速】 - pavlog

          プログラミングしてますか?僕は都内在住のエンジニアで、最近は主にRuby/Go/TypeScriptを触っています。 趣味で競技プログラミングを始めたのでC++も触るようになりました。 そんな僕ですが、6/22にリリースされたV言語に興味を持っています! 最近だとかなりプロダクションコードでも採用されるのを聞くようになったGo言語がありますが、さらにモダンな言語です。 vlang.io このV言語について公式は以下のように言っています。 Simple, fast, safe, compiled language for developing maintainable software V言語(The V Programming Language)とは インストール手順 V言語の嬉しい部分と特徴 特徴 translating C/C++ to V Hot code reloading その他

            【プログラミング言語】モダンなV言語がリリースされたので触ってみる【シンプル且つ高速】 - pavlog
          • 最近のC言語と、次期C標準(C23)

            C言語といえば古い言語なイメージですが、その重要性はまだまだ落ちていません(多分)。重要な言語だからこそ、今もひっそりと進化を続けています。この記事では、そんなC言語の最近の動向を紹介します。 まずはC言語の前世紀の標準であるC99、現行の標準であるC11/C17を振り返り、その後に未来の標準であるC23に触れます。 C99 C99では色々追加されました。ここでは一部のみの紹介とします。 _Bool _Complex C++の std::complex とメモリ上での互換性がある(C++11以降)。 可変長配列(VLA) 可変長引数マクロ 浮動小数点数の強化 十六進表記 筆者による関連記事:浮動小数点数の16進表記 fma 筆者による関連記事:FMA (fused multiply-add) の話 #pragma STDC FENV_ACCESS, #pragma STDC CX_LIMI

              最近のC言語と、次期C標準(C23)
            • Rustの所有権(ownership)を語義から理解する - igagurimk2の日記

              所有権(ownership)と借用(borrowing)とライフタイム(lifetime)はRust特有の言語仕様として有名である。 Rustではガベージコレクション(GC)を使用せずにメモリ安全性を確保するために所有権と借用とライフタイムの仕様を採用している。 この機構によって、Rustではプログラマが変数の値が有効である範囲を意識する必要がある代わりに、GCに関する実行時のオーバーヘッドがなくともメモリ安全でありスレッドセーフであるプログラムを記述することができる。 一方で、所有権は「『変数が値の所有権を持っている』というのは結局何のことなのかわからない」という混乱を生む要因でもある。 単純に考えると、変数に値が入っているのだから、変数が値を持っているのは当然のことのように思える。 そうすると、「値の所有権を持つ」とは一体何のことを言っているのかがはっきりとしなくなってしまう。 この混

                Rustの所有権(ownership)を語義から理解する - igagurimk2の日記
              • コンテナエンジンの作り方 ~ さくらの夕べ ヤンジェネバトル ~ - Speaker Deck

                Transcript コンテナエンジンの作り方
 さくらの夕べ ~ ヤンジェネバトル ~
 さくらインターネット 株式会社 技術本部 大西 和貴 (C) Copyright 1996-2016 SAKURA Internet Inc 2019/10/08 自己紹介
 2
 大西 和貴 (@_k_onishi_)
 
 
 2017年度新卒
 SVOPチーム(運用) → レンタルサーバチーム(開発)
 
 サービスのコントロールパネルやメールソフトの
 バックエンドやフロントエンドを担当( Go / Typescript )
 
 
 Tech: 
 Linux / Unix / Kernel / File System / 仮想化 / コンテナ
 エミュレータ / バイナリ
 
 Lang: 
 C / Assembly / Perl
 
 Blog:
 レガシーガジェット研究所 Dock

                  コンテナエンジンの作り方 ~ さくらの夕べ ヤンジェネバトル ~ - Speaker Deck
                • 「a=10とb=5の平均は7.5です」をmain関数なしで表示する - ぬいぐるみライフ?

                  発端 どなたかc言語プログラミングが得意な方、いらっしゃいましたら教えていただきたいです。 簡単な問いでお恥ずかしいのですが、画像の問いの答えを教えていただきたいです。 int型どうしの演算で少数の出し方が分からないです。#c言語 #プログラミング #プログラミング初心者 #プログラミング学習 pic.twitter.com/kLlE8C7eMT— おりがー@ (@takakiriba825) 2019年7月9日 課題 Int a=10; Int b=5; と代入し平均を表示する 「a=10とb=5の平均は7.5です」と画面に表示する 考察 「Int」と書いてあるがこれはtypedef int Int;が必要?とりあえず普通のintでもよいと解釈する。 「Int a=10; Int b=5; と代入し」と言っているが、「代入後aとbを使わなければならない」とは言っていない。 「平均を表示す

                    「a=10とb=5の平均は7.5です」をmain関数なしで表示する - ぬいぐるみライフ?
                  • 次期C標準 (C23) の内容が固まったらしい

                    C23については最近のC言語と、次期C標準(C23)でも軽く紹介しました。 今回、C23入りする内容が大体固まったようなので改めて紹介します。 この記事を書いている時点での最新の公開されたWorking Draftは N2912 N3047 N3054 N3096です。ただし、C2y向けの最初のドラフトN3220もあり、そちらの方が実際の内容に近いかもしれません。 内容については会議参加者の投稿も参考にしています: https://twitter.com/rcs/status/1550526425211584512 C23 now finalized! : C_Programming というわけで、C23に入る主な機能はこちらです: C23に入る主な機能 POSIXの機能の取り込み: strdup, strndup, memccpy, gmtime_r, localtime_r C++の機

                      次期C標準 (C23) の内容が固まったらしい
                    • mrubyを通じてWebAssemblyの未来を想う~新しいウェブサービスの開発課程にて | IIJ Engineers Blog

                      日本Haskellユーザーグループ(愛称 Haskell-jp)発起人の一人にして、Haskell-jpで一番のおしゃべり。 HaskellとWebAssemblyとプリキュアとポムポムプリンをこよなく愛する。 こんにちは。ブラウザ外のWebAssemblyに関心が偏りすぎて、ブラウザにおけるWebAssemblyについて聞かれると戸惑うことが多い山本悠滋です。普段はIIJ-IIの技術開発室という部署で、IIJ本体をサポートするための開発をいろいろ行ったり、WebAssemblyを応用した新しいウェブサービスの開発に取り組んでいます。 今回は、開発している「WebAssemblyを応用した新しいウェブサービス」のサンプルとして、mrubyのインタープリタをWASIに準拠したWebAssemblyファイルにコンパイルするまでの課程や、それを通じてわかった、今のWebAssemblyに足りない

                        mrubyを通じてWebAssemblyの未来を想う~新しいウェブサービスの開発課程にて | IIJ Engineers Blog
                      • Ruby Parser開発日誌 (10) - parse.y リファクタリングチャレンジ はじめました - かねこにっき

                        前回のあらすじ Ruby Parser開発日誌 (9) - RubyKaigi 2023で発表してきた ~ 世はまさに”大パーサー時代” ~ - かねこにっき RubyKaigiにいってきました。スライドや登壇時の動画は以下のリンクから参照できます。ぜひご覧ください。 rubykaigi.org parse.y リファクタリングチャレンジ "parse.y"を読んでいる時にrb_obj_hideやrb_builtin_class_name、RB_OBJ_WRITTENといった関数やマクロが出てきて驚いたことのある人は少なくないでしょう。RubyのparserではGCやRubyのObjectなどRuby本体の機能が多く使われています。それらはRubyの長い歴史のなかで洗練されてきた機能である一方、一定の御作法に従って使う必要があります。たとえばRB_OBJ_WRITEやRB_OBJ_WRIT

                          Ruby Parser開発日誌 (10) - parse.y リファクタリングチャレンジ はじめました - かねこにっき
                        • Dive Deep Redis ~ 入門から実装の確認まで - hayashier Tech Blogs

                          ——————————————————————————————————————————————————— Redis(REmote DIrectory Server)Redisは例えば以下の特徴を持つLLOOGGを元としたインメモリの非リレーショナルのデータベースです。 String, List, Hash, Set, Sorted Setに代表される豊富なデータ型シングルスレッド処理イベント駆動処理 by aeライブラリ通常RESPプロトコルによるクライアント/サーバーモデルでリクエスト/レスポンスデータは条件を満たす場合にメモリ最適化されて保存。CPUとのトレードオフRAXを利用したメモリ利用量の最適化(Redis 4.0~)この記事では、入門から始まり、実装をより意識することで深く理解することを目標としています。 以下の説明中の(*)マークは、特にVanilla Redisでの話となり

                            Dive Deep Redis ~ 入門から実装の確認まで - hayashier Tech Blogs
                          • Fuzzing Farm #4: 0-dayエクスプロイトの開発 [CVE-2022-24834]

                            著者:Dronex, ptr-yudai はじめに この記事は、Fuzzing Farmシリーズ全4章のパート4で、パート3の記事「Fuzzing Farm #3: パッチ解析とPoC開発」の続きです。 Fuzzing Farmチームでは、前回の記事で紹介したように、1-dayエクスプロイトだけでなく0-dayエクスプロイトの開発にも取り組んでいます。Fuzzing Farmシリーズ最終章では、弊社エンジニアが発見した0-dayと、そのエクスプロイト開発について解説します。 我々は1年以上前の2022年4月の段階で、CVE-2022-24834に該当するRedisの脆弱性を発見し、RCE(Remote Code Execution; 任意コマンド実行)エクスプロイトの開発を完了していました。ベンダ側も修正を急いでくれましたが、利用者側の対応に時間を要したため、前回パート3の記事から今回の投

                              Fuzzing Farm #4: 0-dayエクスプロイトの開発 [CVE-2022-24834]
                            • ハイレゾアンプの自作!超高性能DAC AK4499EQ搭載

                              ハイレゾアンプを作ってみたら音が良すぎました。 Amazon Music HD が始まって早一年。今のところ、大いに普及しているとは言えないかもしれませんが、手軽にハイレゾ音源が聴ける時代になって、そのうち作るかもくらいに考えていたハイレゾアンプの自作にようやく手をつけた形です。 そして時間はかかりましたが、ほぼ満足のいくものとなりました。 意味不明ですが、名付けて「うさぎアンプ」とします。https://amanero.com/ 自作プラシーボの効果もあるかも知れませんが、このAK4499とアンプから出てくる音は、市販の高級アンプにも全く引けを取らない良音だと感じています。 もう、価格.comや製品ページを見ても市販のアンプが欲しいとは思わなくなりました。ケースだけはかなわんな・・そんな印象しか受けないです。 タカチのケースでカスタム加工を依頼。加工は何度かあるのですが、今回初めて印刷も

                                ハイレゾアンプの自作!超高性能DAC AK4499EQ搭載
                              • ZOZOMATのクロスプラットフォーム3D - ZOZO TECH BLOG

                                ZOZOMATとは何でしょうか?オンラインで靴を購入する際に、サイズが合わないという問題を解決する仕組みです。1台のスマートフォンと紙製のZOZOMATだけで、正確に足のサイズを測れます。足をスキャンすると、高精度の3Dモデルが生成されます。最適なサイズの靴も表示されるので、すぐに靴を購入できます。 こんにちは!ZOZOテクノロジーズの@kapsy1312です。ZOZOMATプロジェクトの一員として、スキャン結果を3D空間に表示するビューの開発を担当しました。プロトタイプでは、Appleの標準3Dフレームワーク、SceneKitを使用していました。しかし、全く同じ機能とデザインをAndroidで再現するにはコストがかかるため、さらに適切なソリューションを検討しました。 この記事では、スキャン結果の3DビューをAndroidとiOSデバイス向けに開発した際の課題と解決策を説明します。プラット

                                  ZOZOMATのクロスプラットフォーム3D - ZOZO TECH BLOG
                                • TypeScript でゼロから作るパーサコンビネータ - blog.livewing.net

                                  { // ... "scripts": { "test": "jest" }, "jest": { "preset": "ts-jest", "testPathIgnorePatterns": ["<rootDir>/dist/"] }, // ... } その他 Git や ESLint などの設定は各自で行ってください。 TypeScript のおさらい JavaScript を使って開発をしているとき、こんなことを考えたことはありますでしょうか。 「この関数は文字列を返してくるけど、 undefined を返してくる可能性もあったっけ。調べるの面倒だな」 「このオブジェクトに必要なメンバは何だったっけ。調べるの面倒だな」 「また TypeError: undefined is not a function だ。どこで undefined が紛れ込んだんだ。しんどい」 そんな人は Ty

                                    TypeScript でゼロから作るパーサコンビネータ - blog.livewing.net
                                  • 【プログラミング言語速度比較】Collatz数列ベンチマークを言語別比較しよー! - 競プロメモ

                                    Collatz ベンチマーク 目次 Collatz ベンチマーク 目次 追記(2021/02/23) Collatz 数列とは やること 計測方法 ベンチマーク結果 結果表 編集履歴 感想 基本的に最速クラス 癖がある最速クラス 準最速クラス まぁまぁ早いクラス 普通クラス やや遅いクラス ビリ う 笑 言語別実装 Rust メモ化版 Rust C++ 編集前 編集後 Java Kotlin Scala Haskell CSharp Python & PyPy Crystal Golang JavaScript Fortran Ruby D 言語 Bash Swift Objective-C C 通常版 アセンブリ修正版 Bc Perl Php Vim Awk Lua Pascal Visual Basic Raku(Perl6) dc Nim Nim(uint) Cython Cytho

                                      【プログラミング言語速度比較】Collatz数列ベンチマークを言語別比較しよー! - 競プロメモ
                                    • ELF入門 - 情弱ログ

                                      C言語が書ける、アセンブラが吐き出すアセンブリコードが分かる、でもHello, worldするバイナリは何が書かれているか分からない…。というか、バイナリの実行って何?っていう疑問を解決したいバイナリ初心者のメモです。 今回はreadelfコマンドは知っていても、どんな意味がある出力なのかがいまいち分かっていなかったので、車輪の再開発で理解していこうという試みです。とりあえずreadelfに-h、-l、-Sオプションを指定した時と同じような出力ができるプログラムの作成を目指します。 まず、ELFファイルとはなんぞやという所からですが、Windowsでいうexeみたいなもんだと思います(乱暴)。ELFはExecutable and Linking Formatの略であり、例えばC言語で書かれたソースコードをコンパイルして出来た実行可能ファイルはELFファイルです。 実行可能ファイルだけでなく

                                        ELF入門 - 情弱ログ
                                      • 第5回(最終回) PHPの脆弱性 ~型混同~ | gihyo.jp

                                        はじめに いよいよ本連載も今回で最終回です。最終回ということで、近年報告件数が増加傾向にある「型混同の脆弱性」[1]を取り上げたいと思います。具体的には、2016年にPHP にて発見されたCVE-2016-3185を解説します。PHPは前回(本誌2021年5月号)も取り上げましたが、今回はそれとはまったく別の種類の脆弱性になります。その点を頭の片隅に入れつつお読みください。また補足になりますが、今回の脆弱性はすべてPHP 7.0.3で検証・解説しています。 今回の脆弱性:CVE-2016-3185 CVE-2016-3185はPHPのインタプリタ内に実装されているmake_http_soap_request関数の中に存在する型混同の脆弱性です。前回のおさらいになりますが、PHPのインタプリタ自体に脆弱性が存在した場合、不正なPHPのプログラムを解釈・実行させるとその脆弱性が発現します。 実

                                          第5回(最終回) PHPの脆弱性 ~型混同~ | gihyo.jp
                                        • Rust (1.48.0) で独自のスライス型や文字列型を定義する

                                          Rust (1.48.0) で独自のスライス型や文字列型を定義する Rust でプログラムを書くうえで、用途や制約に応じた適切な型の定義は大変重要である。 たとえば Rust ではバイト列は [u8]、 UTF-8 文字列は str、OS ネイティブのエンコーディングの文字列は std::ffi::OsStr、パス文字列は std::path::Path といったように、横着すればひとつの型で済むような様々なデータに対してそれぞれの特徴に応じた型を標準で用意している。 ときに標準ライブラリで用意された型ばかりでなく、自分で専用の型を用意したいこともある。 たとえば「相対パスのみを保持できる型」のようなものを実装したくなるかもしれない。 もちろん Rust でこれは可能なのだが、 str のような (値として利用するときは &str のように参照を使う) 可変長のスライスのような型は、定義し

                                            Rust (1.48.0) で独自のスライス型や文字列型を定義する
                                          • 【コンピュータ将棋】Apple Watchでやねうら王を動かす - select766’s diary

                                            Appleが発売しているスマートウォッチApple Watch Series 9にて、将棋AIやねうら王・ふかうら王を動作させることに成功したので報告します。 基本的には、iPhone向けのビルド方法を少し変えれば実現できました。 技術要素 以下の3要素を実現することにより、Apple Watch上で動作するやねうら王をfloodgate上で他の将棋AIと対局させることができます。 やねうら王をApple WatchのCPU向けにビルドし、SPM形式で出力 watchOSアプリを作成し、SPMを依存関係に追加し、Swift言語からやねうら王を呼び出す Macで、通信仲介用サーバを実行 SPMのビルド C++言語で実装されたやねうら王を、Apple WatchのCPU(ARMアーキテクチャ)向けにビルドし、Swift Package Manager (SPM)形式で出力します。この形式のライ

                                              【コンピュータ将棋】Apple Watchでやねうら王を動かす - select766’s diary
                                            • マジでちいさいセルフホストコンパイラ

                                              マジでちいさいセルフホストコンパイラがほしい リポジトリ:https://github.com/sozysozbot/2kmcc hsjoihs「C コンパイラ自作においてセルフホスト達成はかなり分かりやすいマイルストーン」 hsjoihs「セルフホスト、たとえば構造体がほしくなるので構造体を実装するモチベができる」 hsjoihs「しかしながら、このゴールポストは、C で C コンパイラを書かない限り達成できない」 hsjoihs「そうだ、マジで小さい『セルフホストコンパイラ』を C で書いて、『それをコンパイルできたらすごい』にしよう!!!!」 hiromi_mi さんの hanando-fukui v1.1.1 が単一 .c で 2200 行、.h に 169 行 hsjoihs「@hiromi_mi hanando-fukui ってどんな機能があります?」 hiromi_mi「可変

                                              • WASM3の末尾呼び出しVMがかしこい - Qiita

                                                (EDIT: 末尾呼び出しVMって何だ.. direct-threading VMを末尾呼び出しで実現しているのが面白いと思ったもんで...) WebAssemblyの インタプリタ であるWASM3( https://github.com/wasm3/wasm3 )が良いデザインをしていると思うメモ。 (WASM3はM3と呼ばれていたインタプリタプロジェクトが移動してきたもの。というわけでWASMのバージョン番号ではない。) かしこい所 基本的にはリポジトリの README.md に述べられている。 コンパイラの末尾呼び出し最適化を期待してシンプルに記述 WASM3のVM命令は以下のようなC言語関数で実装される: d_m3OpDef (GetGlobal) // ★ これはマクロで次節のようなプロトタイプに展開される { // ★ 次の2行が実際の処理 i64 * global = im

                                                  WASM3の末尾呼び出しVMがかしこい - Qiita
                                                • 最強のC++実装TOMLパーサーが完成した - in neuro

                                                  ここ1, 2週間費やしていた作業が完了し、めでたくtoml11のバージョン2.0.0をリリースした。 github.com このバージョンアップで、 コードが凄まじく美しくなり、 エラーメッセージが最強になり、 TOML v0.5.0 (最新) に対応した。 せっかくなのでこの記事で何をしたのか書いていこうと思う。宣伝ついでに、自分でパーサを書く人(最近はフルスクラッチ自作コンパイラが流行っているので)の一助になれば良いのだが。 TOML 0.5.0への対応 TOML v0.5.0では、それなりの数のアップデートが入った。toml11 v2.0.0ではその全てに対応している。順を追って説明していこう。 dotted keys まず、以前からネストされたテーブルの名前は.で繋げていた。 [a] n = 10 [a.b] # <- これ m = 20 # {"a" : {"n":10, "b"

                                                    最強のC++実装TOMLパーサーが完成した - in neuro
                                                  • macOS で動かす C コンパイラを C で作った - kawasin73のブログ

                                                    LISENCE と LICENSE 、正しいスペルがどっちかわからない。どうも、かわしんです。正解は LICENSE です。 僕は、よく MIT ライセンスを使います。気が向いたら WTFPL( Do What The F*ck You Want To Public License )を使います。趣がありますよね。 さて、僕の実家は山口にあるのですが、年末の帰省のタイミングで C コンパイラを作りました。正確には去年の 12月 30 日の東京発博多行き新幹線のぞみ号に乗った時から、今年の 1 月 4 日の夜までです。新幹線は片道5時間くらい乗ってるので開発にうってつけです。本当は東京に戻ってきたらやめると決めてたんですが、キリが悪かったので1日延長して昨日までやってました。 去年の夏あたりに Rui Ueyama さんが作った 9cc が話題になり、僕もいつか作ってみたいなと思っていました

                                                      macOS で動かす C コンパイラを C で作った - kawasin73のブログ
                                                    • 自作Cコンパイラで(x64 ABIと戦って)セルフホストに成功した話 - Qiita

                                                      1.はじめに これは Mobility Technologies Advent Calendar 2020 の 15日目の記事です。 Mobility Technologies (MoT) は今年の4月に旧JapanTaxi社と旧DeNA Automotive が事業統合してできた会社です。GOという配車アプリを提供しています。タクシー起点の交通リアルテック×AI大活用でサービス開発していますので、よろしければぜひMoT技術ブログを御覧ください! 明日は @tstomoki の 「リモートワークで自転車に乗り始めてインスタグラマーになった話」 です。 これは何 この記事は、C言語のコンパイラ開発の概要と、その中でもそれなりに手ごわかった x64 の ABI (呼び出し規約: Application Binary Interface) について一部を説明したものです。 少々ポエムも含まれてお

                                                        自作Cコンパイラで(x64 ABIと戦って)セルフホストに成功した話 - Qiita
                                                      • WebAssemblyの多倍長演算ではCarryの扱いが重要 それ以上速くするにはclangの_Extlntに期待

                                                        Kernel/VM探検隊はカーネルや仮想マシンなどを代表とした、低レイヤーな話題でワイワイ盛り上がるマニアックな勉強会です。光成氏は、WebAssemblyにおける多倍長演算の実装について発表しました。全2回。後半は、WebAssemblyでの実装とclangの「_Extlnt」機能について。前回はこちら。 WebAssemblyではどう計算するか 光成滋生氏(以下、光成):本題に戻ってWebAssemblyなのですが、レジスタは32bitと64bitのレジスタをもっています。加算は64bit+64bitで、結果は64bitになります。Carryはもっていません。乗算は32bit×32bitの64bitです。128bitに出力する命令はありません。素直なCでできる範囲しかありません。詳しい資料はここに載っています。 Carry演算をエミュレートしないといけません。どうやってやるかですが、や

                                                          WebAssemblyの多倍長演算ではCarryの扱いが重要 それ以上速くするにはclangの_Extlntに期待
                                                        • Python処理系入門 〜1 + 1 で学ぶ処理系解読の基礎〜 - yigarashiのブログ

                                                          この記事は CAMPHOR- Advent Calendar 2018 4日目の記事です. 1. はじめに プログラミング言語 Python は汎用の動的型付き言語で,機械学習や Web 開発を中心に幅広く使われています.特にここ数年の Python 人気は凄まじいものがあり,某大学生協の本屋では,プログラミング系の平積みコーナーが一面Python 関連書籍で埋め尽くされています.所属しているコミュニティの関係でプログラミング初心者の学生にもよく会うのですが,第一言語が Python という方が非常に多く,まさに猫も杓子も Python といった状況です. そんなわけで,人々がこぞって Python でプログラムを書いているわけですが,「Python 自体がプログラムである」という事実に目を向けたことのある人は非常に少ないと思います.みなさんが Python のプログラムを書いて実行する時

                                                            Python処理系入門 〜1 + 1 で学ぶ処理系解読の基礎〜 - yigarashiのブログ
                                                          • C言語でクロージャーを実現したい、あるいは実行時のコード生成によるクロージャー | 雑記帳

                                                            導入:クロージャーについて 昨今ではクロージャーを使えるプログラミング言語は珍しくなくなった。クロージャーとは、関数の引数だけではなく、外のスコープにある変数を参照できる関数のことである。 例えば、次のJavaScriptコードでは、関数を返す関数 f を定義している。 f の中で定義された無名関数は、外側の変数 x を参照できている。 function f(x) { return function(y) { return x + y; }; } JavaScriptではネストした関数を使わなくても、bindメソッドによって同等の処理を記述することができる: function g(x, y) { return x + y; } function f(x) { return g.bind(null, x); // gの第1引数を束縛する } 残念ながらC言語にはクロージャーはない。関数の中に

                                                            • 『C言語のポインタ関連、これ全部理解できれば実務で困ることはあんまりない』⇒プログラミング経験者がつい熱く語ってしまうポインタ

                                                              ツーゼⅢ @zuse_three @7_rate うおおおおおおvoid (*signal(int sig, void (*func)(int))) (int)おおおおおおおおおおお typedefうおおおおおおおおお!!!! 2023-04-28 07:55:29

                                                                『C言語のポインタ関連、これ全部理解できれば実務で困ることはあんまりない』⇒プログラミング経験者がつい熱く語ってしまうポインタ
                                                              • 文字列少数点数表記を IEEE754 倍精度浮動小数点数にエンコードする方法|Sukesan1984

                                                                42tokyoというパリ発のエンジニア養成機関で学んでいるのですが、表題の関数が課題で必要になったため、絶対に将来忘れる気がしてならないので自分への備忘録として書き記しておきたいと思います 恥ずかしながら、今まであまりちゃんと浮動小数点数について考えたことがなく、かなり初心者なので、間違っていることがあるかもしれないのですが、そのときはご指摘いただけると嬉しいです こちらの記事を多分に参考にさせていただいています 何度か読み直してみましたが、大変わかりにくくてすみません・・・ 自分でも読んでてよくわからなくなりそうになります 都度、参考実装へのリンクを貼っているのでもしか、興味ある方いればそちらを見てもらったほうが早いかもしれません ソースコードはこちら 動機まず、表題の処理が何故必要なのか?というと42の課題で、Raytracingに関する課題があり、その中でファイルから物体の位置やら色

                                                                  文字列少数点数表記を IEEE754 倍精度浮動小数点数にエンコードする方法|Sukesan1984
                                                                • RISC-V OSを作ろう (2) ~ タスク切り替え - VA Linux エンジニアブログ

                                                                  はじめに マルチタスク RISC-Vアーキテクチャにおけるタスクコンテキスト 関数呼び出し タスク切り替え関数の方針 タスク切り替え関数を実装しよう タスク切り替え タスクの初期化 最初のタスクの起動 デバッグ文 タスク切り替え関数を動かしてみよう タスクスケジューラの用意 タスクスケジューラを動かしてみよう 最後に おまけ 執筆者 : 高橋 浩和 はじめに 前回はbootプログラムが動くところまできました。今回は、複数のタスクが切り替わりながら並列動作できる仕組みを作ります。 まだ割り込み機能は無いので、タスクからスケジューラを明示的に呼び出すことにより、別のタスクへ切り替えてもらうという仕組みにします。 マルチタスク それぞれのタスクは、あたかも自分がCPUを専有しているかのようにプログラムを実行することができます。 各タスクに仮想的なCPUを割り当てることにより実現します。仮想的なC

                                                                    RISC-V OSを作ろう (2) ~ タスク切り替え - VA Linux エンジニアブログ
                                                                  • 名前空間(C++) - 超初心者向けプログラミング入門

                                                                    名前空間とは C++では名前空間という概念が導入されています。 名前空間は、名前の衝突(同じ名前を付けることで呼び出し先が曖昧になること)を避けるために有効に働きます。 例えば、「stdio.h」には「remove関数」が存在します。 そのため、プログラマが「remove」という名前の自作関数を作ると、stdio.hにあるremove関数なのか自作関数のremove関数なのか、見分けがつかなくなります。 C言語では同じ名前の関数を作ることはできませんが、C++にはオーバーロードという機能があるため、名前が同じでも引数が違えば定義は可能です。 しかし、標準関数なのか自作関数なのか見分けが付きにくくなるので、可能ならば同じ名前の関数は避けたほうが良いでしょう。 (関数のオーバーロードについては関数の新機能で説明します) 名前空間は、関数などの「名前」が存在する「住所」を定義するようなものです。

                                                                    • 絵で見てわかるC言語入門 - 第1章 - w_o’s diary

                                                                      さて、C言語を使い慣れた人には常識ですが、C言語初心者にとって少し難しいのが、変数の宣言です。 例えば、初心者にとって、関数ポインタの配列へのポインタを返す関数の宣言を書くのはあまり簡単ではありません。 C言語の初心者には、以下のようなコードを書くのは少し難しく、また、C言語にあまり慣れていない人は、typedefなどを使ってしまいがちです。 typedef int (*func_t)(int); typedef func_t func_arr_t[10]; extern func_arr_t *x[40]; int (*(*x[40])[10])(int); int (*(*func(int i))[10])(int) { return x[i]; } そのようなことでは、いつまでたってもC言語の初心者を脱出することはできません。この章では、変数の宣言について詳しく勉強することにしましょ

                                                                        絵で見てわかるC言語入門 - 第1章 - w_o’s diary
                                                                      • SQLiteについて

                                                                        最初に 多少なりともプログラムを齧(かじ)った事のある人なら、SQLite(エスキューライト)を知らない方は居ないと思います。 ウィキペディアによれば、SQLite は、パブリックドメインの軽量な関係データベース管理システム (RDBMS) であると記載されています。 私も10年以上前から利用しており、下記の画像は SQLite で作成した競馬データベースから、データを読み込んでレース結果を表示させたものです。 私は、JRA-VAN で、競馬予想ソフトや競馬のデータベースを公開しておりますので、Microsoft Access や SQLite、SQLServer との付き合いは長いです。 上記のソフト(馬ちゃんの馬吉 SQLite版)は、JRA-VAN の「ソフト開発サポート」→ 「プログラミングパーツ・開発支援ツール提供コーナー」 にある「馬吉ソース公開版」を、SQLite で作成した

                                                                        • Ruby Parser開発日誌 (13) - Ruby Parser Roadmapをつくった - かねこにっき

                                                                          Ruby Parser Roadmapをつくったのでご紹介します。 docs.google.com 大きな2つのゴール 現在注力している領域が2つあります。ひとつはLSPのサポート(図中では青色)、もうひとつはparse.yをより平易にするための取り組みです(図中では赤色)。またその他のゴールとしてUniversal Parserがあり、さらに依存関係はないものの取り組みたいと思っているテーマがいつかあります。 なお図中の矢印は矢印の元から先に向けて依存があることを示しています。例えば"LSP"というゴールは"Delete parser level optimization"と"User friendly node structure"という2つに依存しています。図中の紫色の部分は2つの注力領域両方が依存しているものを表しています。 LSP 一つ目のゴールはLSPなどの各種ツールで使いやす

                                                                            Ruby Parser開発日誌 (13) - Ruby Parser Roadmapをつくった - かねこにっき
                                                                          • mrubyとGNU bisonでコマンドラインパーサーを作る - ぶていのログでぶログ

                                                                            仰々しいタイトルだけど、reddish-shellのパーサー部分のメモ。 いまは覚えているけど、数カ月後の自分が覚えている自信がないのでメモっておこうと思った次第…。 ここで解説する内容は、現状の実装に即したもので数カ月後には変わっているかもしれない。 また、私の勉強不足で間違っている/最適ではない部分があるかもしれないのでご容赦。。 この記事では、mrubyやGNU bisonについての詳しい説明はしないので私の過去記事を読むかググってください。 純粋パーサー(再入可能パーサー/リエントラントパーサー) bisonの定義部に %define api.pure (古いbisonでは %pure-parser ) を定義すると純粋パーサーとして定義できる。 これを定義するとパーサーとのやり取りをするyylval変数がグローバル変数から、局所変数になる。 mrubyから呼び出す関係で、グローバ

                                                                              mrubyとGNU bisonでコマンドラインパーサーを作る - ぶていのログでぶログ
                                                                            • 数多あるプログラミング言語の中で、基礎力をつけるために最適な言語はどれでしょうか?やはりC言語ですか? | mond

                                                                              数多あるプログラミング言語の中で、基礎力をつけるために最適な言語はどれでしょうか?やはりC言語ですか? 基礎力を付けるのにC言語が向いているかという問に対しては、敢えて「はい」と言いたいと思います。もちろん他の言語でも同様の知識を得る事はできますが、C言語を知った上で JavaScript や Python や Ruby を触れる人と、C言語を知らずにそれらの言語を触る人ではコンピュータやプログラミング言語の仕組みの理解度が大きく異なります。 メモリ構造 スタック・ヒープ GC 言語処理系の実装に必要なこれらこれらを知っているだけで「何故あのプログラミング言語のあの挙動は遅いのか」や「あの言語は凄そうに見えないけど実は凄い事をやっている」といった理解が楽になります。また、なぜ多くのプログラミング言語はC言語で開発されているのか、についても理解できる様になります。 例えば、動的型付型言語の配

                                                                                数多あるプログラミング言語の中で、基礎力をつけるために最適な言語はどれでしょうか?やはりC言語ですか? | mond
                                                                              1