C、C++、汇编
struct task_struct
这个作者很懒,什么都没留下…
展开
-
深入理解C语言的函数调用过程
本文主要从进程栈空间的层面复习一下C语言中函数调用的具体过程,以加深对一些基础知识的理解。 先看一个最简单的程序:点击(此处)折叠或打开/*test.c*/#include stdio.h>int foo1(int m,int n,int p){ int x = m + n + p; return x转载 2016-09-05 16:25:14 · 491 阅读 · 0 评论 -
ARM汇编必知必会
ARM指令集:ADC 带进位的32位数加法ADD 32位数相加AND 32位数的逻辑与B 在32M空间内的相对跳转指令BIC 32位数的逻辑位清零BKPT 断点指令BL 带链接的相对跳转指令BLX 带链接的切换跳转BX 切换跳转CDP\CDP2 协处理器数据处理操作CLZ 零计数CMN 比较两个数的相反数CMP 32位数比较EOR 32位逻辑异或LDC\LDC2 从...转载 2016-09-06 00:31:04 · 511 阅读 · 0 评论 -
ARM 汇编指令
ARM汇编程序特点:l 所有运算处理都是发生通用寄存器(一般是R0~R14)的之中.所有存储器空间(如C语言变量的本质就是一个存储器空间上的几个BYTE).的值的处理,都是要传送到通用寄存器来完成.因此代码中大量看到LDR,STR指令来传送值.l ARM汇编语句中.当前语句很多时候要隐含的使用上一句的执行结果.而且上一句的执行结果,是放在CPSR寄存器里,(...转载 2016-09-06 00:34:12 · 464 阅读 · 0 评论 -
使用逻辑分析进行UART通信协议分析
使用逻辑分析进行UART通信协议分析本实验过程使用下列软硬件工具实现:硬件设备:逻辑分析仪软件:Saleae Logic1.2.14,NuMicro ISP ProgrammingTool效果目标通过逻辑分析仪抓取uart通信过程中的信号,对其协议进行逆向分析 可用于红外遥控器的解码串口通信协议的分析试验结果 对此段结果进行分析后,即为该通信过程所用的协议 设置项协议展原创 2017-05-13 09:20:13 · 4178 阅读 · 0 评论 -
Linux_数据段、代码段、堆栈段、BSS段的区别
5个数据段 进程(执行的程序)会占用一定数量的内存,它或是用来存放从磁盘载入的程序代码,或是存放取自用户输入的数据等等。不过进程对这些内存的管理方式因内存用途 不一而不尽相同,有些内存是事先静态分配和统一回收的,而有些却是按需要动态分配和回收的。对任何一个普通进程来讲,它都会涉及到5种不同的数据段。Linux进程的五个段下面我们来简单归纳一下进程对应的内存空间中所包含的5种...转载 2016-09-06 21:02:15 · 382 阅读 · 0 评论 -
Linux从程序到进程
计算机如何执行进程呢?这是计算机运行的核心问题。即使已经编写好程序,但程序是死的。只有活的进程才能产出。我们已经从Linux进程基础中了解了进程。现在我们看一下从程序到进程的漫漫征程。 一段程序下面是一个简单的C程序,假设该程序已经编译好,生成可执行文件vamei.exe。#include int glob=0;原创 2016-09-06 00:39:49 · 213 阅读 · 0 评论 -
#、##和__VA_ARGS__
1.#假如希望在字符串中包含宏参数,ANSI C允许这样作,在类函数宏的替换部分,#符号用作一个预处理运算符,它可以把语言符号转化为字符串。例如,如果x是一个宏参量,那么#x可以把参数名转化成相应的字符串。该过程称为字符串化(stringizing).#incldue #define PSQR(x) printf("the square of" #x "is %d.\n",(x)*(x原创 2016-09-06 00:36:37 · 268 阅读 · 0 评论 -
总结typedef用法
经常碰到typedef使用,今天又看到一个是在头文件里的。大体如下:{{{ #define _GNU_SOURCE#include typedef struct cpu_set_t ;size_t CPU_SETSIZE ;void CPU_SET(unsigned long cpu , cpu_set_t *set);void CPU_CLR(unsigned lon原创 2016-09-06 00:34:53 · 396 阅读 · 0 评论 -
.a文件.o文件和.so文件的区别
o 就相当于windows里的obj文件 .a 是好多个.o合在一起,用于静态连接 .so 是shared object,用于动态连接的,和dll差不多原创 2016-09-06 00:21:06 · 4604 阅读 · 0 评论 -
C语言测试题的讲解分析
int x=35; char str[10]; //问:strlen(str)和sizeof(str)的值分别是多少? // strlen(str) 值不确定,strlen根据'\0'确定字符串是否结束。 // sizeof(str)=10 sizeof一个数组为数组长度 strcpy(str,"www.it315.org"/*共13个字母*/); //问:此时x和转载 2016-09-05 16:33:33 · 232 阅读 · 0 评论 -
从新版本系统调用学习宏定义的用法
这段时间又碰到系统调用这个家伙,结果在我当前用的3.0.x内核里全变样了。为了将这个问题弄明白,还得自己动手才行,这里非常感谢CSDN的"海风林影"兄弟提供的博文和相关参考文献,还是那句话“成果和荣耀归于前辈”。 很多人也都发现,在2.6.28及其之后的内核源码里,系统调用的写法发生了比较大的变化,出现了大量宏定义的代码。在源代码里,以前的诸如open()系统调用的sys_open()转载 2016-09-05 16:31:50 · 241 阅读 · 0 评论 -
ARM处理器工作模式
ARM有7种处理器模式,其由CPSR的[4:0]位决定。用户模USR:正常程序动行的工作模式。只能读CPSR不能写系统模式sys:与用户模式共用一套寄存器。用于支持操作系统的特权任务模式,但它具有直接切换到其它模式的特权。管理模式svc:操作系统的特权任务模式。系统复位和软件中断时才进入这个模式中止abt:在ARM7中没多大做用.另外还有未定义und中断(irq),快速中断(fiq...转载 2016-09-06 00:31:51 · 209 阅读 · 0 评论