4
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

LinuxのオリジナルコマンドをMacに移植した話

Posted at

経緯

僕の大学では入学時にPCを買うとVirtualBoxを入れさせられ、学校の授業用に何やら設定を施されたubuntuが配布されます。
1、2年生の間は特に配布されたubuntuにありがたみは感じないものの、3年生になると「sep3asm」というオリジナルプログラムを授業内で使うことになります。
これは我が校の教授が教育用に作ったオリジナルCPU、「SEP-3」(モデルは過去の名機PDP-11らしい)で用いるアセンブラのプログラムをアセンブルするもので、いうまでもなく学校で配布されたubuntuにしか入っていません。

ここまでの話は正直どうでも良いという人がほとんどだと思いますが、僕はこの「sep3asm」をMacでどうにか使えないかと考えました。
言い忘れていましたがこの「sep3asm」はコマンドで動くものでLinux用バイナリでした。
したがってMacで動かすには少々工夫が必要でしたが、今回の設定は他の場面でも使えると感じたので方法をシェアしたいと思います。

作業の流れ

コマンドの場所を確認(Linux上)

コマンドのファイルをMacへ移動

実行権限を加える(Mac上)

noahをインストール

コマンドのファイルを所定の位置に移動

rootでnoahを起動

コマンド実行

コマンドの場所を確認

コマンドをMacに移すにはまずコマンドのファイルの場所を特定しなければいけません。

$ where sep3asm
/usr/local/bin/sep3asm

上記のコマンドで探すことができます。

コマンドのファイルを移動

方法はお任せします。
僕の場合はubuntuがVirtualBoxに入っているので共有フォルダでWindowsに移してからLineでMacに送りました。

実行権限を加える。

$ chmod a+x sep3asm

chmodコマンドは、ファイルやディレクトリのアクセス権を変更するコマンドです。引数のa+xの意味を一応解説しておきます。
自分なりの認識なので間違っていたらすみません。
chmodの引数は
<誰に> - <何の>  権限を与える、という構造になっているようです。

<誰に>の部分は4種類

記号 意味
u 所有者(user)
g グループ(group)
o その他(other)
a 上の三つ全て(all)

<何の>の部分は3種類

記号 意味
r 読み込み権限
w 書き込み権限
x 実行権限

今回の場合は<全ての者に> - <実行権限>を与えているわけです。

noahをインストール

Macでは、Linux用バイナリを実行できません。したがってこれに関しては何らかの対策を講じる必要があるのですが、色々調べてみるとすごく便利なものを見つけてしまいました。

Noahというアプリケーションは、MacOS上でLinuxOS用アプリケーションを動かすことのできる優れものです。
apt-getやLinux向けgcc、自作のLinuxアプリケーションが、そのままMacOSで動作します。

ということで、早速インストールします。

$ brew install linux-noah/noah/noah

初めて起動するとこんな感じ

$ noah
Noah is installing the initial filesystem in ~/.noah/tree. Proceed? [Y/n] Y
Password:

(中略)

Noah is still under development, so please enable it at your own risk! [y/N] y

(中略)

I have no name!@username:~$

適当にyを押しておきます。

コマンドを所定の位置に移動させる

sep3asmを所定のいちに移動させます。

$ sudo cp sep3asm /bin/sep3asm

コマンドのファイルを/bin に入れる動作はrootでしかできないのでsudoでやります。

一応、移動させたら確認してみてください。

$ which sep3asm
/bin/sep3asm

こんな感じになっていたらOK。

rootでnoahを起動

$ sudo noah
Password:
groups: cannot find name for group ID 61
groups: cannot find name for group ID 80
groups: cannot find name for group ID 701
groups: cannot find name for group ID 98
root@username:~# 

起動画面はこんな感じです。
もうこのままコマンドが打てる状態です。
試しにプログラムをアセンブルしてみましょう。

今回アセンブルするプログラム

sample.s
 . = 0x1FF
 . WORD 0x0A0A, 0xF0F0
 MOV #0x200, R6
 MOV R6, R0
 HLT

アセンブルします。

$ sep3asm sample.s

アセンブル結果がこちら

sample.bin
000001FF: 0A0A
00000200: F0F0
00000201: 43E6
00000202: 0200
00000203: 40C0
00000204: 0000

ちゃんと動作していますね!

4
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?