上一页 1 ··· 50 51 52 53 54 55 56 57 58 ··· 124 下一页
摘要: 总: 01:目 > 源 多放越界 ⭐ 02:目 < 源 少放遗漏 ⭐ 问题一: 问题二: 分析:大端序存储顺序:高地址存储低位字节,低地址存储高位字节;小端序存储顺序:低地址存储低位字节,高地址存储高位字节。函数对4字节序的修改只会修改2个字节,在大端序cpu中修改高位字节导致错误。 强制转换灵活性 阅读全文
posted @ 2018-03-11 18:25 瘋耔 阅读(289) 评论(0) 推荐(0) 编辑
摘要: 什么是大端法和小端法? 在几乎所有的机器上,多字节对象都被存储为连续的字节序列,对象的地址为所使用字节中的最小地址。 例如,假设一个类型为int的变量x的地址为0x100,即&x的值为0x100。那么x的4个字节将被存储在存储器的0x100,0x101,0x102和0x103的位置。 字节序即为多字 阅读全文
posted @ 2018-03-11 17:31 瘋耔 阅读(348) 评论(0) 推荐(0) 编辑
摘要: 原文:https://www.cnblogs.com/AlexMiller/p/5509609.html 字节对齐的原因 为了提高 CPU 的存储速度,编译器会对 struct 和 union的存储进行优化,即进行字节对齐。 对齐方式 对于 struct 或 union 中的 struct 或者 u 阅读全文
posted @ 2018-03-11 15:44 瘋耔 阅读(602) 评论(0) 推荐(1) 编辑
摘要: 突然间就想到了long和int到底什么区别(发现有很多问题都是突然间想到的),然后百度、google各种查找,各种书籍:《C++ Primer》、《C程序设计语言》查看,终于明白了一些。下面的话选自《C程序设计语言》: short与long两个限定符的引入可以为我们提供满足实际需要的不同长度的整形数 阅读全文
posted @ 2018-03-11 15:30 瘋耔 阅读(7681) 评论(0) 推荐(1) 编辑
摘要: Linux内核的映射机制设计成三层,在页面目录和页面表中间增设了一层“中间目录”。在代码中,页面目录称为PGD,中间目录称为PMD,而页面表称为PT。PT中的表项称为PTE,PTE是“Page Table Entry”的缩写。PGD、PMD和PT均为数组。在逻辑上也把线性地址从高位到低位划分成4个位 阅读全文
posted @ 2018-03-10 07:52 瘋耔 阅读(346) 评论(0) 推荐(0) 编辑
摘要: 用户程序需要系统提供服务的时候,会通过系统调用产生一个int 0x80的软中断,就会进入到系统调用的入口函数,入口函数存放在以下文件当中: 以下是系统调用的入口: ENTRY(system_call) RING0_INT_FRAME # cant unwind into user space any 阅读全文
posted @ 2018-03-09 23:13 瘋耔 阅读(426) 评论(0) 推荐(0) 编辑
摘要: “一切皆是文件”是 Unix/Linux 的基本哲学之一。不仅普通的文件,目录、字符设备、块设备、套接字等在 Unix/Linux 中都是以文件被对待;它们虽然类型不同,但是对其提供的却是同一套操作界面。另外所谓的块设备:是指支持随机访问的存储设备;与此相对应的是字符设备,它只支持顺序访问。另外Li 阅读全文
posted @ 2018-03-09 21:23 瘋耔 阅读(279) 评论(0) 推荐(0) 编辑
摘要: add platform_device之后,需要注意的一个地方是这里,add是通过系统初始化里边调用platform_add_devices把所有放置在板级platform_device数组中的所有platform_device逐次调用platform_device_register添加到系统中去, 阅读全文
posted @ 2018-03-09 18:34 瘋耔 阅读(420) 评论(0) 推荐(0) 编辑
摘要: 各类文件的区别与作用: 1、对于.so文件 .so文件是用户层的动态链接库,用于用户层的动态链接使用,内核态的代码同样不能直接访问。 2、对于.ko文件 obj-m = *.oobj-y = *.o上面两者的区别在于,前者才会生成ko文件,后者只是代码编译进内核,并不生成ko文件。 .ko文件是内核 阅读全文
posted @ 2018-03-09 16:46 瘋耔 阅读(979) 评论(0) 推荐(0) 编辑
摘要: 一、中断处理为什么要下半部?Linux在中断处理中间中断处理分了上半部和下半部,目的就是提高系统的响应能力和并发能力。通俗一点来讲:当一个中断产生,调用该中断对应的处理程序(上半部)然后告诉系统,对应的后半部可以执行了。然后中断处理程序就返回,下半部会在合适的时机有系统调用。这样一来就大大的减少了中 阅读全文
posted @ 2018-03-08 10:03 瘋耔 阅读(439) 评论(0) 推荐(0) 编辑
摘要: 这是题目给出的答案:第一题,~A =0xfffffff5,int值 为-11,但输出的是uint。所以输出4294967285 第二题,c=0x10,输出的是int,最高位为1,是负数,所以它的值就是0x00的补码就是128,所以输出-128。这两道题都是在考察二进制向int或uint转换时的最高位 阅读全文
posted @ 2018-03-05 22:58 瘋耔 阅读(472) 评论(0) 推荐(0) 编辑
摘要: 因为经常需要和不同的Calling Convention打交道,前段时间整理了一下它们之间的区别,如下: 清理堆栈 参数压栈顺序 命名规则 (MSVC++) 备注 Cdecl 调用者 (Caller) 从右往左 FuncName 因为是调用者清理Stack,因此允许变参 (如printf) Pasc 阅读全文
posted @ 2018-03-05 19:12 瘋耔 阅读(221) 评论(0) 推荐(0) 编辑
摘要: 不能传递, str还是0; str值为1; 如下例子: -形参 同级别,不能传递; 这样可以; 这其实是一个参数传递的问题.修改变量值需要传递该变量类型的一级指针;修改一级指针指需要传递对应类型的二级指针. 阅读全文
posted @ 2018-03-05 19:10 瘋耔 阅读(143) 评论(0) 推荐(0) 编辑
摘要: 1 input输入子系统整体流程 本节分析input子系统在内核中的实现,包括输入子系统(Input Core),事件处理层(Event Handler)和设备驱动层。由于上节代码讲解了设备驱动层的写法,因此在开头部分会从设备驱动层做为线索,分析输入子系统和事件处理层是如何配合的,最后从用户角度出发 阅读全文
posted @ 2018-03-04 17:41 瘋耔 阅读(398) 评论(0) 推荐(0) 编辑
摘要: 1.之前我们学的都是字符设备驱动,先来回忆一下 字符设备驱动: 当我们的应用层读写(read()/write())字符设备驱动时,是按字节/字符来读写数据的,期间没有任何缓存区,因为数据量小,不能随机读取数据,例如:按键、LED、鼠标、键盘等 2.接下来本节开始学习块设备驱动 块设备: 块设备是i/ 阅读全文
posted @ 2018-03-03 17:35 瘋耔 阅读(384) 评论(0) 推荐(0) 编辑
上一页 1 ··· 50 51 52 53 54 55 56 57 58 ··· 124 下一页
跳至侧栏