首页 > 其他分享 >树莓派&自动运维

树莓派&自动运维

时间:2023-06-01 09:22:04浏览次数:44  
标签:树莓 val 运维 int text compare 自动 x0 data

目录

基础安装&配置

树莓派安装openEuler

博客链接

树莓派安装openssl

娄老师博客

修改环境变量

在/etc/profile中加入

export PATH="/root/dopenssl/bin/:$PATH"
export LD_LIBRARY_PATH="/root/dopenssl/lib:$LD_LIBRARY_PATH"

安装后运行截图

img

img

img

img

img

3-2汇编语言练习:查找最大数

.section .data
.align 3
my_data:
        .quad  1
        .quad  2
        .quad  5
        .quad  8
        .quad  10
        .quad  12

my_data_count:
        .quad  6

.align  3
print_data:
        .string "big data: %d\n"

.section .text
.globl main
main:
        stp     x29, x30, [sp, -16]!

        ldr x0, =my_data
        ldr x1, my_data_count

        add x4, x0, #40

        mov x3, xzr
1:
        ldr x2, [x0], #8
        cmp x2, x3
        csel x3, x2, x3, hi

        cmp x0, x4
        b.ls 1b

        ldr x0, =print_data
        //adrp x0, print_data
        //add x0, x0, :lo12:print_data
        mov x1, x3

        bl printf

        ldp  x29, x30, [sp], 16
        ret

img

3-3:汇编语言练习——通过 C 语言调用汇编函数

main.c

#include <stdio.h>
  
extern int compare_data(int a, int b);

int main()
{
        int val;

        val = compare_data(5, 6);

        printf("big data: %d\n", val);
}

compare.S

.section .text
.globl compare_data
compare_data:
        cmp x0, x1
        csel x0, x0, x1, hi
        ret

img

3-4汇编调用C函数

main.S

.section .data
.align 3

print_data:
        .string "big data: %d\n"

.section .text
.globl main
main:
        stp     x29, x30, [sp, -16]!

        mov x0, #6
        mov x1, #5
        bl compare_data

        mov x1, x0
        ldr x0, =print_data
        bl printf

        ldp  x29, x30, [sp], 16
        ret

compare.c

int compare_data(int a, int b)
{
        return (a >= b) ? a : b;
}

img

3-5GCC内联汇编

#include <stdio.h>
  
static int compare_data(int a, int b)
{
        int val;

        asm volatile (
                        "cmp %1, %2\n"
                        "csel %0, %1, %2, hi\n"
                        : "+r" (val)
                        : "r" (a), "r" (b)
                        : "memory");

        return val;
}

int main()
{
        int val;

        val = compare_data(5, 6);
        printf("big data: %d\n", val);

        val = compare_data(6, 4);
        printf("big data: %d\n", val);
}

img

3-6一个裸机程序

由于裸机没有操作系统,需自行编写链接脚本

SECTIONS
{
	.text.boot : { *(.text.boot) }
	.text : { *(.text) }
	.rodata : { *(.rodata) }
	.data : { *(.data) }
	. = ALIGN(0x8);
	bss_begin = .;
	.bss : { *(.bss*) } 
	bss_end = .;
}

在第1行中,SECTIONS 是 LS (Linker Script)语法中的关键命令,用来描述输出文件的内存布局。
SECTIONS命令告诉链接文件如何把输入文件的段映射到输出文件的各个段,如何将输入段合为输出段,以及如何把输出段放入程序地址空间(VMA)和进程地址空间(LMA)。
SECTIONS命令格式如下。

SECTIONS
{
sections-command
sections-command
...
}

sections-command有4种。

  • ENTRY命令。
  • 符号赋值语句。
  • 输出段的描述(output section description)。
  • 段的叠加描述(overlay description)。

在第3行中,“.”非常关键,它代表位置计数(Location Counter , LC),这里把.text段的链接地址被设置为0x0,这里链接地址指的是装载地址(load address)。

在第4行中,输出文件的.text.boot段内容由所有输入文件(其中的“”可理解为所有的.o文件,也就是二进制文件)的.text.boot段组成。
”可理解为所有的.o

在第5行中,输出文件的.text段内容由所有输入文件(其中的“*”可理解为所有的.o文件,也就是二进制文件)的.text段组成。

