0 error ~ 0 warning
码龄6年
关注
提问 私信
  • 博客:97,395
    社区:148
    动态:24
    97,567
    总访问量
  • 58
    原创
  • 29,831
    排名
  • 156
    粉丝
  • 0
    铁粉
  • 学习成就

个人简介:世界上有10种人:一种是懂得二进制的,另一种是不懂二进制的。

IP属地以运营商信息为准,境内显示到省(区、市),境外显示到国家(地区)
IP 属地:江苏省
  • 加入CSDN时间: 2018-09-25
博客简介:

凉、介熙

查看详细资料
  • 原力等级
    成就
    当前等级
    3
    当前总分
    308
    当月
    3
个人成就
  • 获得269次点赞
  • 内容获得38次评论
  • 获得871次收藏
  • 代码片获得805次分享
创作历程
  • 3篇
    2024年
  • 10篇
    2023年
  • 6篇
    2021年
  • 39篇
    2020年
成就勋章
TA的专栏
  • 计算机杂说
    10篇
  • 计算机网络
    11篇
  • 程序员的自我修养——链接、装载与库
    6篇
  • Linux
    16篇
  • PCIe 开发
  • 区块链
    1篇
  • C/C++
    5篇
  • 操作系统
    1篇
  • 汇编语言与技术接口
    2篇
  • Python 爬虫
    6篇
  • 数据结构
兴趣领域 设置
  • 人工智能
    机器学习
创作活动更多

如何做好一份技术文档?

无论你是技术大神还是初涉此领域的新手,都欢迎分享你的宝贵经验、独到见解与创新方法,为技术传播之路点亮明灯!

182人参与 去创作
  • 最近
  • 文章
  • 代码仓
  • 资源
  • 问答
  • 帖子
  • 视频
  • 课程
  • 关注/订阅/互动
  • 收藏
搜TA的内容
搜索 取消

ARM 栈和函数调用

ARM 栈和函数调用
原创
发布博客 2024.09.21 ·
1033 阅读 ·
28 点赞 ·
0 评论 ·
9 收藏

如何理解栈的增长方向

函数调用栈,简称栈。不管是函数的执行还是函数调用,栈都起着非常重要的作用
原创
发布博客 2024.05.25 ·
560 阅读 ·
3 点赞 ·
0 评论 ·
5 收藏

Linux delay相关函数实现

这里讨论基于 ARM 处理器架构的实现,udelay 实现在arch/arm/include/asm/delay.h中。gcc 的内建函数 __builtin_constant_p 用于判断 n 是否为编译时常数,如果 n 是常数,返回 1,否则返回 0。当然,从注释中我们可以看到,include/linux/delay.h 目录下只是通用的实现,可以被架构相关的实现覆盖掉。至此,loops_per_jiffy 变量就已经计算完毕,后面的 udelay 、BogoMIPS 计算都会用到该变量。
原创
发布博客 2024.01.28 ·
1060 阅读 ·
15 点赞 ·
0 评论 ·
27 收藏

X86_64 栈和函数调用

Intel 系列处理器通常称为x86,目前常用的笔记本或台式机都是 64 位的处理器,这些处理器使用的机器语言一般都是 x86_64,我记得以前学习微机原理课的时候,学习的还是 8086 处理器上的汇编。8086 是Intel的第一代16位的处理器,只有8个16位的寄存器,而现在的 64 位处理器对其进行了扩展,共有16个64位的寄存器。需要注意这里的栈是倒着画的,栈顶在下面,栈顶的内存地址是更小的,换句话说栈增长的方向是内存地址减小的方向。寄存器,这个寄存器中存储着栈顶的地址。到这里,函数栈情况如下图。
原创
发布博客 2023.10.15 ·
647 阅读 ·
0 点赞 ·
0 评论 ·
2 收藏

可执行文件 elf 和 bin

在 Embedded(嵌入式)中,如果上电开始运行,没有 OS 系统,如果将 ELF 格式的文件烧写进去, 包含一些 ELF 文件的符号表字符表之类的section,运行碰到这些,就会导致失败,如果用 objcopy 生成纯粹的二进制文件,去除掉符号表之类的 section,只将代码段数据段保留下来,程序就可以一步一步运行。在Linux OS上,为了运行可执行文件,他们是遵循 ELF 格式的,通常 gcc -o test test.c,生成的 test 文件就是 ELF 格式的。ELF 文件并执行。
原创
发布博客 2023.10.05 ·
736 阅读 ·
2 点赞 ·
0 评论 ·
5 收藏

关于内存对齐你需要了解的事

这篇文章的目的是带你了解什么是内存对齐,具体的内存对齐的细节、处理方式、不同架构则不会去详细讲解,只做科普文用。内存对齐和数据在内存中的位置有关。内存对齐以字节为单位进行,一个变量的内存地址如果正好等于它的长度的整数倍,则称为自然对齐。比如在32位 cpu 下,一个 u32 的内存地址为0x00000004 ,则属于自然对齐。内存空间按照字节进行划分,理论上可以从任意地址开始读取,实际上会要求读取数据的首地址是某一个值的整数倍。
原创
发布博客 2023.10.05 ·
1717 阅读 ·
0 点赞 ·
0 评论 ·
8 收藏

动态链接那些事

动态链接那些事
原创
发布博客 2023.10.03 ·
1299 阅读 ·
2 点赞 ·
2 评论 ·
5 收藏

可执行文件的装载与进程

