バイトコード (bytecode) は、バイト指向の、中間表現のコードすなわち中間コードの総称である。バイトコードという名前は命令の構成がバイト指向であること、すなわち命令長がバイト可変長であったり、命令中のフィールドの区切りがビット単位でなくバイト単位になっているといったことから来ている。特にJavaの場合オペコードが1バイトである(Javaバイトコードの記事を参照)。しかし、仮想マシンの機械語をバイトコードと呼ぶことがJavaで広く一般的になったことから、前述のようなバイト指向でなくともバイトコードと呼んでいることも多い。バイト単位でなくビット単位の場合は、ビットコードとも呼ばれる。ワード指向のためにワードコードという語を使っている例も見られる。 存在意義[編集] バイトコードを用いる方式の利点は、ソースコードを直接解釈するインタプリタと同等の移植性を確保した上での、インタプリタのパフ
はじめに この記事は「ほんのちょっとだけRubyが動くVMをRubyで実装してみて、Rubyが実行される仕組みを理解しよう」という趣旨のゆるふわな記事です。 こんなコードを実行できるVMを実装します。 この記事ではRuby 2.3.3を使います。 注意点 本記事にでてくる用語は厳密な定義とかは気にせずゆるくふんわりと使ってます VMの実装はRubyを使うので結構ずるい感じです 構文解析、コンパイルはしません クラス定義、メソッド探索、コントロールフレームなどの概念はでてきません なのでRubyを題材にしてますが、Rubyの特徴的な機能にはあまり触れていません 対象読者 Rubyが好き 普段Webプログラミングとかしてる プログラミング言語の処理系としてのVMが気になる まえおき VMとは RubyはJavaやErlangなどと同じようにRuby用のVM(仮想マシン)上で実行されます。 C言
Welcome, adventurer!¶ This is the collection of easy to read (ELI5) articles as well as in-depth knowledge such as VM internals, memory layout, opcodes etc. The project is work in progress, so come back soon! Github repository for pages https://github.com/kvakvs/beam-wisdoms Latest¶ 2019-03-03 Binary match opcodes added to the instruction list 2018-12-30 Try/catch opcodes added to the instruction
チューリングの「計算可能数について──決定問題への応用」(1936年)において提示された[2]。同様なものを同年にエミール・ポスト (Emil Post) も独立に発表している[3]。構想の理由、動機についてはポストの論文が明確だが、機械自体に関する記述はチューリングの論文が詳細である。次いで、同時代に提示された他の計算モデルも計算可能性の理論からは同等であることが確認され、チューリング=チャーチのテーゼはそれらを「計算可能」の定義とすることを提唱した。 ここでは非形式的(直感的)に述べる。理論的には形式的に述べる必要がある。 チューリングマシンには、いわゆるハードウェアに相当するものとして、 その表面に記号を読み書きできるテープ。長さは無制限(必要になれば順番にいくらでも先にシークできる[注 1])とする テープに記号を読み書きするヘッド ヘッドによる読み書きと、テープの左右へのシークを
システム開発がますます複雑化していく中、エンジニアには、テクノロジを理解して、さまざまな場面に適した選択が求められます。本連載では、Javaと.NETの基本的な仕組みから最新の傾向や技術などについて、数回に分けて紹介します いまさら聞けない、Javaと.NETの違い 今日、アプリケーション開発・実行のプラットフォームは、大きく2つのテクノロジに収束しているといえるでしょう。 1つは、エンタープライズ・アプリケーション開発の定番ともいえる「Java」です。 実行環境、開発環境の無償提供、OSを自由に選べること、フレームワークや開発環境が充実していることが人気の理由です。大規模アプリケーションの採用実績も多く、ほかのプラットフォームをリードしてきました。 もう1つは、マイクロソフトが発表した「Microsoft.NET」構想に基づいた「.NET」です。 プラットフォームが主にWindowsに制
IKVM.NET is an implementation of Java for Mono and the Microsoft .NET Framework. It includes the following components: A Java Virtual Machine implemented in .NET A .NET implementation of the Java class libraries Tools that enable Java and .NET interoperability Read more about what you can do with IKVM.NET.
今回は JVM, .NET といった仮想マシン(VM)についての記事です。 最初、 .NET と仮想マシンの説明のスライドを作っていたのですが、 最近 JVM と BEAM を少し調べて興味がでてきたので、合わせて VM の話としました。 そうすると今度は、スクリプト言語や LLVM の話も外せないなと思って足したら、結構な大作になってしまいました。 JVM に絞った話では、以下の記事にも説明を書いているので、こちらもご覧ください。 JDK のインストール(Windows)と Java 関連用語の説明 | プログラマーズ雑記帳 スライド版です。 ここからブログ版です。 はじめに 仮想マシンといっても、 OS のエミュレーターのようなものではなく、 JVM といったプロセス仮想マシンについてのお話です。 JVM 、 .NET Framework など最近、この仮想マシン(VM)のシェアが大幅
以前、Raspberry Pi 2 で .NET Core Runtime (CoreCLR) をビルドしようとして挫折しましたが、x64 な Ubuntu を使えば問題なくビルドと実行が出来たので、内容をメモ程度に残しておきます。 基本的な手順は CoreCLR の GitHub Wiki にまとまっています。この通りに動かすのが目的です。 Building and Running CoreCLR on Linux · dotnet/coreclr Wiki · GitHub 実行するための、大まかな手順をまとめておきます。途中で Visual Studio 2013 が必須になったりするので、まだまだ粗削りという感じがしますね。 CoreCLR を Ubuntu 上でビルド mscorlib.dll と CoreFX を Windows でビルド NuGet からパッケージをダウンロー
いまさら感が漂うが、CoreCLRをOS XとUbuntuでビルドしてみた。サクサクとビルドできるから皆さんもぜひビルドしてみよう! 連載目次 今回はマイクロソフトが開発中の新たなアプリ開発/実行フレームワークである.NET Coreの実行エンジン「CoreCLR」をビルドしてみる。そもそも、「CoreCLRをビルドしてみよう」と思ったのははるか昔のことなのだが(CoreCLRがGitHubで公開された直後くらいだから2月の頭だ……)、ものぐさな体質だったりとか、当初はWindowsでも日本語環境ではそのままではビルドできなかったりなどの原因で今ごろになってこの日記を書いているという次第である(むしろ、ビルドできないのを日記にすべきという気がするのだが)。 UbuntuでのCoreCLRのビルドについては、本サイトでもお世話になっている「しばやん」氏のブログ記事「.NET Core Run
共通言語ランタイム (英: Common Language Runtime, CLR) とは、.NET Frameworkアプリケーションを実行するための仮想機械で、共通言語基盤 (CLI) のマイクロソフト自身による実装。 .NET Framework 1.x - 4.x で使用されている CLR は Windows 上のみで動作する。.NET CoreはMITライセンスのオープンソースになり、CoreCLRはWindows、macOS、Linux、FreeBSD で動作する[1]。.NET 5以降は.NET Runtime[2]と呼ばれるようになり、.NET 6では実行環境としてAndroidやiOSのサポートも加わった[3]。 CLRは、共通中間言語 (CIL) と呼ばれる、プログラミング言語や環境に依存しない中間言語(中間表現)を解釈する。CILは実行時にJITコンパイラによって機
Send feedback Create a VM with a custom machine type Stay organized with collections Save and categorize content based on your preferences. Compute Engine offers predefined machine types that you can use when you create a VM instance. A predefined machine type has a preset number of vCPUs and amount of memory, and is charged at a set price. If predefined VMs don't meet your needs, you can create a
HHVM Plans To Integrate LLVM This Year Written by Michael Larabel in LLVM on 17 February 2015 at 10:04 PM EST. Add A Comment Coming soon is the HHVM 3.6 release for making PHP even faster and Facebook's Hack derivative even better, but further out into 2015 are even more exciting improvements. Josh Watzman at Facebook wrote about changes for the upcoming release of HHVM 3.6 for Hack and PHP along
Send feedback Machine families resource and comparison guide Stay organized with collections Save and categorize content based on your preferences. This document describes the machine families, machine series, and machine types that you can choose from to create a virtual machine (VM) instance or bare metal instance with the resources that you need. When you create a compute instance, you select a
HipHop Virtual Machine (HHVM) is an open-source virtual machine based on just-in-time (JIT) compilation that serves as an execution engine for the Hack programming language. By using the principle of JIT compilation, Hack code is first transformed into intermediate HipHop bytecode (HHBC), which is then dynamically translated into x86-64 machine code, optimized, and natively executed.[7][8] This co
Send feedback Datalab shutdown Stay organized with collections Save and categorize content based on your preferences. On September 2, 2022, Datalab was deprecated and the ability to create new Datalab notebooks was removed. On September 29, 2023, Datalab was officially shut down. Vertex AI Workbench provides a notebook-based environment that offers capabilities beyond Datalab. We recommend that yo
LLVM(エルエルヴィーエム、 またはエルエルブイエム)とは、コンパイル時、リンク時、実行時などあらゆる時点でプログラムを最適化するよう設計された、任意のプログラミング言語に対応可能なコンパイラ基盤である。当初は、LLVMの名称の由来は、Low Level Virtual Machine (低水準仮想機械) の略であるとしていたが[3]、現在は、何の頭文字でもないとしている[4]。 LLVMは、プラットフォームに依存しない中間表現であるLLVM-IRを生成し、LLVM-IRを特定のマシンの機械語などに変換する。LLVM-IRの段階で、言語やプラットフォームとは独立した最適化を行う。この方法によってLLVMは言語からもアーキテクチャからも独立しており、それぞれに特化した、プログラミング言語固有のモジュールと、マシン向けコード生成部を用意することにより様々な言語アーキテクチャーに対応する。LL
A JavaScript engine is a software component that executes JavaScript code. The first JavaScript engines were mere interpreters, but all relevant modern engines use just-in-time compilation for improved performance.[1] JavaScript engines are typically developed by web browser vendors, and every major browser has one. In a browser, the JavaScript engine runs in concert with the rendering engine via
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く