ARM处理器共有7种运行模式,如下表: 处理器模式 描述 用户模式(User, usr) 正常程序执行的模式 快速中断模式(FIQ, fiq) 用于高速数据传输和通道处理 外部中断模式(IRQ, irq) 用于通常的中断处理 特权模式(Supervisor, sve) 供操作系统使用的一种保护模式 数据访问中止模式(Abort, abt) 用于虚拟存储及存储保护 未定义指令中止模式(Undefined, und) 用于支持用过软件仿真硬件的协处理器 系统模式(System, sys) 用于运行特…
ARM处理器共有37个寄存器,其中包括: 31个通用寄存器,包括程序计数器(PC)在内,寄存器都是32位: 6个状态寄存器,这些寄存器都是32位的,目前只使用了其中12位: 通用寄存器 可以分为下面3类: 未备份寄存器,包括R0~R7: 对于每一个未备份寄存器来说,在所有的处理器模式下指的都是同一个物理寄存器.在异常中断造成处理器模式切换时,由于不同的处理器模式使用相同的物理寄存器,可能造成寄存器中数据被破坏. 备份寄存器,包括R8~R14: 对于备份寄存器R8~R12来说,每个寄存器对应两个不…
转自:http://www.makaidong.com/%E5%8D%9A%E5%AE%A2%E5%9B%AD%E6%96%87/71405.shtml "C++Windows核心编程读书笔记":   关键词:c++windows 核心 编程 读书笔记   这篇笔记是我在读<windows核心编程>第5版时做的记录和总结(部分章节是第4版的书),没有摘抄原句,包含了很多我个人的思考和对实现的推断,因此不少条款和windows实际机制可能有出入,但应该是合理的.开头几章由于我…
CSAPP 并发编程笔记 并发和并行 并发:Concurrency,只要时间上重叠就算并发,可以是单处理器交替处理 并行:Parallel,属于并发的一种特殊情况(真子集),多核/多 CPU 同时处理 构造并发程序的方法 现代操作系统提供了 3 种基本的构造并发程序的方法: 进程:每个逻辑控制流都是一个进程,由内核调度和维护. I/O 多路复用 :在一个进程上下文中显式地调度他们自己的逻辑流.逻辑流被模型化为状态机. 线程:运行在单一进程上下文中的逻辑流,由内核进行调度.可以看作上面两种方式的混…
Motivation 世俗一把,看看前端的JavaScript究竟能做什么. 顺便检验一下自己的学习能力. Audience 想看偏后台的Java程序员关于前端JavaScript的认识的职业前端工程师.全栈工程师. 本人技术积累: 3年+语义网技术研究经验: 1年+Java Web开发经验(SSH+jQuery).已读过<HTTP权威指南>.有REST架构风格的意识: 粗略读过APUE.UNP第一卷,稍微详细的读过Netty in Action MEAP5. Scope Node.js文件.…
python高级编程读书笔记(一) python 高级编程读书笔记,记录一下基础和高级用法 python2和python3兼容处理 使用sys模块使程序python2和python3兼容 import sys ver=sys.version_info#(major=3, minor=6, micro=6) if ver<(3,0,0):# 3是版本号,0是此版本号,第二个0修订号.    import urllib2else:   import urllib  获取当前环境所用的python包…
ARM处理器的7种运行模式 用户模式( usr ):ARM处理器正常的程序执行状态: 快速中断模式( fiq ):用于高速数据传输或通道处理: 外部中断模式( irq):用于通常的中断处理: 管理模式( svc ):操作系统使用的保护模式: 数据访问终止模式( abt ):当数据或指令预取终止时进入该模式,可用于虚拟存储及存储保护: 未定义指令中止模式( und ):当未定义的指令执行时进入该模式,可用于支持硬件协处理器的软件仿真: 系统模式( sys ):运行具有特权的操作系统任务: 除用户模…
从这周开始逐渐的进入学习状态,每天晚上都会坚持写c程序,并且伴随对这本书的深入,希望能写出更高质量的读书笔记和程序. 本书的第一章,介绍了一些关于unix的基础知识,在这里我不想去讨论linux到底是不是unix或者和unix的关系是什么这样的问题,只针对对自己有价值的知识点进行分析. 第一节 登录 第一节中,作者叙述了unix下用户登录的基本过程,包括保存用户口令的文件 /etc/passwd , 以及该文件的格式,该口令文件中的登录项的组成结构为由7个冒号分隔的字符串,依次是 : 登录名 加…
会集中这段时间写UNIX网络编程这本书的读书笔记,准备读三本,这一系类的文章会不断更新,一直会持续一个月多,每篇的前半部分是书中讲述的内容,每篇文章的后半部分是自己的心得体会,文章中的红色内容是很重要的部分. http://blog.csdn.net/yusiguyuan/article/details/11760187 UNIX网络编程---简介…
简介 <MacTalk·人生元编程>是一本随笔文集,主要内容来自作者的微信公众平台"MacTalk By 池建强".本书撰写于2013年,书中时间线却不止于此.作者以一个70 后程序员的笔触,立于Mac 之上,讲述技术与人文的故事,有历史,有明天,有技术,有人生.70 多篇文章划分为六大主题:Mac.程序员与编程.科技与人文.人物.工具.职场.篇篇独立成文,可拆可合,随时阅读. 我主要是通过http://beyondvincent.com/2014/02/13/2014-0…
概述 这是我读<javascript函数式编程>的读书笔记,供以后开发时参考,相信对其他人也有用. 说明:虽然本书是基于underscore.js库写的,但是其中的理念和思考方式都讲的很好,值得一读.不过如果不熟悉underscore.js库的话,读起来会有点困难. <javascript函数式编程>读书笔记1 对象的不变性 函数式编程中函数是一等公民,所以对于数据来说,需要他们是不可变的.另外,对象的不可变确实能够带来一些好处,比如:如果数据是不可变的,那么可以直接通过"…
概述 这是我读<javascript函数式编程>的读书笔记,供以后开发时参考,相信对其他人也有用. 说明:虽然本书是基于underscore.js库写的,但是其中的理念和思考方式都讲的很好,值得一读.不过如果不熟悉underscore.js库的话,读起来会有点困难. 从一段代码说起 由于parsInt函数有2个参数,所以下面的代码会得出意想不到的结果: [3.5, 5.3, 9.8, 13.4, 16.9].map(parseInt); //输出 [3, NaN, NaN, 1, 1] 原因是…
----------------------------------------------<Java并发编程实战>读书笔记------------------------------------------------------------------------------ 第二章 线程安全性 java同步 1.sychronized  2.volatile类型  3.显示锁  4.原子变量性能优化之原则:首先保证代码能正确运行,然后再提高代码速度.并且,只是当性能测试结果和应用需求需要…
Hadoop的本地模式为Hadoop的默认模式,不需要启用单独进程,直接可以运行,测试和开发时使用. 在<啃掉Hadoop系列笔记(02)-Hadoop运行环境搭建>中若环境搭建成功,则直接可以使用本地模式. 在这里我们运行官方的两个案例 1.官方grep案例 1)在hadoop-2.7.2文件夹下面创建一个input文件夹…
1. 一些原则 RIM(Remote Method Invocation):远程方法调用 Race Condition:竞态条件 Servlet要满足多个线程的调用,必须是线程安全的 远程对象,即通过远程方法调用将对象放入字节流中传给其他jvm的对象,要特别注意对象中的共享状态 Shared:共享的 Mutable:可变的 当设计线程安全的类时,良好的面向对象技术.不可修改性,以及明晰的不变性规范都能起到一定的帮助作用: 无状态对象是线程安全的:没有任何域也不包含任何对其他类中域的引用(比如St…
Outline 1 概述和安装 1.1 安装Node 1.2 Node简介 2 Node核心API基础 2.1 加载模块 2.2 应用缓冲区处理.编码和解码二进制数据 2.3 使用时间发射器模式简化事件绑定 2.4 使用定时器制定函数执行计划 1 概述和安装 1.1 安装Node 参见Ubuntu 14.04下搭建Node.js的开发环境或其他类似文章. npm: Node包管理器 两种主要的工作模式:全局模式.本地模式 本地模式:安装到当前目录下node_modules目录中. 常用命令: n…
ARM处理器的7中执行模式:usr.fiq.irq.svc.abt.und.sys. ARM处理器共37个寄存器:31个通用寄存器(未备份寄存器R0-R7,在全部模式下指的都是同一个物理寄存器:备份寄存器R8-R12,每一个寄存器相应两个不同的物理寄存器.对于R13[sp]和R14[lr]来说,每一个寄存器相应6个不同的寄存器:程序计数器R15[pc]),6个状态寄存器(当前程序状态寄存器[cpsr]:5个备份状态寄存器[spsr]). ARM体系的异常中断:复位.没有定义指令.软件中断.指令预…
ARM存储系统:ARM中用于存储管理的系统控制协处理器CP15:包括16个32位寄存器,其编号为0到15.实际上对于某些编号的寄存器可能相应有多个物理寄存器. 訪问CP15寄存器的指令:MRC.MCR. CP15中的寄存器C0和C1:C0中存放ARM相关的一些标示符:C1是一个控制寄存器,用于禁止/使能MMU.配置存储系统等.比如以下的代码序列使能MMU:MRC P15.0,R0,C1,0,0ORR R0,#01MCR P15.0,R0,C1.0,0ARM中的存储管理单元MMU:完毕虚拟存储空间…
GET通经常使用于包括定义常量的源文件. 比如:GET 2440addr.inc 用AREA定义一个段.ENTRY用于指定程序的入口点,END用于告诉汇编器源文件已经结束. 比如: AREA init, CODE, READONLY ENTRY ...... END EQU用于定义常量,提醒:在每条ARM指令前必须有空格.可是用EQU定义常量时,必须顶格写,否则编译器报错. LTORG用于声明一个文字池,所谓文字池就是一个数据缓存区. ALIGN伪操作通过调整地址指针,使得当前地址满足一定的对齐…
本篇主干内容是TCP/IP网络编程1-9章学习笔记 1. linux文件描述符 描述符从3开始以由小到大的顺序编号,0,1,2,分配给标准I/O用作标准输入.标准输出和标准错误. 2. 协议族与套接字类型(socket函数第一.二个参数) domain常用 : IPv4协议族 PF_INET: type: SOCK_STREAM(面向连接,TCP), SOCK_DRGAM(面向消息, UDP) 选用TCP时,第三个参数可以为0. 3.地址族与数据序列 4字节IP地址分类: A类地址: 首字节范围…
在linux中,文件的相关信息都记录在stat这个结构体中,文件长度是记录在stat的st_size成员中.对于普通文件,其长度可以为0,目录的长度一般为1024的倍数,这与linux文件系统中block的大小是有关系的,符号链接的长度是它所指向的文件名字的长度. 文件的截短可以在使用open函数时,用O_TRUNC标记,这样将会在打开文件时将文件的内容清空.linux专门为我们提供了两个函数以指定定的长度打开文件: int truncate(const char* pathname,off_t…
unix-like(后面以linux为例)系统中的文件操作只需要五个函数就足够了,open.close.read.write以及lseek.这些操作被称为不带缓存的io,这里有必要说一下带缓存和不带缓存的操作的区别.不带缓存的io是相对于带缓存的io的来说的,带缓存的io有哪些呢.在后面的fwrite.fread函数等标准io操作都是带缓存的io.说了这么多还是没有说清楚带缓存和不带缓存的区别,下面就以write函数和fwrite函数来说明带缓存和不带缓存的区别.虽然write函数叫做不带缓存的…
第四节 输入与输出 上次的笔记中写到的 open, read, write, lseek 以及close ,都是不带缓存的IO函数,这些函数都使用文件描述符进行工作. 上一篇笔记用到的 read(STDIN_FILENO, buf, BUFFSIZE) 和 write(STDOUT_FILENO, buf, n) 函数中的2个参数 STDIN_FILENO 和 STDOUT_FILENO 是 __POSIX__标准的一部分,很多函数原型都在其中,这2个参数定义在 头文件中,他们是标准输入输出的文…
文件I/O模型 Linux的哲学思想,一切皆文件,这也是Linux文件操作的方便之处.系统调用不会分配缓冲区用以返回信息给调用者.所以必须提前分配大小合适的缓冲区并将缓冲区指针传递给系统调用. 1.open open以前没有创建功能,后来通过参数可以设置创建文件.一个进程对能够打开的文件描述符的个数有限制的. open的时候如果指定O_SYNC标志,则会使所有后续输出同步.即调用write会自动都将文件数据和元数据刷新到磁盘.现代的磁盘驱动器均内置大型高速缓存,而默认情况下使用O_SYNC只是将…
导读:由于书的内容较多,内容划分也非常详尽,所以会分好几篇来写. 此页面仅作为跳转,权当个目录来用. 我会分块进行整理,大致如下: 第一章 简介 讲述javascript的历史,不打算整理,同学们大概略读一下即可. 第二至四章 讲述javascript的基本概念 对于没有任何开发经验的同学,可以先看这部分垫垫底. 第五至七章 ECMAScript 这部分是JS的核心内容,但是刚上手的同学肯定看不懂.建议先看比较简单的BOM,DOM部分. 第八.九章 BOM 介绍了JS三大核心之一的BOM,主要看…
Python 中的列表(大小可变的数组)和字典(哈希表)就是内建于语言本身的.在核心语言中提供这些重要的构建单元,可以鼓励人们使用它们, 缩短开发时间与代码量,产生出可读性更好的代码.C不提供, c++功能不够简洁. 面向对象, 可升级:Python 提倡简洁的代码设计.高级的数据结构和模块化的组件,确保灵活性. 一致性并缩短必要的调试时间 扩展性:兼容扩展c和java 易读写,易维护 健壮性:Python 提供了"安全合理"的退出机制, Python由于错误崩溃,解释程序就会转出一个…
第四章 基本tcp 套接口编程 注意区分AF_XXX 和PF_XXX,AF代表address family, PF代表protocol family. 1 socket 函数 2 connect 函数 3 bind 函数 4 listen 函数 注:主动.被动 与 服务器.客户端没有明确的对应关系 linux中定义backlog为 完成队列的最大个数 5 accept 函数 5 getsockname和getpeername的用法及实例 getsockname和getpeername #incl…
第三章 套接字编程简介 每一个 Socket 都用一个半相关描述:{协议,本地地址,本地端口}一个完整的 Socket 则用一个相关描述{协议,本地地址,本地端口,远程地址,远程端口}每一个 Socket 有一个本地的唯一 Socket 号,由操作系统分配. 1.struct sockaddr这个结构用来存储套接字地址.数据定义: struct sockaddr { unsigned short sa_family; /* address族, AF_xxx */ ]; /* 14 bytes的协…
第一章: C/C++语言提供两种不同的编程模式:IPL32和PL64.► IPL32 ● 表示integer/pointer/long三种数据类型是32位(4个字节),在这种模式下,提供32位的地址空间,理论的内存使用限制为4G.► PL64 ● 表示pointer/long两种数据类型是64位(8个字节),提供64位地址空间,使用内存超过4G(达2^60bytes=1EB). more infoabout IPL32 and PL64, please refer to http://www-3…
概述 应用程序可以绕过传输层而直接使用IPv4和IPv6,这称为原始套接口(raw socket).http://www.cnblogs.com/nufangrensheng/p/3583435.html. 原始套接口是一种对原始网络报文进行处理的套接口.原始套接口主要应用在底层网络编程上,同时也是网络黑客的必备手段.例如sniffer.拒绝服务(DoS).IP地址欺骗等都需要在原始套接字的基础上实现. 与原始套接字对应,之前的TCP/UDP的套接字称为标准套接字,如下图所示,为标准套接字与原始…