【UoPeople】CS1105をDockerだけで済ませるための環境構築

ローカルに余計なソフトを入れたくないという私のような人はUoPeopleから指定されたアプリも可能な限りDockerで構築していることと思います。(そうかな?)

※許さない…MATH1280

CS1105 Digital Electronics & Computer Architectureのコースでは論理回路を作成する必要があるのと、アセンブリのプログラムを書く必要があります。

そのために使用したDockerファイルを残しておきます。

※Dockerファイルは他の講義で作ったものを使いまわしながら継ぎ足していっているので不要な行があるかもしれません。ピーポーのためにちゃんと過不足のないDockerファイルを作る気力がなくて…。

FROM eclipse-temurin:21

# 必要なパッケージのインストール
RUN apt-get update && apt-get install -y \
    libxext6 \
    libxrender1 \
    libxtst6 \
    libxi6 \
    libx11-6 \
    libxcomposite1 \
    libxcursor1 \
    libxdamage1 \
    libxfixes3 \
    libxrandr2 \
    libgtk-3-0 \
    libnss3 \
    libasound2t64 \
    nasm \
    gcc \
    make \
    nano \
    && apt-get clean \
    && apt-get autoremove \
    && rm -rf /var/lib/apt/lists/*


WORKDIR /usr/src
version: "3.8"

services:
  cs1105:
    build:
      context: .
      dockerfile: ./Dockerfile
    volumes:
      - ./src:/usr/src
    tty: true

Logisimのインストールと起動(一番下の行は、findした結果に応じて書き換える)

apt-get update
apt-get install -y logisim
find /usr -name "*logisim*.jar"
java -jar /usr/share/logisim/logisim.jar

アセンブラのコンパイルと実行(helloworldの部分を適宜自分のファイル名に置き換える)

nasm -f elf helloworld.asm -o helloworld.o
ld -m elf_i386 helloworld.o -o helloworld
./helloworld

アセンブラの練習サイト

https://asmtutor.com

アセンブラの例

SECTION .data
msg db 'Hello World!', 0Ah ;assign msg variable with your message string

SECTION .text
global _start ;tell the kernel where to begin execution

_start:
  mov edx, 13 ;number of bytes to write
  mov ecx, msg ;move the memory address of our message string into ecx
  mov ebx, 1 ;write to stdout
  mov eax, 4 ;opcode
  int 80h ;system call

  mov ebx, 0 ;exit code
  mov eax, 1 ;call exit
  int 80h

ちなみにLogisimはWebアプリもあります。

https://logisim.app

私はDockerで起動して使っていたのでほとんど使っていませんが、こちらを使っても良いのかもしれません。だってほらねぇ?ローカルで起動した方が…なんというか…あたたかみがあるじゃん?それに外部サービスに依存しすぎるのも良くないですよね?いつまでも米国ビッグテックの言いなりになっていていいんですか!!まぁツールなんて目的を果たせれば何でもいいと思います。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です