入門龍芯舊世界彙編指令

lindexi發表於2024-11-09

我借到了一臺寶貴的龍芯 3A6000 裝置,我期望在這臺裝置上面學習龍芯彙編指令。這臺裝置上的是龍芯舊世界的麒麟系統,由於這臺裝置很寶貴,我不能隨意玩。為了防止弄壞裝置,我將在此裝置上面搭建 docker 環境,進入到 docker 容器裡面進行開發

在此裝置上搭建 docker 環境的方法,詳細請看 製作一個龍芯舊世界的 dotnet sdk docker 映象

以下是我的 dockerfile 檔案內容

FROM cr.loongnix.cn/library/debian:buster
WORKDIR /root

RUN apt-get install gcc -y
RUN apt-get install vim -y

使用如下兩句命令進行構建和進入容器

docker build -t g1 .
docker run -it g1 /bin/bash

本文這裡完全都是龍芯舊世界的

先使用 vim 敲入一些程式碼內容:

.data

string: .asciz "Hello World!\r\n"

.text
.global main
main:

    li.w $a7, 64              # write syscall number
    li.w $a0, 1               # stdout file descriptor == 1
    la $a1, string            # string address
    li.w $a2, 15              # string len
    syscall 0x0               # syscall

    li.w $a7, 93              # exit syscall number
    li.w $a0, 0
    syscall 0x0               # syscall

以上程式碼來自於 https://github.com/foxsen/loongarch-assembly/blob/bdc24681d745a9f53dc9bc8f9fce28de470809ca/hello-world.S

接著使用 gcc 進行構建,命令如下

gcc -static hello.S -o hello

接下來就可以使用 ./hello 跑起來剛才寫的彙編的程式

以下是我手敲的過程

環境搭建要點

本文以上使用的都是龍芯舊世界

業界都認為舊世界是過度的,之後會是新世界

在舊世界裡面,不應該去下載 https://github.com/sunhaiyong1978/CLFS-for-LoongArch/releases/download/untagged-629b3c005484675292bc/loongarch64-clfs-3.0-cross-tools-gcc-glibc.tar.xz 工具,而是應該直接使用 apt-get install gcc -y 進行安裝

本文的 docker 搭建不是必須的,只是我不想弄壞裝置而已

那如果大家想要玩龍芯但是沒有機器咋辦?可以使用 QEMU 進行模擬,詳細請看 龍芯彙編實驗環境搭建 - github.com/foxsen/loongarch-assembly

必須說明的是以上使用 QEMU 進行模擬的做法使用的是龍芯新世界

參考文件

foxsen/loongarch-assembly: assembly experiment environment for loongarch

龍芯架構參考手冊

LoongArch 彙編快速入門 - LoongArch 開放社群

相關文章