源码分析
文章平均质量分 73
judyge
学习好 能力强。
展开
-
Android_Servlet验证的简单登录程序
该程序通过提交数据给服务器,服务器通过servlet验证后,返回信息给客户端。先上效果图吧:此登录的客户端Demo是通过下载的源码,服务器端我自己写的。登录成功后效果:1、Android客户端的代码为:[java] view plaincopypackage com.loulijun转载 2015-05-09 11:14:20 · 646 阅读 · 0 评论 -
我的Visual Studio 2013常用快捷键
声明及广告所有功能针对C#开发配置而写,部分功能可能由插件提供,我会尽可能标注出相应的插件名称。为行文方便,所有快捷键以大写形式表示。太常用的快捷键,如Ctrl + C, Ctrl + Z, Ctrl + Y等等不写,主要还是以VS特有或最常用的为主。本文叙述的大部分快捷键可用于Office系列软件。国际惯例,Q群:185718116。重置配置的方法编辑系代码提示Ctr转载 2016-01-15 21:28:34 · 504 阅读 · 0 评论 -
Microsoft Visual Studio (VS)2010 常用快捷键大全 便捷开发
显示不全请点击全屏阅读VS2010快捷键设置1.进入工具—-选项 对话框2.选择 环境—->键盘3.在 【显示命令包含】 下面的对话框中输入“对齐”关键字,然后就会在这个编辑框下面一个文本窗口中显示关于“对齐”一系列的“某某对齐”操作命令,选中你想查看的,就会在【选定命令的快捷键】一栏中显示其快捷键了,也可以输入其他的文字,比如说“在浏览器中查看”、“注释选择内容”等。转载 2016-01-15 21:30:33 · 773 阅读 · 0 评论 -
android Button源码分析
在Android中Button是一个非常常用的控件,下面我们就一起来分析一下Button源代码。1 Button.java Button的源代码如下,非常简单几个构造器,它继承自TextView,添加了一个默认的com.android.internal.R.attr.buttonStyle样式。如果有时间可以学习一下TextView的源码public class Button exte原创 2016-01-06 23:10:31 · 633 阅读 · 0 评论 -
android分析windowManager、window、viewGroup之间关系
本文将主要介绍addview方法,在windowManager、window、viewGroup中的实现原理。首先将介绍这些类结构关系,然后分析其内在联系,介绍实现原理,最后介绍重要的一个参数windowManager.layoutParams。文章预计分为三个部分。 一、首先介绍一下上述接口、类的结构 接口:windowManager 用来在应用与window之间原创 2016-01-06 23:12:28 · 537 阅读 · 0 评论 -
基址加变址寻址方式
操作数在存储器中,其有效地址是一个基址寄存器(BX、BP)和一个变址寄存器(SI、DI)的内容之和。其有效地址的计算公式如公式所示。在不使用段超越前缀的情况下,规定:如果有效地址中含有BP,则缺省的段寄存器为SS;否则,缺省的段寄存器为DS。例:假设指令:MOV BX, [BX+SI],在执行时,(DS)=1000H,(BX)=2100H,(SI)=0011H,内存单元12111H转载 2016-08-27 10:37:19 · 11127 阅读 · 0 评论 -
相对基址加变址寻址方式
操作数在存储器中,其有效地址是一个基址寄存器(BX、BP)的值、一个变址寄存器(SI、DI)的值和指令中的8位/16位偏移量之和。其有效地址的计算公式如公式所示。在不使用段超越前缀的情况下,规定:如果有效地址中含有BP,则其缺省的段寄存器为SS;否则,其缺省的段寄存器为DS。指令中给出的8位/16位偏移量用补码表示。在计算有效地址时,如果偏移量是8位,则进行符号扩展成16位。当转载 2016-08-27 10:38:22 · 9208 阅读 · 0 评论 -
32位地址的寻址方式
在32位微机系统中,除了支持前面的七种寻址方式外,又提供了一种更灵活、方便,但也更复杂的内存寻址方式,从而使内存地址的寻址范围得到了进一步扩大。在用16位寄存器来访问存储单元时,只能使用基地址寄存器(BX和BP)和变址寄存器(SI和DI)来作为地址偏移量的一部分,但在用32位寄存器寻址时,不存在上述限制,所有32位寄存器(EAX、EBX、ECX、EDX、ESI、EDI、EBP和ESP)都可转载 2016-08-27 10:40:22 · 5283 阅读 · 1 评论 -
NASM中SECTION的概念
SECTION是一种组织代码和存储的方式NASM支持标准的.data, .text和.bss,编译后的程序文件中的内存地址顺序是.text, .data,用户自定义section。NASM支持用户自定义section同名的section,编译后会放在同一块连续的内存上[SECTION .data]var1 db 0x01[SECTION .text]转载 2016-08-27 11:31:10 · 590 阅读 · 0 评论 -
汇编语言笔记10-CALL和RET指令
☞模块化程序设计模块化程序设计 汇编语言通过call和ret指令实现了模块化程序设计。可以实现多个相互联系、功能独立的子程序来解决一个复杂的问题。子程序的框架 1 assume cs:code 2 code segment 3 main: : 4 : 5 call sub1转载 2016-08-27 11:32:12 · 608 阅读 · 0 评论 -
实模式寻址方式
逻辑地址:即逻辑上的地址,实模式下由“段基地址+段内偏移”组成;保护模式下由“段选择符+段内偏移”组成。线性地址:逻辑地址经分段机制后就成线性地址,它是平坦的;如果不启用分页,那么此线性地址即物理地址。物理地址:线性地址经分页转换后就成了物理地址。实模式寻址方式 刚才说了8086CPU数据总线为16位,也就是一次最多能取2^16=64KB数据,这个数据也解释了实模式下为什么每转载 2016-08-27 13:50:29 · 4989 阅读 · 0 评论 -
两张图看懂GDT、GDTR、LDT、LDTR的关系
段选择器:32位汇编中16位段寄存器(CS、DS、ES、SS、FS、GS)中不再存放段基址,而 是段描述符在段描述符表中的索引值,D3-D15位是索引值,D0-D1位是优先级(RPL)用于特权检查,D2位是描述符表引用指示位TI,TI=0指 示从全局描述表GDT中读取描述符,TI=1指示从局部描述符中LDT中读取描述符。这些信息总称段选择器(段选择子).段描述符:8个 字节64位,每一个段转载 2016-08-27 16:29:55 · 1462 阅读 · 0 评论 -
初识保护模式
书本第三章第一节是《认识保护模式》,初步讲解了保护模式下全局描述符表GDT、段描述符、段选择子、从实模式进入保护模式等内容。去年看这个的时候,如果不是有以前学习保护模式时做的笔记,还真不好懂呢,因为作者提供的材料不够系统,对仅学习过8086汇编语言的人来说,是不太好理解的。下面的内容大体以我以前做的笔记为纲,较为简略,只说明要点。(本来还可以参考下以前学习保护模式时收集的资料的,很可惜,移动硬盘坏转载 2016-08-27 16:46:17 · 668 阅读 · 0 评论 -
保护模式
之前的程序都是在实模式下面的程序,只能访问1M的地址,2^20intel退出32位cpu完全兼容16位cpu,重要的一点是可以继续使用16模式下的寻址方法。32位cpu地址线为32根,最大内存为4G,如何利用原来的seg:offset表示方式,来表示32根地址线。把32位的物理内存写入一个表中,每个表项记录内存的开始地址和大小,边界,16位的寄存器用来表示表的索引。比如:当16bi转载 2016-08-27 16:49:40 · 497 阅读 · 0 评论 -
引导程序为什么要org 07c00h
WHY我们知道编译器本身在汇编时对指令的地址计算的是相对地址。而对于引导扇区,一切只是从无生有的阶段,是按绝对地址执行,那么对于用相对地址编译的执行码就要换算成绝对地址。一般而言,“真实开始执行的引导扇区"都会固定装载到07c00处,主意这句话是说一个真正的引导扇区。对于硬盘上,会有一个主引导扇区,然后由它来控制和其它引导扇区,比如grub控制windows,linux等。那么转载 2016-08-27 17:09:07 · 789 阅读 · 0 评论 -
保护模式下寻址(易懂)
网上看到的一强帖,不转不行了,牛人啊,把这段代码拿捏的相当到位 括号中是我的加注段机制轻松体验[内存寻址]实模式下的内存寻址:让我们首先来回顾实模式下的寻址方式段首地址×16+偏移量 = 物理地址为什么要×16?因为在8086CPU中,地址线是20位,但寄存器是16位的,最高寻址64KB,它无法寻址到1M内存。于是,Intel设计了这种寻 址转载 2016-08-27 17:38:13 · 3190 阅读 · 0 评论 -
保护模式 对CPL,RPL,DPL 的总结
先说下特权级的概念,在保护模式下,系统依靠特权级来实施代码和数据的保护,相当于权限啦。特权级共有4 个级别,0,1,2,3,数字越小表示权限越高。如图:较为核心的代码和数据放在较高(靠内)的层级中,处理器用此来防止较低特权的任务在不被允许的情况下访问处于高特权级的段。为了防止概念混淆,我们不用特权级大小来说明,改为内层(高),外层(低)来讲。特权级有3 种:CPL,DPL转载 2016-08-27 19:39:18 · 744 阅读 · 0 评论 -
段寄存器和8种地址寻址方式
段寄存器是因为对内存的分段管理而设置的。16位CPU有四个段寄存器,其程序可同时访问四个不同含义的段,引用方面有如下规定:1. 取命令:段寄存器CS指向存放程序的内存段,IP是用来存放下条待执行的指令在该段的偏移量,把它们合在一起可在该内存段内取到下次要执行的指令。2. 取堆栈:段寄存器SS指向用于堆栈的内存段,SP是用来指向该堆栈的栈顶,把它们合在一起可访问栈顶单元。另外,当偏移量用转载 2016-08-28 07:50:28 · 3716 阅读 · 0 评论 -
汇编的8种寻址方式,以及2个默认段寄存器
16位CPU所含有的寄存器有(见图2.1中16位寄存器部分):4个数据寄存器(AX、BX、CX和DX)2个变址和指针寄存器(SI和DI) 2个指针寄存器(SP和BP) ,32位CPU增加2个16位的段寄存器:FS和GS。4个段寄存器(ES、CS、SS和DS)1个指令指针寄存器(IP) 1个标志寄存器(Flags) 一共14个寄存器,或者16个 16位CPU内部有2转载 2016-08-28 07:50:45 · 8650 阅读 · 0 评论 -
软盘结构及软盘数据的读取
由于最近在学习linux0.11内核,需要用到软盘启动,于是就抽空学习了一下软盘结构;1、软盘结构1.44软盘结构:2个盘面(0和1),一个盘面有80条磁道(或称磁柱),一个磁道有18个扇区,一个扇区大小为512Byte,于是软盘总容量:2*80*18*512Byte=1474560Byte=1.44M;2、相对扇区号及转换在系统中,于是可以通过盘面+磁道+扇区,就访问到相转载 2016-08-28 07:51:19 · 3328 阅读 · 0 评论 -
磁头号和起始扇区的计算方法------软盘结构
最近在看《自已动手写操作系统》这本书,读到第四章关于从软盘读取文件一节时一开始不能理解,特别是看不懂书中所附的源代码。经过自己查询软盘结构资料,通过本文对自己软盘的磁头号、磁道号和起始扇区与扇区之转换的想法做个总结。于渊关于从软盘读取文件所附的源代码注释如下: ; 设扇区号为 x ; ┌ 柱面号 = y >> 1转载 2016-08-28 08:00:38 · 3466 阅读 · 1 评论 -
《一个操作系统的实现》——pmtest1.asm详解
段机制轻松体验 内存寻址: 实模式下的内存寻址: 让我们首先来回顾实模式下的寻址方式 段首地址×16+偏移量 = 物理地址 为什么要×16?因为在8086CPU中,地址线是20位,但寄存器是16位的,最高寻址64KB,它无法寻址到1M内存。于是,Intel设计了这种寻址 方式,先缩小4位成16位放入到段寄存器,用到时候,再将其扩大到20位,这也造成了段的首地址必须是16的倍数的转载 2016-08-28 08:26:30 · 948 阅读 · 0 评论 -
汇编 shl和shr指令的使用
shl和shr是逻辑移位指令。shl是逻辑左移指令,它的功能为:(1)将一个寄存器或内存单元中的数据向左移位;(2)将最后移出的一位写入CF中;(3)最低位用0补充。 指令:mov al,01001000bshl al,1 ;将al中数据左移一位 执行后(al)=10010000b,CF=0。 注意:如果移动位数大于1时,必须将移动位数放在cl中转载 2016-08-28 08:30:27 · 87518 阅读 · 1 评论 -
LGDT/LIDT - 加载全局/中断描述符表格寄存器
操作码 指令说明0F 01 /2LGDT m16&32将 m 加载到 GDTR0F 01 /3LIDT m16&32将 m 加载到 IDTR说明将源操作数中的值加载到全局描述符表格寄存器 (GDTR) 或中断描述符表格寄存器 (IDTR)。源操转载 2016-08-28 08:57:20 · 17879 阅读 · 0 评论 -
保护模式下GDTR,LDTR,全局描述符表,局部描述符表和选择器的关系
这张图要注意:右边两个0-15,其中上面的是LDTR, 下面的是选择子. 图下第五个标线,是两个线交叉的,实际上第五个线是指向右边水平的那个线. 没有箭头的两组线分别表示GDT的区间,LDT的区间 3和3'之间的两个没有箭头的线,是表示分别表示区间的线.转载 2016-08-28 09:00:24 · 733 阅读 · 0 评论 -
操作系统类指令
本文介绍操作系统类指令。其中的某些指令始于286。通常只在操作系统代码中使用这些指令,而不在应用程序中使用这些指令。这是把它们称为操作系统类指令的原因。为了保证操作系统的安全,保护模式下的80386支持四个特权级。相应地,这些操作系统类指令也可分为三种:实模式和任何特权级下可执行的指令、实模式及特权级0下可执行的指令和仅在保护模式下执行的指令。这里下载本文源代码。实模式和任转载 2016-08-28 09:02:31 · 1070 阅读 · 0 评论 -
内存管理寄存器
处理器提供了4个内存管理寄存器(GDTR、LDTR、IDTR和TR),用于指定分段内存管理所使用的系统表的基地址。处理器为这些寄存器加载和保存提供了特定的指令。 GDTR、LDTR、IDRTR和TR都是段基址寄存器,这些段中包含分段机制的重要信息表,GDTR、IDTR和LDTR用于寻址存放段描述符的段。TR用于寻址一个特殊任务状态段TSS(Task State Segme转载 2016-08-28 09:08:11 · 982 阅读 · 0 评论 -
控制寄存器
转载 2016-08-28 09:09:15 · 685 阅读 · 0 评论 -
控制寄存器和系统地址寄存器
控制寄存器和系统地址寄存器目录(?)[+][-]一控制寄存器保护控制位协处理器控制位CR2和CR3二系统地址寄存器全局描述符表寄存器GDTR局部描述符表寄存器LDTR中断描述符表寄存器IDTR任务状态段寄存器TR 80386控制寄存器和系统地址寄存器如下表所示。它们用于控制工作方式,控制转载 2016-08-28 09:12:50 · 1030 阅读 · 0 评论 -
80x86寄存器
注意】本文使用到的汇编指令的语法是Intel汇编语法,除此之外的内容与汇编语法无关 【80x86寄存器】 32位CPU所含有的寄存器有: ・4个32位通用寄存器(EAX、EBX、ECX和EDX) ・2个32位变址和指针寄存器(ESI和EDI) 2个32位指针寄存器(ESP和EBP) ・6个[16位(段选择符)+隐藏部分(描述符缓冲)]段寄存器(ES、CS、SS、DS、FS转载 2016-08-28 09:17:41 · 744 阅读 · 0 评论 -
Intel X86 CPU系列的寄存器
一、32位CPU系统级寄存器和数据结构二、寄存器分类介绍通用寄存器:8个,分别为EAX,EBX,ECX,EDX,ESP,EBP,ESI,EDI标志寄存器:1个,EFLAGS控制寄存器:5个,分别为CR0-CR4调试寄存器:8个,分别为DR0-DR7系统地址寄存器:4个,GDTR、IDTR、LDTR和TR16位段寄存器:6个,分别为CS,DS,ES,FS,GS,SS转载 2016-08-28 09:19:32 · 1588 阅读 · 0 评论 -
NASM汇编程序中的宏定义
NASM汇编程序中的宏定义格式如下:%macro 宏名 参数名列表 宏体%endmacro如:%macro Descriptor 3dw %2 & 0FFFFh dw %1 & 0FFFFh db (%1 >> 16) & 0FFh dw ((%2 >> 8) & 0F00h) | (%3 & 0F0FFh) db (%1 >> 24) & 0FFh转载 2016-08-28 09:31:04 · 6599 阅读 · 0 评论 -
操作系统开发系列—2.进入32位保护模式
源码如下:1234567891011121314151617181920212223242526272829303132333435363738394041424344454647转载 2016-08-28 10:53:05 · 1306 阅读 · 0 评论 -
段选择符和段寄存器
段选择符和段寄存器sujinxiu-linux 转载地址:http://home.lupaworld.com/home-space-uid-401174-do-blog-id-231280.html首先看一下段选择符。段选择符为16位。为了方便查找段选择符,CPU提供了段寄存器来存放段选择符。段寄存器有cs, ss, ds, es, fs, gs(为16位),主要的有cs:代码段寄存转载 2016-08-28 12:06:58 · 925 阅读 · 0 评论 -
段选择符 段寄存器
保护模式就是对程序的运行加以保护,所以说保护模式较实模式的增强的最主要体现还不是寻址能力而是对多任务的支持,所提到的保护就是对不同任务间和同一任务内的程序加以保护,使它们的运行不受对方“有意”或“无意”影响,但同时也要对两个任务都要用到的部分代码实现共享。另外一个重要的增强就是对虚拟存储器的支持,从一定意义上说可以使程序设计人员不必考虑物理内存的大小。 有了新的模式,当然要有大量的新增寄存器的支转载 2016-08-28 12:16:28 · 1678 阅读 · 0 评论 -
段选择符和段寄存器
80x86使用了一种称为段(Segment)的寻址技术。这种寻址技术把内存空间分成一个或多个称为段的线性区域,从而对内存中一个数据对象的寻址就需要使用一个段的起始地址(即段地址)和一个段内偏移地址两部分构成。段地址部分使用16位的段选择符指定,其中14位可以选择214即16384个段。段内偏移地址部分使用32位的值来指定,因此段内地址可以是0~4GB。即一个段的最大长度可达4GB。程序中由16位的转载 2016-08-28 12:30:23 · 1559 阅读 · 0 评论 -
Bochs安装FreeDOS与调试
最经看《80x86汇编语言程序设计》杨季文等著,里面的保护模式的例子无法调试,后来查到bochs可以调试,就折腾了一番,这里写下吧……>>>>>>>>>>>>>>>>>>>>>>>无耻的分割线>>>>>>>>>>>>>>>>>>>>>>>>下载地址:Bochs:http://bochs.sourceforge.net/FreeDOS:http://www.freedos.org转载 2016-08-28 14:55:17 · 1938 阅读 · 0 评论 -
一致性代码段和非一致性代码段
一致代码段:非一致代码段.之所以出现这个定义是因为系统要安全:内核要和用户程序分开..内核一定要安全.不能被用户程序干涉.但是有时候用户程序也需要读取内核的某些数据,怎么办呢?于是os将内核程序开辟一些可以供用用户程序访问的段.但是不允许用户程序写入数据.1.内核不用知道用户程序的数据.内核不用调用用户程序的数据.内核不用转移到用户程序中来.2.用户程序只能访问到内核的某些转载 2016-08-30 19:15:49 · 486 阅读 · 0 评论 -
一致性代码段和非一致性代码段【转】
一致代码段是内核开辟出来的供应用程序访问的段,但是不允许用户程序写入数据。CPL(Current Priviliege Level):它代表了当前代码段的特权等级,由CS和SS的第0位和第1位表示。当程序转移到不同的特权等级的代码时处理器将改变CPL。在遇到一致代 码段时,一致代码可以被相同或者更低特权等级(用户程序)的代码访问。当处理器访问一个与CPL特权等级不同的一致代码段时,CPL不转载 2016-08-30 19:17:14 · 1410 阅读 · 0 评论 -
一致代码段和非一致代码段
之所以出现这个定义是因为系统要安全:内核要和用户程序分开..内核一定要安全.不能被用户程序干涉.但是有时候用户程序也需要读取内核的某些数据,怎么办呢?操作系统就引入了访问特权等级(0-3)的机制.这些特权等级,通过三个符号来体现CPL/DPL/RPL.其中CPL是存寄存器如CS中,RPL是代码中根据不同段跳转而确定,以动态刷新CS里的CPL.DPL是在GDT/LDT描述转载 2016-08-30 19:21:46 · 295 阅读 · 0 评论