在第6行中,输出文件的.rodata段由所有输入文件的.rodata段组成。

在第7行中,输出文件的.data段由所有输入文件的.data段组成在第8行中,设置为按8个字节对齐。

在第9~11行中,定义了一个.bss 段。

标签:树莓,val,运维,int,text,compare,自动,x0,data
From: https://www.cnblogs.com/kenneth2012/p/17447969.html

相关文章

  • 搭建jenkins实现自动化部署
    一、安装jenkins1、添加yumrepos,然后安装12sudo wget-O /etc/yum.repos.d/jenkins.repohttps://pkg.jenkins.io/redhat/jenkins.reposudo rpm--import https://pkg.jenkins.io/redhat/jenkins.io.key注:如果上边的执行成功就不用再执行这两......
  • NEFU704(AC自动机+状态压缩)
    题目:PasswordLeakage#include<iostream>#include<string.h>#include<stdio.h>#include<queue>usingnamespacestd;charS[1000010];charkeyword[51];charstr[51];charT[51];classTrie{public:intcount;Trie*fa......
  • 我们的智能化应用是需要自动驾驶(Autopilot)还是副驾驶(Copilot)
    自动驾驶Autopilot是一个知识密集且科技含量很高的技术,不基于点什么很难把它讲的相对清楚。副驾驶Copilot是一种由AI提供支持的数字助理,旨在为用户提供针对一系列任务和活动的个性化协助。自微软发布Microsoft365Copilot以来,Copilot这个词便被各界人士不断提及。"Copil......
  • 当鼠标滑过文本框自动选中输入框内容JS代码
    代码:<html><head><title>响应鼠标自动选中文本框内容</title></head><body><inputid="a"type="text"value="请输入搜索词"οnmοuseοver="selectInputContent(this.id)"/><scripttype="text/......
  • 基于Jmeter+ant+Jenkins+钉钉机器人群通知的接口自动化测试
    博主写的非常好https://www.cnblogs.com/tdp0108/p/17446834.html#top前言   搭建jmeter+ant+jenkins环境有些前提条件,那就是要先配置好java环境,本地java环境至少是JDK8及以上版本,最好是JAVA11或者JAVA17等较高的java环境,像jenkins这种持续构建工具基本都在向上兼容JAVA的......
  • 基于Jmeter+ant+Jenkins+钉钉机器人群通知的接口自动化测试
     前言   搭建jmeter+ant+jenkins环境有些前提条件,那就是要先配置好java环境,本地java环境至少是JDK8及以上版本,最好是JAVA11或者JAVA17等较高的java环境,像jenkins这种持续构建工具基本都在向上兼容JAVA的环境,以前的JAVA8或者以下版本可能在运行jenkins等时可能会有异常导致......
  • Jenkins教程(自动化部署)
    Jenkins教程(自动化部署)叶凡Jonas 软件测试成长之路 2023-05-2706:00 发表于上海收录于合集#测试运维系列12个1.Jenkins是什么?Jenkins是一个开源的、提供友好操作界面的持续集成(CI)工具,广泛用于项目开发,具有自动化构建、测试和部署等功能。Jenkins用Java语言编写......
  • Oracle 12c/19c PDB数据库配置自动启动
    在Oracle12c/19c多租户环境中,默认情况下,使用startup命令启动数据库实例后,你会发现PDB数据库的状态为MOUNT状态,PDB不会随着CDB启动而启动。如下例子所示:SQL> startupORACLE instance started.Total System Global Area 2432695872 bytesFixed Size          ......
  • 语音识别,语音转文字,会议记录自动化,Meeting Note, Speech to Note
    经过百般测试,实践了Python的方案,实现:可以识别英语,但是断句和整句话的整理还是不尽人意。 还不如下面这个产品 Speechnoteshttps://speechnotes.co/dictate/   Pyhton的方案实践记录(部分):cd/Users/***/opt/anaconda3/bin/ ./jupyternotebook ItwillopenupB......
  • QA|外部调用类方法总报错missing 1 required positional argument:'self'|UI自动化
    外部调用类方法总报错missing1requiredpositionalargument:'self' 原因:实例化这个类实例化错了,少了括号()解决:改成如下就可以了 参考学习:调用类方法时报错:missing1requiredpositionalargument:'self'-hehehe_wy7-博客园(cnblogs.com) ......