course 0
authorMinep <zelong56@gmail.com>
Mon, 31 Jan 2022 22:43:54 +0000 (22:43 +0000)
committerMinep <zelong56@gmail.com>
Mon, 31 Jan 2022 22:43:54 +0000 (22:43 +0000)
.gitignore [new file with mode: 0644]
practice-c0/bochs-build.sh [new file with mode: 0644]
practice-c0/gcc-build.sh [new file with mode: 0755]
practice-c0/slide.odp [new file with mode: 0644]

diff --git a/.gitignore b/.gitignore
new file mode 100644 (file)
index 0000000..a8b2e7a
--- /dev/null
@@ -0,0 +1,2 @@
+os-dev
+slide-resources
diff --git a/practice-c0/bochs-build.sh b/practice-c0/bochs-build.sh
new file mode 100644 (file)
index 0000000..28b24ad
--- /dev/null
@@ -0,0 +1,26 @@
+export CC=gcc
+export CXX="g++"
+export CFLAGS="-Wall -O2 -fomit-frame-pointer -pipe"
+export CXXFLAGS="$CFLAGS"
+
+(./configure --enable-smp \
+              --enable-cpu-level=6 \
+              --enable-all-optimizations \
+              --enable-x86-64 \
+              --enable-pci \
+              --enable-vmx \
+              --enable-debugger \
+              --enable-disasm \
+              --enable-debugger-gui \
+              --enable-logging \
+              --enable-fpu \
+              --enable-3dnow \
+              --enable-sb16=dummy \
+              --enable-cdrom \
+              --enable-x86-debugger \
+              --enable-iodebug \
+              --disable-plugins \
+              --disable-docbook \
+              --with-x --with-x11 --with-term --with-sdl2) || exit
+
+make && make install
diff --git a/practice-c0/gcc-build.sh b/practice-c0/gcc-build.sh
new file mode 100755 (executable)
index 0000000..648c5f9
--- /dev/null
@@ -0,0 +1,76 @@
+#! /usr/bin/bash
+sudo apt update &&\
+     apt install -y \
+       build-essential \
+       bison\
+       flex\
+       libgmp3-dev\
+       libmpc-dev\
+       libmpfr-dev\
+       texinfo
+
+BINUTIL_VERSION=2.37
+BINUTIL_URL=https://ftp.gnu.org/gnu/binutils/binutils-2.37.tar.xz
+
+GCC_VERSION=11.2.0
+GCC_URL=https://ftp.gnu.org/gnu/gcc/gcc-11.2.0/gcc-11.2.0.tar.xz
+
+GCC_SRC="gcc-${GCC_VERSION}"
+BINUTIL_SRC="binutils-${BINUTIL_VERSION}"
+
+# download gcc & binutil src code
+
+export PREFIX="$HOME/cross-compiler"
+export TARGET=i686-elf
+export PATH="$PREFIX/bin:$PATH"
+
+mkdir -p "${PREFIX}"
+mkdir -p "${HOME}/toolchain/binutils-build"
+mkdir -p "${HOME}/toolchain/gcc-build"
+
+cd "${HOME}/toolchain"
+
+if [ ! -d "${HOME}/toolchain/${GCC_SRC}" ]
+then
+       (wget -O "${GCC_SRC}.tar" ${GCC_URL} \
+               && tar -xf "${GCC_SRC}.tar") || exit
+       rm -f "${GCC_SRC}.tar"
+else
+       echo "skip downloading gcc"
+fi
+
+if [ ! -d "${HOME}/toolchain/${BINUTIL_SRC}" ]
+then
+       (wget -O "${BINUTIL_SRC}.tar" ${BINUTIL_URL} \
+               && tar -xf "${BINUTIL_SRC}.tar") || exit
+       rm -f "${BINUTIL_SRC}.tar"
+else
+       echo "skip downloading binutils"
+fi
+
+echo "Building binutils"
+
+cd "${HOME}/toolchain/binutils-build"
+
+("${HOME}/toolchain/${BINUTIL_SRC}/configure" --target=$TARGET --prefix="$PREFIX" \
+       --with-sysroot --disable-nls --disable-werror) || exit
+
+(make && make install) || exit
+
+echo "Binutils build successfully!"
+
+echo "Building GCC"
+
+cd "${HOME}/toolchain/gcc-build"
+
+which -- "$TARGET-as" || echo "$TARGET-as is not in the PATH"
+
+("${HOME}/toolchain/${GCC_SRC}/configure" --target=$TARGET --prefix="$PREFIX" \
+       --disable-nls --enable-languages=c,c++ --without-headers) || exit
+
+(make all-gcc &&\
+ make all-target-libgcc &&\
+ make install-gcc &&\
+ make install-target-libgcc) || exit
+
+echo "done"
diff --git a/practice-c0/slide.odp b/practice-c0/slide.odp
new file mode 100644 (file)
index 0000000..25a0c81
Binary files /dev/null and b/practice-c0/slide.odp differ