入门龙芯旧世界汇编指令

news/2024/11/14 10:52:46/文章来源:https://www.cnblogs.com/lindexi/p/18536264

我借到了一台宝贵的龙芯 3A6000 设备,我期望在这台设备上面学习龙芯汇编指令。这台设备上的是龙芯旧世界的麒麟系统,由于这台设备很宝贵,我不能随意玩。为了防止弄坏设备,我将在此设备上面搭建 docker 环境,进入到 docker 容器里面进行开发

在此设备上搭建 docker 环境的方法,详细请看 制作一个龙芯旧世界的 dotnet sdk docker 镜像

以下是我的 dockerfile 文件内容

FROM cr.loongnix.cn/library/debian:buster
WORKDIR /rootRUN apt-get install gcc -y
RUN apt-get install vim -y

使用如下两句命令进行构建和进入容器

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

本文这里完全都是龙芯旧世界的

先使用 vim 敲入一些代码内容:

.datastring: .asciz "Hello World!\r\n".text
.global main
main:li.w $a7, 64              # write syscall numberli.w $a0, 1               # stdout file descriptor == 1la $a1, string            # string addressli.w $a2, 15              # string lensyscall 0x0               # syscallli.w $a7, 93              # exit syscall numberli.w $a0, 0syscall 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 开放社区

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/829141.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

促进通用跨域检索中广义知识的模拟

促进通用跨域检索中广义知识的模拟ProS:促进通用跨域检索中广义知识的模拟通用跨域检索(UCDR)的目标是在广义测试场景中实现稳健的性能,其中数据在训练过程中可能属于严格未知的域和类别。最近,具有快速调整的预训练模型显示出很强的泛化能力,并在各种下游任务中取得了显著…

ParamISP:使用相机参数学习正向和反向ISP

ParamISP:使用相机参数学习正向和反向ISPRAW图像很少被共享,主要是因为与相机ISP获得的sRGB图像相比,RAW图像的数据量过大。最近已经证明,学习相机ISP的正向和反向过程,可以对输入的sRGB图像进行具有物理意义的RAW级图像处理。然而,现有的基于学习的ISP方法,无法处理ISP…

thinkphp console 命令行打印错误调用堆栈

在think\Console源文件里找到 run() 方法,加上内容: $output->error($e->getTraceAsString()); 然后当执行命令报错的时候就会有详细的错误信息,方便排查具体是哪行引起的问题!本文来自博客园,作者:imzhi,转载请注明原文链接:https://www.cnblogs.com/imzhi/p/18…

信道的极限容量

我们可以简单地将带通信道理解为无线传输信道,低通信道理解为有线传输信道,记忆公式时应该记住乘2的那个调制速度就是波特率

JD 商品詳情頁解析

https://item.jd.com/100036218692.html 以这个商品链接为例,分析详情图接口抓包拿到接口入参出参构建代码headers = {cookie:"",accept: application/json, text/javascript, */*; q=0.01,accept-language: zh-CN,zh;q=0.9,origin: https://item.jd.com,priority: …

Vmware虚拟机下载安装使用教程(17.5.2最新版非常详细)

VMware,自1998年成立以来,便以其革命性的虚拟化技术引领行业。这家公司专注于提供软件和服务,支持云计算和虚拟化解决方案,使得一台物理服务器能够托管多个独立的虚拟机,每个虚拟机都能独立运行不同的操作系统和应用。VMware的技术不仅优化了硬件资源的使用效率,还简化了…

Vmware虚拟机下载安装使用教程(2024最新版非常详细)

VMware,自1998年成立以来,便以其革命性的虚拟化技术引领行业。这家公司专注于提供软件和服务,支持云计算和虚拟化解决方案,使得一台物理服务器能够托管多个独立的虚拟机,每个虚拟机都能独立运行不同的操作系统和应用。VMware的技术不仅优化了硬件资源的使用效率,还简化了…

RHEL9.4上创建RHEL8.1虚拟机

日期:2024.11.5 目的:在物理机RHEL9.4搭建的虚拟化环境中安装虚拟机,操作系统为RHEL8.1,虚拟出网卡3块,用来模拟路由,后续还打算在上面搭建一个DHCP的中继服务。 参照:鸟哥Linux私房菜服务器篇 第二章、第一個虛擬機器的安裝與調整 https://linux.vbird.org/linux_server/…

电子邮件

标准的ASCLL码使用的就是7个比特表示128种字符,而C语言中的char类型则使用了8个比特,比128大的几个状态用来表示扩展字符集

22. 使用MySQL之使用视图

1. 视图 视图是虚拟的表。与包含数据的表不一样,视图只包含使用时动态检索数据的查询。 举个例子来理解视图:第15章中用下面的SELECT语句从3个表中检索数据: select cust_name, cust_contact from customers where cust_id in (select cust_id from orderswhere order_num i…

2024-2025-1 20241329 《计算机基础与程序设计》第七周学习总结

作业信息 作业归属课程:https://edu.cnblogs.com/campus/besti/2024-2025-1-CFAP 作业要求:https://www.cnblogs.com/rocedu/p/9577842.html#WEEK07 作业目标:数组与链表、基于数组和基于链表实现数据结构、无序表与有序表、树、图、子程序与参数 作业正文:https://www.cnb…