首页 > 编程语言 >入门龙芯旧世界汇编指令

入门龙芯旧世界汇编指令

时间:2024-11-09 08:49:52浏览次数:1  
标签:汇编 gcc 入门 龙芯 syscall li docker

我借到了一台宝贵的龙芯 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 开放社区

标签:汇编,gcc,入门,龙芯,syscall,li,docker
From: https://www.cnblogs.com/lindexi/p/18536264

相关文章

  • 前端入门一之JS对象、字符串对象、数组对象、Data()对象等
    前言JS是前端三件套之一,也是核心,本人将会更新JS基础、JS对象、DOM、BOM、ES6等知识点,这篇是JS常用的内置对象;这篇文章是本人大一学习前端的笔记;欢迎点赞+收藏+关注,本人将会持续更新。文章目录目录总览1、对象1.1、创建对象(object)利用字面量创建对象对象的调用变量......
  • 【Docker 入门学习】
    Docekr基础知识一、docker安装与卸载二、Docker基础知识1.dockerrun过程2.docker是怎么工作的?3.docker为什么比VM快?5.docker命令a.帮助命令b.镜像命令c.容器命令6.Docker镜像理解7.commit镜像简介:Docker是基于go开发的开源项目。......
  • python篇:0基础带你入门python之元组集合字典
    一、元组Python中的元组(`tuple`)是一种有序、不可变的集合数据类型。与列表(`list`)类似,元组用于存储多个元素,但一旦创建,它的内容不能修改。元组使用圆括号`()`来定义。1.元组的定义元组可以通过圆括号`()`来定义,也可以省略括号,直接通过逗号分隔元素。示例:#使用圆括......
  • python篇:0基础带你入门python之函数篇
    所谓函数就是将一批代码进行打包封装,便于之后使用比如defmy_fun():print("我爱你")my_fun()这样在任何地方使用my_fun()即可马上输出“我爱你”,一、初入函数 不仅如此,函数分为有参函数和无参函数,有返回函数和无返回函数,总共四个有参有返回函数有参无返回函数无......
  • SQL语法与SQL注入漏洞の入门(第三周)
    基础知识一、SQL语言 •定义:  •SQL是结构化查询语言(StructuredQueryLanguage)的简称,是一种在关系型数据库中定义和操纵数据的标准语言。 •特点: •非过程化语言,没有分支、循环结构,通过几个命令动词就可以实现对数据库以及数据的查询和管理。 •统一的语......
  • 快速入门Zookeeper
    ZookeeperZooKeeper作为一个强大的开源分布式协调服务,扮演着分布式系统中至关重要的角色。它提供了一个中心化的服务,用于维护配置信息、命名、提供分布式同步以及提供组服务等。通过其高性能和可靠的特性,ZooKeeper能够确保在复杂的分布式环境中,各个节点和服务之间的协调和......
  • 「Mac玩转仓颉内测版1」入门篇1 - Cangjie环境的搭建
    本篇详细介绍在Mac系统上快速搭建Cangjie开发环境的步骤,涵盖VSCode的下载与安装、Cangjie插件的离线安装、工具链的配置及验证。通过这些步骤,确保开发环境配置完成,为Cangjie项目开发提供稳定的基础支持。关键词Cangjie开发环境搭建VSCode安装指南Cangjie插件离线安装MacC......
  • 怎么从入门到精通:《IDEA 问题库》常见问题及解决方案
    《IDEA问题库​》是一个非常广泛的话题,涉及到许多不同的问题和解决方案。以下是一些常见问题及解决方案: 报错:unableto establish loopbackconnection。问题:无法建立环回连接。解决方案:关闭防火墙。IDEA看不到编译后的target文件。问题:控制台提示编译成功,但左边......
  • 2025年入门深度学习或人工智能,该学PyTorch还是TensorFlow?
    随着2025应用人工智能和深度学习技术的举世泛气,还在迷茫于该选择哪个深度学习框架吗?PyTorch和TensorFlow是并立于深度学习世界两座巨塔,但是越来越多人发现,在2025年,PyTorch似乎比TensorFlow更为流行和被接受。下面我来分析一下这两个深度学习框架的发展历史,应用差异和现状,以......
  • ctf杂项入门,ctf比赛杂项题型解析
    在CTF(CaptureTheFlag)竞赛中,杂项(Miscellaneous,简称Misc)类题型通常是一组多样化的挑战,涵盖了不属于传统网络安全分类的各种问题。这些题目旨在测试参赛者的广泛技能和知识。题目及答案1.逆向QR码描述:给出一个模糊的QR码。恢复并解码。答案:使用图像处理软件清晰化QR码,然后......