自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

生活是修行的博客

坚持,是一切聪明才智的基础。

  • 博客(13)
  • 收藏
  • 关注

原创 《汇编语言》第七章:更灵活的定位内存地址的方法

《汇编语言》第七章:更灵活的定位内存地址的方法

2025-06-04 14:32:48 1022

原创 《汇编语言》第六章:包含多个段程序

《汇编语言》第六章包含多个段程序

2025-05-20 15:40:27 782

原创 不同CPU下使用NEON对矩阵优化的效果

本文探讨了在不同ARM CPU架构下使用NEON技术对矩阵运算的优化效果。通过对比常规矩阵计算代码和NEON优化后的代码,展示了NEON在性能上的显著提升。测试结果显示,NEON优化后的代码在Cortex-A78AE、Cortex-A57、Cortex-A53和Cortex-A55等CPU上的执行时间大幅减少,最高可达数十倍。文章还详细介绍了ARM NEON技术的特点,包括其硬件结构、寄存器架构、技术类型以及内存与缓存的使用。最后,提出了在多线程环境中使用NEON技术的建议,强调了线程安全、同步机制和多核优

2025-05-20 15:35:45 494

原创 《汇编语言》第五章:[BX] 和 LOOP 指令

《汇编语言》第五章[BX] 和 LOOP 指令

2025-05-09 17:28:30 878

原创 bootsect.s解读

bootsect.s 引导程序详细解读

2025-05-09 16:48:00 372

原创 《汇编语言》第四章第一个程序

《汇编语言》第四章第一个程序

2025-05-06 17:09:41 796

原创 《汇编语言》第三章寄存器(内存访问)

《汇编语言》第三章寄存器(内存访问)

2025-05-06 13:28:01 856

原创 C/C++中关键字const

const关键字

2025-04-30 11:03:05 800

原创 《汇编语言》第二章寄存器

《汇编语言》第二章寄存器

2025-04-29 11:10:47 1027

原创 《汇编语言》第一章基础知识

《汇编语言》第一章基础知识

2025-04-29 11:08:18 754

原创 王爽汇编语言学习笔记

王爽的《汇编语言》学习笔记,持续更新

2025-04-18 14:30:17 1071 1

原创 操作系统学习与分享

操作系统学习与书籍分享

2025-04-15 17:18:52 277

原创 交叉编译Brpc,环境搭建和编译

准备交叉编译Brpc库之前要先准备移植protobuf、leveldb 、gflags 库,宿主机用的是Ubuntu 18.04,交叉编译工具链用的是瑞萨的SDK

2023-06-01 16:28:13 675 2

一些c语言面试题整理,包含了很多面试内容

目录 C语言面试题.......................................................................................................................................1 第一部分:基本概念及其它问答.........................................................................................................2 第二部分:程序代码评价或者找错.....................................................................................................4 第三部分:编程题.................................................................................................................................24 第四部分:附加部分.............................................................................................................................27

2025-05-12

【计算机硬件与性能优化】基于NEON技术的矩阵运算优化:不同CPU架构下的效果分析及多线程应用策略

内容概要:本文档探讨了不同CPU架构下使用ARM Neon技术对矩阵运算进行优化的效果。首先介绍了常规矩阵乘法代码和使用Neon指令集优化后的矩阵乘法代码,展示了如何利用SIMD(单指令多数据流)技术加速矩阵计算。接着通过实验对比了Cortex-A78AE、Cortex-A57、Cortex-A53和Cortex-A55四款CPU在执行16阶矩阵10000次乘法运算时的基本性能与Neon优化后性能的巨大差异,结果显示Neon优化能显著降低计算时间。最后总结了ARM Neon的特点及其在多线程环境下的应用注意事项,强调了合理分配NEON资源的重要性,以及确保线程安全性的必要措施。 适合人群:对嵌入式系统开发感兴趣,特别是关注ARM架构下高性能计算优化的技术人员。 使用场景及目标:①理解ARM Neon指令集的工作原理及其对矩阵运算性能的影响;②掌握在ARM平台上利用Neon技术优化程序性能的方法;③学习如何在多线程环境中正确使用Neon指令集以避免数据竞争问题。 其他说明:文档提供了具体的代码示例,帮助读者直观地了解Neon优化前后的区别。同时提醒开发者注意NEON寄存器的使用规则,尤其是在多核处理器上进行并行计算时,要充分考虑线程间的资源共享和同步问题。

2025-05-12

ioctl函数的使用已经自动创建设备节点

