#include // 调度程序头文件,定义了任务结构task_struct、初始任务0 的数据,// 还有一些有关描述符参数设置和获取的嵌入式汇编函数宏语句。8 #include // 内核头文件。含有一些内核常用函数的原形定义。9 #include // 段操作头文件。定义了有关段寄存器操作的嵌入式汇编函数。1011 #include // 信号头文件。定义信号符号常量,信号结构以及信号操作函...
分类:
系统相关 时间:
2015-04-21 13:04:27
阅读次数:
194
函数的工作借助于栈。
栈在内存中是一块特殊的存储空间,它的存储原则是“先进后出”,最先被存储的数据最后被释放。
esp被称为栈顶指针,ebp称为栈底指针,通过这两个指针寄存器保存当前栈的起始地址与结束地址。
esp与ebp之间所构成的空间便成为栈帧。通常,在VC++中,栈帧中可以寻址的数据有局部变量、函数返回地址、函数参数等。不同的两次函数调用,所形成的栈帧也不同。当由一个函数进入到...
分类:
其他好文 时间:
2015-01-09 15:34:44
阅读次数:
258
汇编中的10H中断int 10h详细说明本文由arthinking发表于4年前|汇编语言|评论数 8|被围观 18,813 views+汇编中的10H中断是由BIOS对显示器和屏幕所提供的服务程序。使用int 10h服务程序时,必须先指定ah寄存器为以下显示服务编号之一,以指定需要调用的功用。显示服...
分类:
移动开发 时间:
2014-12-26 12:31:45
阅读次数:
158
紧接上一篇博文,上篇写的是用GAS汇编调用C语言,这次讲用C语言调用GAS汇编。在内核编写中主要用的是前者,但是在日常程序优化中,主要用的是后者。还是同样的功能,实现两个数值的交换,把参数从C语言传递进汇编,再用C语言接收从汇编函数返回的返回值,返回值又分为普通整数..
分类:
编程语言 时间:
2014-10-05 15:39:29
阅读次数:
274
函数对于一种编程语言,就像细胞对于人一样重要。一个重要的问题是--在高级语言中的函数在底层机器语言上又是怎么实现的?(当然不同的处理器可能会有多种实现方式)在这篇文章中尝试着整理了一下在x86下函数这个概念在机器上的实现过程。主要包括传参,创建局部变量,函数调用等。(英版)...
分类:
其他好文 时间:
2014-07-28 00:05:19
阅读次数:
502
bp为基址寄存器,一般在函数中用来保存进入函数时的sp的栈顶基址sp是栈顶指针,它每次指向栈顶。每次子函数调用时,系统在开始时都会保存这个两个指针并在函数结束时恢复sp和bp的值。像下面这样:在函数进入时:pushbp//保存bp指针movbp,sp//将sp指针传给bp,此时bp指向sp的基地址。...
分类:
其他好文 时间:
2014-05-23 07:24:11
阅读次数:
194