摘要: 为了提高代码执行效率,内核源代码中有些地方直接使用了汇编语言编制。这就会涉及在两种语言编制的程序之间相互调用的问题。 函数调用包括从一块代码到另一块代码之间的双向数据传递和执行控制转移。数据传递通过函数参数和返回值来进行。另外,我们还需要在进入函数是为函数的局部变量分配空间,并在函数退出时回收者部分空间。Intel 8086 CPU为控制传递提供了简单的指令,而数据的传递和局部变量存储空间的分配与回收则通过栈操作来实现。 1.栈帧结构和控制转移权方式大多数CPU的程序实现使用栈来支持函数调用操作。栈被用来传递函数参数、存储返回信息、临时保存寄存器原有值和存储局部数据。单个函数调用操作所... 阅读全文
posted @ 2014-01-21 09:46 萧瑟秋风_cyz 阅读(236) 评论(0) 推荐(0) 编辑
摘要: 内核C语言程序嵌入式汇编代码又叫内联汇编,具有输入和输出参数的嵌入汇编语句的基本格式为:**************************************************asm("汇编语句" : 输出寄存器 : 输入寄存器 : 会被修改的寄存器);**************************************************除第一行外,后面带冒号的行若不使用就可以省略。其中,"asm"是内联汇编语句关键词;"汇编语句"是写汇编指令的地方;“输出寄存器”表示当这段嵌入式汇编执行完成后,哪些寄存器用 阅读全文
posted @ 2014-01-16 11:56 萧瑟秋风_cyz 阅读(587) 评论(0) 推荐(0) 编辑
摘要: as86汇编仅仅用于编译内核中的boot/bootsect.s引导扇区程序和实模式下的设置程序boot/setup.s。内核中其余所有汇编语言程序(包括C语言产生的汇编程序)均使用gas来编译,并与C语言程序编译产生的模块链接。3.2.2 GUN汇编语法与INTEL汇编语法的主要区别: *AT&T语法(即GUN汇编语法)中立即操作数前面要加一个字符'$';寄存器操作数前面要加字符百分号'%';绝对跳转/调用(相对于与程序计数器有关的跳转/调用)操作数前面要加星号'*'。而intel汇编语法没有这些限制。 *AT&T语法与intel 阅读全文
posted @ 2014-01-14 11:20 萧瑟秋风_cyz 阅读(1551) 评论(0) 推荐(0) 编辑
摘要: 在开始讲述as86汇编器前,这本书引用内核中bootsect.s框架程序汇编代码来解释,记录下这一小段代码中不理解的地方,下面是这段实例代码:.globl begtext, begdata, begbss, endtext, enddata, endbss .text !正文段 begtext: !标号 .data !数据段 begdata: !标号 .bss ... 阅读全文
posted @ 2014-01-11 16:41 萧瑟秋风_cyz 阅读(1111) 评论(0) 推荐(0) 编辑
摘要: 开发背景:公司要求管理系统能够由管理员在前台页面管理系统表单,能够对表单进行增删改查基本操作,表单的各个字段都可以被修改、删除,可以添加新的字段,并且不影响系统正常运行,前台表单展示要由系统自动处理,因此准备实现系统自动生成表单功能。开发语言:PHP,数据库:MYSQL,系统框架:CodeIgniter,前台框架:Bootstrap. 初期设想:因为要动态修改前台表单,所以要在数据库中存储表单的信息,建立数据表form_xxx存放xxx栏目下面的add_xxx页面的表单,数据库字段定义如下:create table form_payment ( id int not ... 阅读全文
posted @ 2013-12-17 11:15 萧瑟秋风_cyz 阅读(1538) 评论(0) 推荐(0) 编辑
摘要: 首先,假设一种情形:要在HTML文件中为一个select对象添加一个函数,这个函数的名字叫dynamic_change(this),当select的option被改变的时候调用onchange事件来处理,但是再js文件中,这个this传递的是一个javascript DOM对象,不是一个jquery对象,所以不能使用jquery的方法,进而就不能兼顾到浏览器的兼容性了,因此要使用一定的手段把dom select对象转换成jquery对象,其实很简单,dynamic_change函数中,用'$'符号就能够将传递进函数的DOM对象转换成jquery对象,可以使用所有jquery方法 阅读全文
posted @ 2013-12-16 11:46 萧瑟秋风_cyz 阅读(210) 评论(0) 推荐(0) 编辑
摘要: 今天在做“财务管理系统”的时候,使用jquery的ajax从前台传递用户输入到后台,并保存到数据库,但是在前台为了界面的简介和一致性,没有使用按 钮来实现"确定"和"取消"功能,而是使用jquery的keypress键盘事件:enter代表确定,esc代表取消。 但是在测试的时候发现使用event.which获取键盘代码并不能识别esc键,火狐、IE、谷歌浏览器表现出强烈的不一致性,换成 event.keyCode倒是在火狐下可以识别了,但是IE和谷歌还是不行,后来在网上查找资料,看了一篇文章,文章中提到在谷歌浏览器中不能使用 keypress事件,因为 阅读全文
posted @ 2013-12-13 14:40 萧瑟秋风_cyz 阅读(625) 评论(0) 推荐(0) 编辑
摘要: 昨天在处理过keypress键盘事件后,今天要把用户在页面上动态添加的字段条目加上删除功能,就是在每个字段后面加上一个漂亮的小按钮,当用户点击这个按钮,相应的条目就被从数据库中删除。 为了实现这种功能,必须保证任何新添加的条目在不刷新页面的情况下也能相应删除事件,因此,就必须使用jquery.live()来绑定click事 件到那个漂亮的小按钮上,但是由于这个按钮是嵌入到每一个条目上的,所以它们处于DOM树比较深的层次下,本来我是用jquery的children() 逐层来选择这些按钮的,但是测试了很多次都通过不了,firebug上显示的错误是选择器无法被jquery内核识别,一时不知道... 阅读全文
posted @ 2013-12-13 14:38 萧瑟秋风_cyz 阅读(428) 评论(4) 推荐(0) 编辑