汇编函数调用中bp和sp是指什么?

bp为基址寄存器,一般在函数中用来保存进入函数时的sp的栈顶基址
sp是栈顶指针,它每次指向栈顶。
每次子函数调用时,系统在开始时都会保存这个两个指针并在函数结束时恢复sp和bp的值。像下面这样:
在函数进入时:
push bp  //保存bp指针
mov bp,sp //将sp指针传给bp,此时bp指向sp的基地址。这个时候,如果该函数有参数,则[bp+4]则是该子函数的第一个参数,[bp+6]则是该子函数的第二个参数,以此类推,有多少个参数则[bp+4+2^n]。
.....
.....
函数结束时:
mov sp,bp //将原sp指针传回给sp
pop bp  //恢复原bp的值。
ret  //退出子函数

时间: 2024-10-06 14:27:57

汇编函数调用中bp和sp是指什么?的相关文章

SDRAM和重定位(二)---开始在汇编代码中调用 C 语言

前面的点亮led的代码由于比较简单,所以全部用汇编代码完成,但是随着代码越来越多,逻辑关系越来越复杂,想要完全用汇编代码来写程序不太现实,必须要借助 c 语言程序,那么就会有从汇编语言到 c 语言的一个过渡阶段. ======================================================= 如何在汇编语言中调用 c 语言? 在汇编中调用 c语言程序的方法很简单,只需利用汇编代码:bl xxx(函数名)即可,但是重点不是如何调用 c 程序,而是汇编代码要为运行 c

找出数组中两数之和为指定值的所有整数对

一,问题描述 给定一个整型数组(数组中的元素可重复),以及一个指定的值.打印出数组中两数之和为指定值的 所有整数对 二,算法分析 一共有两种方法来求解.方法一借助排序,方法二采用HashSet 方法一: 先将整型数组排序,排序之后定义两个指针left和right.left指向已排序数组中的第一个元素,right指向已排序数组中的最后一个元素 将 arr[left]+arr[right]与 给定的元素比较,若前者大,right--:若前者小,left++:若相等,则找到了一对整数之和为指定值的元素

详细MATLAB 中BP神经网络算法的实现

MATLAB 中BP神经网络算法的实现 BP神经网络算法提供了一种普遍并且实用的方法从样例中学习值为实数.离散值或者向量的函数,这里就简单介绍一下如何用MATLAB编程实现该算法. 具体步骤 这里以一个普遍实用的简单案例为例子进行编程的说明. 假设一组x1,x2,x3的值对应一个y值,有2000组这样的数字,我们选择其中1900组x1,x2,x3和y作为样本,其余100组x1,x2,x3作为测试数据来验证.   首先需要读取这些数据,并把数据赋值给input 和 output . 我是把数据存储

查看tidal job中调用的sp是否真的在运行

刚刚us的tech leader突然上线call我说,tidal job中有一个job挂掉了,让我帮忙看一下什么原因然后rerun 起来,一时间我晕晕乎乎的,就问tidal job number及error message,然后找到job 中调用的sp,及里面的参数,后来修改后,tidal job 是active状态了,但是不确定sp是否真的再跑,所以想找一个类似informatica或者netezza中的一种可以monitor的界面来观察一下数据流状态来确认sp是否真的run起来了,于是乎,找

李华《灵武二孝赞并序》中之“灵武”系指何地?

李华<灵武二孝赞并序>文中之“灵武”系指何地? 杨森翔 <新唐书>是唐代国史.在这部书的“列传第一百二十·孝友”部里,收有“灵武二孝”侯知道和程俱罗的传记.这是宁夏本土普通老百姓首次上国史.追根溯源,功劳还得归于唐代大文学家李华. 李华(715年-766年),字遐叔,唐代赵州赞皇(今河北省赞皇县)人.既是著名的散文家,又是著名的诗人.开元二十三年(735) 进士,天宝二年(743)登博学宏辞科.天宝十一载(752)迁监察御史,因弹劾当朝权相杨国忠而遭排挤,徙为右补阙.安禄山陷长安时

Android中dp和sp标签的区别

记得之前学习中有位老师说过我们经常使用的尺寸单位为dp和sp,而这两个单位有什么区别在今天的学习中和我遭遇了.在书中描述的代码中,反复出现比较多的是dp,px.所以呢,想趁着这个机会搞清涉及的尺寸单位,免得以后再在这个问题上浪费时间. px:pixels,每个像素对应着屏幕上的一个点,一般作为分辨率设置时着重使用的单位. sp:scaled pixels,比例像素,主要处理字体的大小,可以根据用户的字体大小首选项进行缩放.而比较关键的是,根据Google建议,TextView的字号最好使用sp字

[转]Android中dp,px,sp概念梳理以及如何做到屏幕适配

http://blog.csdn.net/jiangwei0910410003/article/details/40509571 今天又开始我的App开发,因为之前一直做的是SDK,所以涉及到界面UI很少,刚开始做Android应用的时候,没有对dp,px,sp等概念有一个深入的了解,只知道他们之间的转化,还有写个转换工具类等.做Android已经有一年多了,现在再次开始App开发,决定没遇到一个概念,必须得弄透彻.好吧,下面进入主题吧: 首先来看一下他们的基本概念: px   :是屏幕的像素点

Android中dp,px,sp概念梳理

今天又开始我的App开发,因为之前一直做的是SDK,所以涉及到界面UI很少,刚开始做Android应用的时候,没有对dp,px,sp等概念有一个深入的了解,只知道他们之间的转化,还有写个转换工具类等.做Android已经有一年多了,现在再次开始App开发,决定没遇到一个概念,必须得弄透彻.好吧,下面进入主题吧: 首先来看一下他们的基本概念: px   :是屏幕的像素点dp   :一个基于density的抽象单位,如果一个160dpi的屏幕,1dp=1pxdip  :等同于dpsp   :同dp相

TypedValue.applyDimension 中dp和sp之间转化的真相

最近在看了许多关于dp-px,px-dp,sp-px,px-sp之间转化的博文,过去我比较常用的方式是: 1 //转换dip为px 2 public static int convertDipOrPx(Context context, int dip) { 3 float scale = context.getResources().getDisplayMetrics().density; 4 return (int)(dip*scale + 0.5f*(dip>=0?1:-1)); 5 } 6