【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
アセンブラの練習サイト
アセンブラの例
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アプリもあります。
私はDockerで起動して使っていたのでほとんど使っていませんが、こちらを使っても良いのかもしれません。だってほらねぇ?ローカルで起動した方が…なんというか…あたたかみがあるじゃん?それに外部サービスに依存しすぎるのも良くないですよね?いつまでも米国ビッグテックの言いなりになっていていいんですか!!まぁツールなんて目的を果たせれば何でもいいと思います。
