【お知らせ】プログラミング記事の投稿はQiitaに移行しました。

ヴォラピュクで「主の祈り」を読む

ヴォラピュクはある程度の範囲で使われた最初の人工言語で、エスペラントの先輩格です。語彙は英語を中心とした西欧諸語から取り入れられていますが、極端なデフォルメに特徴があります。 前回に引き続き、例文として「主の祈り」を読んで特徴を確認します。…

印欧祖語で「主の祈り」を読む

ロシア語版Wikisourceに「主の祈り」の印欧祖語訳が載っていました。 Отче наш - 15 На праиндоевропейском языке - 15.1 Версия 1 面白かったので推測で注釈を付けてみました。調べたわけではないため、関連語が不明なものも多いです。 (function() { var d…

『趣味で量子力学2』を読みました

広江 克彦さんが『趣味で量子力学2』を発売されました。 『趣味で量子力学2』kindle版 販売開始しましたー! よろしくお願いします。https://t.co/cCS7N45qIt— 広江 克彦 (@eman1972) 2017年5月2日 一通り目を通しました。手短に紹介します。 第2巻というこ…

ラテン語の音節とアクセント

ラテン語の音節とアクセントについて、あまり厳密さに拘らないで実用性重視で大雑把に勘所を説明します。発音については既知として説明しません。

Skypeで読書会をやろう

ノウハウの紹介です。ちょっとした勉強でも気軽に集まってできれば、一人では見落としていたことも見えて来ます。 自分でやる勉強が結局一番役に立ちますが,自分一人でやっていると,あまり確実でなかったりすることはよくあります.他人に話すことにより本…

論理包含の定義に関する違和感について

論理包含⇒という論理演算子があります。A ⇒ B は「AならばB」と読み、ブール代数的には !(A && !B)(または !A || B)と定義されます。(Trueは真、Falseは偽) A B A ⇒ B !(A && !B) T T (T ⇒ T) = T !(T && !T) = !(T && F) = !F = T T F (T ⇒ F) = F !(T …

MS Officeの数式をTeXに変換

Microsoft Officeで数式を書くのに慣れてTeX形式で入力するのが苦痛になって来たので、変換プログラムを作りました。Windows専用です。 mml2tex.fsx [Raw形式で表示] → 保存(UTF-8) 【注】自分の必要とする範囲しか実装していません。変換部は200行程度で不…

Windows Updateを無効にするウィルス

ここ半年くらい自分の関係する範囲で、CPU使用率が張り付いてWindows Updateが無効になるという問題が頻発して悩んでいました。結論から言えばExpiroというウィルスの亜種が原因でした。 なお、似たような症状はサービスやドライバの不具合でも発生します。 …

Springer 無料本の紹介 (2016年1月5日現在)

2015年末にSpringerが本を大量に無料提供して話題になりましたが、特にアナウンスもないまま数日で提供は終了しました。 2016年1月5日現在、無料提供の本がまた少し増えているようです。その中からいくつか面白そうなものを選んでみました。いつまで提供が続…

池袋バイナリ勉強会のシリーズ

【お知らせ】2015年8月23日をもって会場は閉鎖となりました。一部の勉強会につきましては別会場にて存続します。池袋バイナリ勉強会では色々なテーマを試して来ましたが、最後に残った勉強会をまとめました。 不定期 池袋バイナリ勉強会看板勉強会です。コン…

Windows上のXamarin StudioでF#プロジェクトをビルド

Windows上のXamarin StudioでF#プロジェクトをビルドしようとすると、最近のバージョンでは失敗します。 Xamarin Studio F# Language Binding 結果 4.0.12 3.2.15 OK 4.0.13 3.2.15 ビルドに失敗しました。. MSBuild operation failed 4.0.13 3.2.19 ビルド…

NetBSDでMIPSのハローワールド

NetBSDにはアセンブリ言語のサンプルが入っています。 /usr/share/examples/asm/hello/powerpc.s PowerPC用ですが、MIPSに移植してみます。 PowerPC 主要部分を抜粋します。 _start: # write(STDOUT_FILENO, message, MESSAGE_SIZE) li %r0, 4 # r0: write(2…

F#を教えるための環境構築

この記事はF# Advent Calendar 2013の2日目の参加記事です。昨日はトップバッターの@igetaさんでした。短いコードにデータベースのアクセステクニックが詰まってとても参考になります。 いげ太の日記: Micro ORM を128行で 私の記事は、勉強会でF#を教えるた…

V6移植ハッカソンを中止します

お盆休みに予定していたV6移植ハッカソンですが、残念ながら参加者が少なかったため中止とさせていただきました。今後は池袋バイナリ勉強会の中で作業を進める予定です。力不足、大変申し訳ありません。

全部入りbinutils

スタート低レイヤー#2でid:shinichiro_hさんに全部入りのbinutilsが作れるということを教えて頂きました。さっそく試してみました。MSYS(MinGW)用のバイナリを置いておきます。 binutils-2.23.2-msys-cross-all.tar.xz (14.6MB) /usr/localに展開するだけで…

8086版V6のABI(仮)

先日、PDP-11から8086へのトランスレータを試作しました。 PDP-11のアセンブリを8086に変換 簡単なプログラムを変換して大まかなABIが見えてきたので、仮にまとめます。詳細についてはV6移植ハッカソンで作業しながら決めていこうと思います。

スタート低レイヤー#2で発表して来ました

2013/7/27(土)に開催されたスタート低レイヤー#2でELFについて発表して来ました。 ELFの動的リンク from 7shi 私自身とても勉強になりました。主催のmasterqさんはじめ、他の発表者の方々、参加者の方々、お疲れ様でした。

V6移植ハッカソンの作業フロー

V6移植ハッカソンの作業フローをまとめました。今まで作って来たインタプリタやトランスレータの位置付けがはっきりするのではないでしょうか。

PDP-11のアセンブリを8086に変換

V6移植ハッカソンでは手始めにトランスレータを作りながらPDP-11から8086への変換について調べる予定です。現場でスクラッチから始めると発散しかねないので、ある程度方向付けるためトランスレータを試作しました。 pdp2i8086.py コマンドライン引数を表示…

8086版V6でC言語のハローワールド

8086版V6でC言語のハローワールドが実行できる最低限のlibcを実装しました。OS本体はまだ存在しないためインタプリタ上で実行します。 $ cat hello.c main(){printf("hello\n");} $ 8086v6-cc hello.c "hello.c", line 1: (warning) 'main' old-fashioned fu…

8086V6用にACKをカスタマイズ

前回、コマンドやオプションを駆使して8086V6のa.outを作っていました。 8086版V6のa.out ACKをカスタマイズしてオプションなしで出力できるようになりました。 $ 8086v6-cc -.o write.s $ 7run a.out hello※ -.oはgccの-nostdlibに相当します。

8086版V6のa.out

8086版V6のa.outはマジックナンバーで識別することにしました。PDP-11のマジックナンバーはブランチ命令に由来します。 0407(0x107) br 020(0x10) .textと.dataは同じセグメントで連続 0410(0x108) br 022(0x12) .textと.dataは別セグメントに分離 0411(0x10…

インタプリタの動作確認

前回、インタプリタを複数のCPUやOSに対応させる過程を書きました。 インタプリタのクラス設計 実際に動かしてみます。 $ file write-minix write-v6 write-8086v6 write-minix: Linux-8086 impure executable write-v6: PDP-11 executable write-8086v6: DO…

インタプリタのクラス設計

自作インタプリタを少しずつ進化させて、複数のCPUやOSをサポートできるようになりました。クラス設計で試行錯誤した過程を残しておきます。 https://bitbucket.org/7shi/i8086tools ※ 文中の図はインラインSVGで描いています。(ソース)

ACKメモ

8086(16bitのx86)をサポートするコンパイラとしてACKが使えるようになりました。 The Amsterdam Compiler Kit ACK自体の移植ではなく、MINIX用のバイナリを8086インタプリタ上で動かします。使用方法は以下を参照してください。 i8086インタプリタでMINIX…

i8086とPDP-11のインタプリタを統合

i8086インタプリタにPDP-11インタプリタを統合しました。1つのプログラムでMINIX 2とUNIX V6の両方のバイナリを動かせます。 https://bitbucket.org/7shi/i8086tools UNIX V6のccを動かしてカーネルがビルドできることを確認しました。 https://twitter.com/…

i8086インタプリタでMINIXカーネルをビルド

先日、i8086インタプリタでMINIXのカーネルがビルドできるようになりました。 i8086のインタプリタでMINIXのコマンドを動かす 手順を説明します。

V6移植ハッカソン

【追記】残念ながら参加者が少なかったため中止とさせていただきました。今後は池袋バイナリ勉強会の中で作業を進める予定です。お盆休みの四日間に渡ってUNIX V6を8086に移植するハッカソンを開催します。 8/12(月) V6移植ハッカソン(1日目) 8/13(火) V6…

MINIXのexitシステムコールを追う

前回、アセンブラからシステムコールを呼ぶ例を示しました。 i8086のインタプリタでMINIXのコマンドを動かす 通常はC言語からlibc経由で呼び出します。UNIX V6とMINIX 2.0.4でlibcからexitシステムコールが呼び出されるまでを追ってみます。

i8086のインタプリタでMINIXのコマンドを動かす

i8086の逆アセンブラに引き続きインタプリタを実装して、MINIXのカーネルがビルドできるようになりました。 http://twitter.com/7shi/status/349237003193307136 OSごと動かすエミュレータではなく、ユーザープロセスのみをホスティングするインタプリタとし…