週に一回アレしてアレするらしき記事:十五回目 下書きしたはいいけど公開してなかったPart1 前回「週アレ(14) スタックマシンとレジスタマシン」ではVMにおける計算モデルの話でした 今回はレジスタマシンの方についてもう少しだけ突っ込んで見ていこうかと思います 主に速度的な観点が1つと,もう一つはレジスタマシンでの関数呼び出し周りの話 どちらかというと私が書きたいだけの内容なので,あまり有意義ではないかもしれないです
週に一回アレしてアレするらしき記事:十五回目 下書きしたはいいけど公開してなかったPart1 前回「週アレ(14) スタックマシンとレジスタマシン」ではVMにおける計算モデルの話でした 今回はレジスタマシンの方についてもう少しだけ突っ込んで見ていこうかと思います 主に速度的な観点が1つと,もう一つはレジスタマシンでの関数呼び出し周りの話 どちらかというと私が書きたいだけの内容なので,あまり有意義ではないかもしれないです
144labの入江田です。 今回TinyGoという素敵なプロダクトを試してみました。 TinyGoとは TinyGoは本家Go言語の組み込み向けのサブセット版。 本家Go言語はPOSIX-OSに対する機能依存が大きく、リッチなランタイムを持っています。その為、本来はOSを持たない組み込み用途には不向きでした。 TinyGoはPOSIX-OSに依存する機能を簡易的な実装で代用しつつLLVM(コンパイラを作る為のフレームワーク)を使って組み込み向けアーキテクチャをサポートするGo言語のコンパイラです。 つまりサポートするCPUアーキテクチャはLLVMがサポートするものを前提にしています。 リポジトリ https://github.com/tinygo-org/tinygo ドキュメント https://tinygo.org/ サポートアーキテクチャ ARMのCortex-M0系 WebAsse
この記事は、Go3 Advent Calendar 2018 の8日目の記事です。 7日目は @codehex さんによる「Go でアプリケーションとクライアントのミドルウェアを作成する方法知ってますか?」でした。 本日はネタ全開でお送りいたします。 Disclaimer(免責事項) はじめに言い訳というか、これを書いた経緯というか。 プログラミング言語をdisる人をdisる芸を見たいですね! — yet another (@Maki_Daisuke) 2018年10月11日 というツイートをいたしまして、言った手前自分でやるか、と思い立った次第です。 なので、ネタとしてお楽しみください。 なお、炎上した場合にも、それすらもネタとして楽しむ所存ですのでアシカラズ。 それでは、いってみましょう。 Go言語がイケてない…だ…と……? Go言語はイケてない言語としてよくdisられているが、その中
新たな歴史の1ページ~Oracle Code One 2018現地レポート 【Oracle Code Oneレポート】Oracleが開発中の仮想マシン「GraalVM」で何ができるか 2018年10月22日から25日にかけての4日間、米サンフランシスコのMoscone CenterにおいてOracle主催の開発者向けイベント「Oracle Code One 2018」が開催されました。これは、これまでは「JavaOne Conference」として開催されていたイベントの後継となるものです。名称が変更された背景には、対象となる技術の裾野を広げてエンジニア同士のコラボレーションを促進しようという目的があります。多言語対応という時代の流れを取り入れた形と言えます。 Oracle自身、多言語対応の鍵となるさまざま技術を開発していますが、その1つに「GraalVM」があります。これはJava技術を
Firefoxの開発者であるMike Hommey氏は9月12日(フランス時間)、「glandium.org ≫ Blog Archive ≫ Firefox is now built with clang LTO on all* platforms」において、次のナイトリーからTier-1プラットフォームのFirefoxすべてがLLVM Clangでビルドされることになると伝えた。これらビルドではLTO (Link-Time Optimization; リンク時最適化)が有効にされており、パフォーマンスが向上すると説明がある。なお、WindowsとLinuxではPGO (Profile-Guided Optimization; プロファイルに基づく最適化)も有効になっている。 特にLTOを有効にしたLLVM ClangビルドバイナリはLinuxで大きなパフォーマンスの改善を示し、PGOを
最近の投稿 問題: 積み木を10個積み上げるのにかかる時間は 2020/8/20 木曜日 Google の G Suit Team から “[Action Required] Remove internal links to the G Suite Domain Contact page for your organization” ていうメールが来た 2020/8/14 金曜日 NZXT H1 と ROG STRIX B550-I GAMING で組んでみた 2020/7/17 金曜日 花粉症対策2019 2019/3/16 土曜日 マルチディスプレイ時のDisplayPort問題を何とかしてみた 2019/1/12 土曜日 REALFORCEソフトウェアがインストールできない(解決済) 2018/12/6 木曜日 GeForce RTX 2080 Founders Edition を買
Android Runtime 次いで,アプリケーションの実行環境「Android Runtime」を解説する。Android Runtimeは,仮想マシン「Dalvik VM」と,基本的なAPIを提供するコア・ライブラリで構成される。 Androidのすべてのアプリケーションは,Dalvik VM上で動作する(図4)。Dalvik VMは,Java VMと同様,メモリー管理をガベージ・コレクタ*が担当している。開発者がメモリーの確保と解放を明示的に実行しないでも,メモリー・リークによる深刻なシステム破壊を防いでいる。 加えて,JavaからC/C++を呼び出すAPIのJNI(Java Native Interface)にも対応している。CやC++で書かれたネイティブのコードが実行可能となっている。 Dalvik VMのアーキテクチャは,“レジスタ・ベース”を採用している。レジスタ・ベースは
コラム スタック・ベースのVMとレジスタ・ベースのVM VM(Virtual Machine)とは,仮想マシンの略です.通常はハードウェアのCPUが機械語を解釈して実行しますが,仮想マシンは,CPUを模したソフトウェアが機械語を解釈して実行します.当然,実行速度が遅くなるというデメリットがありますが,ハードウェア・アーキテクチャとは異なるアーキテクチャで書かれたプログラムを実行できるなどのメリットがあります. VMには,スタック・ベースのVMと,レジスタ・ベースのVMがあります.まず簡単にスタックとレジスタの動作原理を説明します. スタックとは,FILO(First In Last Out:先入れ後出し)でデータを管理(格納/取り出し)するデータ構造のことです.スタック領域は,一般的にメモリ上に確保されます. レジスタとは,CPUの内部で一時的に計算結果を保存する領域です.一定のビット数
先日のRubyKaigi 2017のLTではLLVMベースのCRuby向けJITコンパイラLLRBの話をしました。 5分はちょっとJITの話をするには短かかったですね。 LLRBをふまえた、Cのコード生成への軌道修正 さて、上記の資料にある通り、CRubyのJITにおいてはメインの高速化対象が既に存在するCのコードになるため、 開発の早い段階でパフォーマンスにインパクトを持てるとすればLLVM Passの順番を変えるくらいで、 LLVM IRを直接生成しても最適化上のメリットがほとんどないのでその部分はMJIT と同じくCのコードを生成するように変更したい、という話をした*1。 で、LLRBはC拡張として作るべくちょっと不思議な努力をいろいろやっており、 それらの設計はやってみた結果(コアに直接変更を加えるのに比べ)デメリットの方が大きいと思ったので、 LLRBの失敗を全て生かしつつ、今回
今回は JVM, .NET といった仮想マシン(VM)についての記事です。 最初、 .NET と仮想マシンの説明のスライドを作っていたのですが、 最近 JVM と BEAM を少し調べて興味がでてきたので、合わせて VM の話としました。 そうすると今度は、スクリプト言語や LLVM の話も外せないなと思って足したら、結構な大作になってしまいました。 JVM に絞った話では、以下の記事にも説明を書いているので、こちらもご覧ください。 JDK のインストール(Windows)と Java 関連用語の説明 | プログラマーズ雑記帳 スライド版です。 ここからブログ版です。 はじめに 仮想マシンといっても、 OS のエミュレーターのようなものではなく、 JVM といったプロセス仮想マシンについてのお話です。 JVM 、 .NET Framework など最近、この仮想マシン(VM)のシェアが大幅
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く