この記事は言語実装のカレンダー | Advent Calendar 2021 - Qiita https://qiita.com/advent-calendar/2021/lang_dev の4日目の記事です。 はじめに 昔、アセンブリ言語のみから出発し、GC・継続・オブジェクトシステムなどを持つ比較的高級な言語までブートストラップするということをやりました。いつか再挑戦してみたいと思っていて、正月休みにやりましたら思いのほか動くものになりましたが、死蔵させたまま1年経ってしまいました。勿体無いのでこの機会に紹介して供養します。 前回作ったAmberという処理系はこちら リポジトリ: https://github.com/nineties/amber 今回はアセンブリ言語じゃなく ELFファイルの手書き から出発してみたいと思います。ただのお遊びで、そんなことしても役には立ちません。が、計
Forth思考 ―問題解決のための言語と哲学―¶ レオ・ブロディー(Leo Brodie) 著 Forthの発明者チャールズ・H・ムーア(Charles H. Moore)やForth思想家達へのインタビューを掲載! 著者によるイラスト付き! ©1984, 1994, and 2004 by Leo Brodie, preprint version 1.0 Attribution-NonCommercial-ShareAlike 2.0 You are free: to copy, distribute, display, and perform the work to make derivative works Under the following conditions: Attribution. You must give the original author credit. No
Threaded Code(翻訳) Threaded Code(翻訳) スレッデッドコードは何に効果的か? スレッデッドコードとは何か? スレッディング技法 間接スレッデッドコード Forthと直接スレッディング トークンスレッデッドコード その他の用語 どのようにスレッデッドコードを移植可能に実装するか? 値としてのGNU Cのラベル 継続渡しスタイル スイッチスレッディング コールスレッディング 歴史 参考文献 原文 : http://www.complang.tuwien.ac.at/forth/threaded-code.htmlを翻訳したサイトがあったのだが、いつの間にかなくなった。仕方ないので、自家翻訳する。 追記:(ほとんど訳した後に、Internet archiveがあることに気がついた。私が以前見た訳文は、Threaded Code。翻訳の質はこちらの方が上) スレッデッ
はい。今日も新たな言語に挑戦してみます。前回は、s kだけで全部出来ちゃうよ〜という純粋関数型言語Unlambdaでしたが、今回はもうちょっと高級に攻めてみたいと思います。 今日の言語はForth。噂によると相当早い言語らしい。なんか聞いたことがあったけど、どんな言語かは知らなかったので謎を追っていきます。処理系はgforthを使います。 Hello, Forth World!! とりあえず、Hello, world。 ." Hello, Forth World!!" Hello, Forth World!! okドットでprint。文字列の場合は、ドットと文字列の間はスペースは開けちゃダメらしい。 Hello, worldは謎が多いので次へ行きます。 (追記:突っ込みを頂きました。 ." という関数みたい。) 足し算 高級過ぎたので、もうちょっと低レベルに足し算行きます。 1 1 +なん
IMMEDIATEというワードは、通常は、実行状態で利用される。このワード自体というよりも、このワードを実行したときに他のワードが被る効果が重要である。 IMMEDIATEとは、英語で、「間を置かない」とか「直接の」、「即時の」というような意味である。このワードを実行すると、その直前に定義された実行可能ワード — 通常はコロン定義である — が性質を変える。そのような性質の変わったワードはIMMEDIATE(イミディエット)ワードとも呼ばれる。どのように変わるかというと、コンパイル状態でも実行されるワードへと変わるのである。 通常のワード、つまり、IMMEDIATE指定されていないワードは、コンパイル状態で、つまり、何かのワードの定義の中で、その名前を書くと、そこに呼び出しがコンパイルされることになる(原則的コンピレーション・セマンティクス)。これに対して、IMMEDIATEワードは、定義
逐次拡張型インタラクティブ開発環境を作成しました。iMops (アイ・モップス)という名前です。無料ソフトウェアです。 ここからダウンロードできます。現在のバージョンは2.23です(2022/2/5)。 Macintoshコンピュータ(MacOS[X])専用ですが、相当程度最適化されたx86-64マシンコードを生成します。インタラクティブに一語一語(=各関数毎に)コンパイル-解釈実行できます。JITコンパイラとかいうものになるのでしょうか。Cocoaなど一般の動的フレームワークにリンクできます。単独で起動可能なアプリケーションを作ることもできます。64ビットのみですが動的ライブラリも生成できます。最新のmacOS上でも稼働するようです(確認済)。(なお、Apple社が、Macの全CPUを二年でARM仕様に変更すると宣言したことに対応して、ARM64ビットネイティブのMopsの開発計画が進行
An awesome stack based programming language, which is able to extend itself during runtime. \ a comment followed by the shortest quine source type \ another shorty, hello world looks like that ." hello world" \ tell me, what else can we do? ask the system itself! words \ this will yield all defined words EuroForth 2025 Hamburg, 12.-14. September 2025 The 41st EuroForth conference takes place in Ha
プログラマの数だけForthが存在するといわれる、Forthを作ってみる。 実装言語は、C言語にする。 さて、やってみよう。 簡単なForthのプログラム スタックを作る 値をスタックに積む スタックから値を取り出す スタックの値を加算する スタックの内容を表示する Forthを実行してみる? プログラム配列を走査する 「値をスタックに積む」を実行する プログラムを用意する Forthを実行してみる ソースコードを読み込む 条件分岐を実装する 繰り返し構造を実装する ワード定義を実装する ワード名を登録する 処理内容を登録する ワード名と処理内容を関連付ける ワード定義のテスト 対話環境を作る 32ビット化する 対話環境の複数行対応 スレッディングの変更 文字列を表示する 変数を実装する 変数を実装する2 最後に ところで、「Forthを作ってみる」を電子書籍にしました。 Forthを作っ
はじめに これは「言語実装 Advent Calendar 2017」24日目の記事です。 この記事では 64bit版Windows で実行可能な x86_64 のセルフホスティング Forth コンパイラを作ります。 対象読者としては「C言語そこそこわかる」「x64アセンブラに嫌悪感はない」ぐらいの人を想定しています。コンパイラの知識は特に前提としません。 完成品はこちらから取得できます。 bootstrap には C を使います。しかしC言語的にお行儀の悪いことを色々やりますので、バージョンやコンパイルオプション等によっては動かないかもしれません。ご了承ください。一応完成版は以下の環境で動作を確認しています。 Cygwin64 の gcc option: -O3 と -O なし両方 version: 6.4.0 (GCC) target: x86_64-pc-cygwin Msys2
American National Standard for Information Systems Programming Languages Forth Secretariat Computer and Business Equipment Manufacturers Association Approved: March 24, 1994 American National Standards Institute, Inc. Copyright (c) 1994 by Technical Committee X3J14. All rights reserved. This is a working document of Technical Committee X3J14 which represents the last draft of ANS Forth submitted t
Gforth マニュアル (原文) Gforth これは、ANS Forth 言語の高速でポータブルな実装である Gforth (version 0.7.0, November 2, 2008) のマニュアルである。リファレンスだけでなく、Forth のチュートリアルと入門も含む。Copyright © 1995, 1996, 1997, 1998, 2000, 2003, 2004,2005,2006,2007,2008 Free Software Foundation, Inc. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later versi
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く