当我们在Linux系统的bash下输入一个命令执行某个ELF程序时,Linux系统是怎样装载这个ELF文件并且执行它的呢?首先在用户层面,bash进程会调用fork()系统调用创建一个新的进程,然后新的进程调用execve()系统调用执行指定的ELF文件,原先的bash进程继续返回等待刚才启动的新进程结束,然后继续等待用户输入命令。它的三个参数分别是被执行的程序文件名、执行参数和环境变量。在进入execve()系统调用之后,Linux内核就开始进行真正的装载工作。
原创
发布博客 2023.09.04 ·
513 阅读 ·
1 点赞 ·
0 评论 ·
4 收藏

静态链接过程

1、空间与地址的分配  现在的链接器空间分配的策略基本上都采用 “相似段合并” 的方式。通过将所有相同类型的 section 合并到一起,例如将所有输入目标文件的 .text 合并(按顺序合并)到输出文件的 .text 节中;然后,链接器根据运行平台中进程虚拟地址空间的划分规则,为所有输入目标文件中定义的节和符号分配运行时内存地址;完成之后,程序中的每条指令和符号都有唯一的运行时内存地址了。链接器的空间分配示意如下:  使用这种方法的链接器都采用两步链接的方法。  第一步,空间与地址分配。扫描所有的
原创
发布博客 2023.07.26 ·
586 阅读 ·
0 点赞 ·
0 评论 ·
3 收藏

ELF文件结构描述

经过上面的描述,我们了解到了强符号,弱符号,强引用,弱引用的概念。强符号可以替换弱符号。弱引用可以避免函数未定义的错误。强符号替换弱符号一些库中对外接口可以声明为弱符号。比如:实现一个 myadd(int num1,int num2) 接口,之后再将项目中的所有 add 替换为 myadd。这种方式可行,但是存在缺点:修改量大,并且后续人员不清楚背景,很有可能继续使用熟悉的 add 接口。更新 math 库,从更本解决此问题。这种方式比较推荐。
原创
发布博客 2023.07.22 ·
275 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

目标文件里有什么

1、目标文件  目标文件编译源代码后生成的文件叫做目标文件。
原创
发布博客 2023.07.21 ·
252 阅读 ·
0 点赞 ·
2 评论 ·
2 收藏

关于网络命令 ping 你了解多少

网络 ping 命令详解
原创
发布博客 2023.05.15 ·
2725 阅读 ·
3 点赞 ·
0 评论 ·
13 收藏

lwip - 链路层收发以太网数据帧

以太网帧中的数据长度规定最小46字节,最大1500字节,ARP和RARP数据包的长度不够46字节,要在后面补填充位。最大值1500称为以太网的最大传输单元(MTU),不同的网络类型有不同的MTU,如果一个数据包从以太网路由到拨号链路上,数据包长度大于拨号链路的MTU了,则需要对数据包进行分片(fragmentation)。注意,MTU这个概念指数据帧中有效载荷的最大长度,不包括帧首部的长度。封装后的数据包称为数据帧,数据帧的封装的信息决定了数据如何传输。
原创
发布博客 2023.04.22 ·
1376 阅读 ·
0 点赞 ·
0 评论 ·
3 收藏

Linux内核之文件描述符、文件表、i-node table

前言文件描述符在unix系统中几乎无处不在网络接口 select、poll、epoll 涉及到文件描述符IO接口 read、write 也涉及到文件描述符从形式上来看文件描述就是一个整数,那么我们可不可以更进一步去了解一下呢?1、文件描述符是一个int型整数2、文件描述符创建是有一定的规则。在创建文件描述符的时候系统会在files_struct数组中,去找到一个当前没有被使用的一个最小下标,作为一个新的文件描述符。3、程序开始运行时,有三个文件被自动打开了,打开时分别使用了这三个文件描述符
原创
发布博客 2021.04.27 ·
930 阅读 ·
3 点赞 ·
0 评论 ·
7 收藏

操作系统中的锁——信号量(同步信号量、互斥信号量)、P/V操作、自旋锁

面试中常会问及操作系统中锁的概念,这里就来讲解一下。
原创
发布博客 2021.03.23 ·
2778 阅读 ·
0 点赞 ·
1 评论 ·
22 收藏

C语言关键字、函数杂谈(1)

1、static关键字static关键的,是用来声明静态变量的。主要作用有两个:隐藏与隔离的作用(当同时编译多个文件)保持变量内容的持久性下面就这两个功能进行详解:(1)隐藏与隔离的作用(当同时编译多个文件):​  上面已经阐述过,全局变量虽然属于静态存储方式,但并不是静态变量。全局变量的作用域是整个源程序,当一个源程序由多个源文件组成时,全局变量在各个源文件中都是有效的。​​  如果我们希望全局变量仅限于在本源文件中使用,在其他源文件中不能引用,也就是说限制其作用域只在定义该变量的源文件
原创
发布博客 2021.03.22 ·
695 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

C/C++ 之 内存管理

C/C++中的内存管理到底是什么样的呢? 网上的说法很多,分区、分段。这里将为大家详细讲解一下。
原创
发布博客 2021.03.22 ·
215 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

C 函数指针

C语言的函数指针?C语言、C++的结构体有哪些区别?C++的类与结构体有哪些区别?
原创
发布博客 2021.03.07 ·
280 阅读 ·
2 点赞 ·
1 评论 ·
0 收藏

C++何时调用构造函数,何时调用析构函数

前言
原创
发布博客 2021.03.05 ·
9873 阅读 ·
32 点赞 ·
2 评论 ·
108 收藏

Linux 入门基础——常用命令(一)

初识Linux,刚刚上手,希望可以学到更多的Linux知识。
原创
发布博客 2020.02.28 ·
7777 阅读 ·
20 点赞 ·
1 评论 ·
131 收藏
加载更多