## 【1】ioctl函数的使用 ```c ioctl:设备的控制 read/write:数据的读写 #include <sys/ioctl.h> int ioctl(int fd, unsigned long request, ...); 功能:设置的控制 参数: @fd:文件描述符 @request: ====== ================================== bits meaning ====== ================================== 31-30 :2bit方向(用户的输入或输出) 00 - no parameters: uses _IO macro 10 - read: _IOR 01 - write: _IOW 11 - read/write: _IOWR 29-16 :14bit (第三个参数的大小) size of arguments 15-8 :8bit (类型,用一个字符的ascii表示这个驱动) ascii character supposedly unique to each driver 7-0 :8bit (功能) function # ====== ==================================

2025-05-12

驱动io模型相关笔记,阻塞io和非阻塞io

## 【1】IO模型 ​ 1.非阻塞 ​ 2.阻塞 ​ 3.IO多路复用(epoll) ​ 4.异步通知 ## 【2】非阻塞IO模型 ```c user: open("/dev/mycdev0",O_RDWR|O_NONBLOCK) //O_NONBLOCK非阻塞 read(fd,buf,sizeof(buf)); ---------------------------------------------------- kernel: ssize_t mycdev_read(struct file *file, char __user *ubuf, size_t size, loff_t *offs) { if(file->f_flags & O_NONBLOCK){ //从底层硬件中读取数据 //将数据拷贝到用户空间即可 } } ``` ## 【3】阻塞IO模型 ```c 阻塞IO模型:应用层以阻塞的方式来访问设备文件,如果硬件的数据没有准备好, 此时进程进入休眠状态,如果设备中的数据准备好了,会产生一个硬件中断。 在中断处理函数唤醒休眠的进程,驱动将硬件数据读取到内核空间,然后再 将数据返回到用户空间。 user: open("/dev/mycdev0",O_RDWR) //阻塞 read(fd,buf,sizeof(buf)); //如果数据没有准备好要阻塞(进程要休眠) ------------------------------------------------------------------- kernel: ssize_t mycdev_read(struct file *f

2025-05-12

【C语言编程】指针与数组关系解析:一维数组、二维数组及数组指针的操作方法综述

内容概要:本文档详细介绍了C语言中指针和数组的相关概念及其相互关系。首先讲解了一维数组的基本定义与地址运算规则,包括数组首地址的概念及其偏移计算方法。接着阐述了指针与一维数组之间的联系,通过具体实例展示了如何用指针来访问数组元素。随后深入探讨了二维数组的定义、访问方式以及地址运算,强调了不同维度下地址偏移的区别。最后介绍了数组指针的定义方式和访问形式,解释了指向数组的指针如何操作多维数组。; 适合人群:正在学习或复习C语言指针和数组概念的学生或程序员,尤其是对指针与数组的关系感到困惑的学习者。; 使用场景及目标:①理解一维数组和指针之间的关系,掌握通过指针访问数组元素的方法;②掌握二维数组的不同访问形式及其地址运算规则;③学会定义和使用数组指针,能够灵活操作多维数组。; 阅读建议:由于指针和数组是C语言中较为抽象和复杂的知识点,建议读者在阅读时结合实际代码进行练习,以便更好地理解和记忆相关概念。同时,在遇到不

2025-05-12

数据结构-单向循环链表.md

typedef int datatype; typedef struct node{ datatype data; struct node *next; }looplist; looplist *looplistCreate() { looplist *h = (looplist *)malloc(sizeof(looplist)); h->data = (datatype)0; h->next = h; return h; } looplist *createNode(datatype value) { looplist *temp = (looplist *)malloc(sizeof(looplist)); temp->data = value; temp->next = null; return temp; } void looplistInsert(looplist *h, datatype value) { looplist *temp = createNode(value); temp->next = h->next; h->next = temp; } void looplistHeadPrint(looplist *h) { looplist *p = h; while(h->next != p) { h = h->next; printf("%-6d ", h->data); } putchar(10); } looplist *looplistCutHead(looplist *h) { looplist *p = h;

2025-05-12

数据结构-单向链表.md

typedef struct node{ int data; struct node *next; }linklist; linklist *linklistcreak() { linklist *h = (linklist*)malloc(sizeof(linklist)); h->data = 0; h->next = NULL; } void linklistHeadInsert(linklist *h, int value) { linklist *temp = (linklist*)malloc(sizeof(linklist)); temp->data = value; temp->next = NUll; temp->next=h->next; h->next = temp; } void linklistPrint(linklist *h) { while(h->next != NULL) { h = h->next; printf("%-6d\n",h->data); } putchar(10); } int linklistIsEmpty(linklist *h) { return h->next == NULL ? 1 : 0; } int linklistHeadDelte(linklist *h) { if(linklistIsEmpty(h)) { printf("linklist empty\n"); return -1; } int value; value = h->next->data;

2025-05-12

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除