自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

书山有路勤为径

无欲则刚

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

转载 进程通信 与 线程通信

1)进程:每个进程有自己的地址空间。两个进程中的地址即使值相同,实际指向的位置也不同。进程间通信一般通过操作系统的公共区进行。2)线程同一进程中的线程因属同一地址空间,可直接通信。不仅是系统内部独立运行的实体,而且是独立竞争资源的实体。线程也被称为轻权进程,同一进程的线程共享全局变量和内存,使得线程之间共享数据很容易也很方便,但会带来某些共享数据的互斥问题。 线程间通信:由于多...

2018-11-30 14:56:06 861

原创 MIPS ASM 指令

#define  __read_32bit_c0_register(s,sel) \({ int __res;   if(0 == sel)\      __asm__ __volatile__(\                         "mfc0 \t %0, " #s "\n\t"                          :"=r" (__res)));\  ...

2018-11-16 16:53:49 973 1

转载 三种主流芯片架构简单比较

来源:https://blog.csdn.net/weixin_39752599/article/details/78664055可以参照的信息:https://blog.csdn.net/shenghuaDay/article/details/78747561三种主流芯片架构  1. ARM ARM是高级精简指令集的简称(Advanced RISC Machine),它是一个32位的精简...

2018-11-16 15:05:32 11370

转载 C 语言 __attribute__ 关键字

来源: https://blog.csdn.net/tabactivity/article/details/78558457attribute是GNU C特色之一,在iOS用的比较广泛.系统中有许多地方使用到. attribute可以设置函数属性(Function Attribute )、变量属性(Variable Attribute )和类型属性(Type Attribute)等.函数属性(...

2018-11-16 15:00:10 1264

原创 C语言 define 关键字

1)取出两个数值中的最小值#define MIN(A,B) (((A)>(B))? (B):(A))2)用宏定义实现一个32 int类型变量 取绝对值#define ABS(n) (((unsigned int)n>>31 == 0x1) ? (-n):(n))#define ABS2(n) ((n ^ (n >> 31)) - (n >> 3...

2018-11-16 10:17:01 3153 1

原创 C 指针 数组

//1 数组名称 与指针 int a[5]={1,2,3,4,5}; int *ptr=(int *)(&a+1); printf("%d,%d",*(a+1),*(ptr-1)); // 2,5 //说明: &g+1的意思是数组类型的常量指针加一 即 数组长度加一 printf("%0x %0x \n", (a+1), (&a+1)); // a+1...

2018-11-15 16:31:54 177

转载 C语言 register关键字

来源:https://www.cnblogs.com/kingqinwang/p/5097335.html一、概念register:这个关键字请求编译器尽可能的将变量存在CPU内部寄存器中,而不是通过内存寻址访问,以提高效率。注意是尽可能,不是绝对。因为,如果定义了很多register变量,可能会超过CPU的寄存器个数,超过容量。所以只是可能。寄存器其实就是一块一块小的存储空间,只不...

2018-11-15 14:37:42 433

转载 C语言 volatile 和 restrict 关键字

(一) volatile1、背景:关于编译器的优化在线程内, 当读取一个变量时,为提高存取速度,编译器优化时有时会先把变量读取到一个寄存器中;以后再取变量值时,就直接从寄存器中取值;当变量值在本线程里改变时,会同时把变量的新值copy到该寄存器中,以便保持一致。当变量在因别的线程等而改变了值,该寄存器的值不会相应改变,从而造成应用程序读取的值和实际的变量值不一致。当该寄存器在因别的线程...

2018-11-15 14:32:18 549

原创 GCC 编译链接 以及相关参数

官方文档: https://gcc.gnu.org/onlinedocs/pdf版本下载:https://gcc.gnu.org/onlinedocs/gcc-4.8.5/gcc.pdf1) 预处理gcc -E test.c -o test.i2) 编译 为汇编代码(Compilation)gcc -S test.i -o test.s3) 汇编...

2018-11-14 18:13:54 1853

原创 关于 for(;;); 和while(1);的区别

(一)gcc编译后好看汇编代码发现无区别:#include <stdio.h>int main(void){#if 1 while(1) { }#else for(;;) { }#endifreturn 0;}$ gcc -E a.c -o a.i$ gcc -S a.i -o a.s//查看两个文件相应的汇编代码,发现是一样的; 都是直接 ...

2018-11-14 12:38:33 1564

转载 GCC编译过程与动态链接库和静态链接库(未整理)

来源:https://www.cnblogs.com/qingjiaowoxiaoxioashou/p/6410588.html根据链接时期的不同,库又有静态库和动态库之分。静态库是在链接阶段被链接的,所以生成的可执行文件就不受库的影响,即使库被删除,程序依然可以成功运行。而动态库是在程序执行的时候被链接的。程序执行完,库仍需保留在系统上,以供程序运行时调用。链接静态库从某种意义上来说是一种复制...

2018-11-13 18:17:18 1300

转载 关于程序的入口函数(main _start...)

参照来源:https://blog.csdn.net/cherisegege/article/details/80297320ld有多种方法设置进程入口地址, 按一下顺序: (编号越前, 优先级越高)1, ld命令行的-e选项2, 连接脚本的ENTRY(SYMBOL)命令   eg.  ENTRY(_start)            /* Entry point of applicati...

2018-11-13 17:00:00 14700

原创 单项链表操作

using namespace std;struct ListNode{ int dat; ListNode* next;};ListNode * head = NULL;ListNode * createNode(void){ ListNode * newNode = (ListNode*)malloc(sizeof(ListNode) * 1); retu...

2018-11-12 15:13:52 146

转载 关于内存对齐

内存对齐可以用一句话来概括:“数据项只能存储在地址是数据项大小的整数倍的内存位置上”例如int类型占用4个字节,地址只能在0,4,8等位置上。字节对齐的缘故,如下的结构体的占用内存是一样struct A{        char a;  // 1byte  实际占用 4 byte        int b;  //4byte 实际占用 4 byte        char c;  /...

2018-11-08 14:10:24 102

原创 elf 文件初识-变量存储

收藏可参考的文章:https://www.cnblogs.com/LiuYanYGZ/p/5574602.html.data 初始化过的全局变量 (含初始化静态变量).bss 未初始化的全局变量(包括 函数内外的未初始化的静态变量).rodata 只读的变量(const)1)关于常量 和 普通变量int* const globle_A = 10; // .rodatacon...

2018-11-02 18:08:15 749

空空如也

空空如也

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

TA关注的人

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