Open4
DartVMを勉強するスレ
DartVMのドキュメント
内容が濃く、作者のプロフィール上Google Dartチームに所属するコンパイラ関連のエンジニアで信憑性は高い。
作成者
Dart VM
source code -> binary code -> DartVM -> machine code
の順にビルドされるっぽい
Swiftのコンパイル手順
サンプルプログラム
main.swift
print("Hello world!")
print
はSwiftr標準ライブラリの一つ。
標準ライブラリは、「ベース層」を提供する。
Foundation
フレームワークを使用すると余分な機能を与える。
コンパイル
swiftc コマンドでコンパイル
# 'main.swift'を`main`バイナリーファイルにコンパイル
swiftc main.swift
## `main`を実行し、"Hello world!"を出力させる
./main
switfc
コマンドを使用することにより、Swift compilerを使える。実行するとソースファイルを実行可能なバイナリ実行ファイルにコンパイルする。(マシンコードに変換)
参考文献
Swift Compilerの公式ドキュメント
binary file
が作成されるか不明。
DartVMの場合、binary fileが書かれている
If you are interested in Kernel format and its VM specific usage, then you can use pkg/vm/bin/gen_kernel.dart to produce a Kernel binary file from Dart source. Resulting binary can then be dumped using pkg/vm/bin/dump_kernel.dart.
引用元: Introduction to Dart VM
記事を軽く読み、なんとなくのロジック考察(根拠がないため、考察の域)
コンパイル時
- sourcee code -> binary codeに変換
- binary codeをDartVMに保存する(binary fileを作成する)
ビルド時
- binary file -> binary -> machine codeに変換
- Flutter engineが
machine code A
やmachine code B
、machine code C
などのmachine codeのイベントループを決める