关注
码龄
粉丝数
原力等级 --
被采纳
被点赞
采纳率
昏昏暗暗
2022-08-17 17:09
采纳率: 81%
浏览 75
首页
编程语言
已结题
在64位反汇编局部变量的问题?
¥10
c语言
c++
难道原理是错误的?
能详细说明下64位反汇编中为什么局部变量开始[rbp+n]了,能详细说明下原理吗?
收起
写回答
好问题
0
提建议
关注问题
微信扫一扫
点击复制链接
分享
邀请回答
编辑
收藏
删除
收藏
举报
5
条回答
默认
最新
关注
码龄
粉丝数
原力等级 --
被采纳
被点赞
采纳率
艾秋
2022-08-17 23:58
关注
为什么局部变量开始[rbp+n]?
栈空间开始就被分配 128h, 因为刚开始 rbp 指向了栈底 + 20h(这 20h 可能有其他用处),局部变量的分配在这里往上加(如果倒过来就只能使用 20h),如果 rbp 没有指向栈顶(rsp),则可以用它来做减法。
a=[rbp+4],那n局部变量不应该是[rbp+8]吗?怎么跑到[rbp+24]
说明两个变量不是连续分配的,两个变量中间有一些空余,这种可以减少数组或者用地址写变量时如果越界的话对其他变量的影响的概率
既然并不是说[ebp-n]就是局部变量和[esp+n]它就是参数了,那需要通过什么方法来确认是参数和局部变量呢?
参数的传递其实也可以通过寄存器(在参数不多的情况下,可能都不用入栈),参数是在 CALL 之前就准备好的,你这个函数 void 没有参数,有参数的话,参数的处理应该是在 sub rsp 128 之前,而局部变量是在之后。
本回答被题主选为最佳回答
, 对您是否有帮助呢?
本回答被专家选为最佳回答
, 对您是否有帮助呢?
本回答被题主和专家选为最佳回答
, 对您是否有帮助呢?
解决
无用
评论
打赏
微信扫一扫
点击复制链接
分享
举报
评论
按下Enter换行,Ctrl+Enter发表内容
查看更多回答(4条)
向“C知道”追问
报告相同问题?
提交
关注问题
linux 汇编语言全局变量,用汇编语言研究C语言的全局变量、
局部变量
、参数、返回值放在哪里...
2021-05-15 21:24
都灵Turin的博客
前提知识c0s调用main函数的地址: 11ahmain函数的连接地址: 01fah一、全局变量与
局部变量
测试程序int a1,a2,a3;void f(void);void g(void);void h(void);main(){int b1,b2,b3; a1 = 0xa1;a2 = 0xa2;a3 = 0xa3;b1 = ...
Assembly-汇编语言资源
2025-10-28 01:12
汇编语言是计算机编程的基础语言之一,它与机器语言非常接近,通常被视为底层
编程语言
。由于其接近硬件的本质,汇编语言在性能要求极高的应用场景中依然占据一席之地。它允许程序员直接操作硬件,对寄存器进行操作和...
x86-x64汇编语言、
反汇编
知识和IDA
2024-01-20 12:42
O丶ne丨柒夜的博客
x86寄存器:通用寄存器:EAX, EBX, ECX, EDX, ESI, EDI栈顶指针寄存器:ESP栈底指针寄存器:EBP指令计数器:EIP段寄存器:CS, DS, ES, FS, GS, SSx86-64寄存器:(把E改成R)通用寄存器:RAX, RBX, RCX, RDX, RSI, ...
汇编语言定义变量c,汇编c语言变量
2021-05-23 02:10
刘寅生律师的博客
在编译期间,编译器根据函数的参数类型确定实际的函数名称(或汇编语言中的函数名称). 与c不同,此命名规则更加复杂. 它仅在变量名称和函数名称之前添加下划线. 因此,在c文件中定义了名为name的全局变量或函数,并...
c51汇编语言如何定义全局变量_用汇编语言研究C语言的全局变量、
局部变量
、参数、返回值放在哪里...
2020-12-23 17:20
zodiacLavigne的博客
前提知识c0s调用main函数的地址: 11ahmain函数的连接地址: 01fah一、全局变量与
局部变量
测试程序int a1,a2,a3;void f(void);void g(void);void h(void);main(){int b1,b2,b3; a1 = 0xa1;a2 = 0xa2;a3 = 0xa3;b1 = ...
如何构建
反汇编
代码?
2021-11-25 10:38
人邮异步社区的博客
在本节中,我们将会讨论通过
反汇编
工具恢复的通用代码和数据结构,以及这些通用代码和数据结构会如何帮助我们进行二进制分析。 6.3.1 构建代码 首先,我们来看一下构建
反汇编
代码的各种方法。笼统地说我将向你...
Windows环境下32位汇编语言程序设计
2021-01-13 16:46
汇编语言是一种低级
编程语言
,直接对应于机器指令,每个指令都与处理器的特定操作相对应。32位汇编语言特指在32位处理器架构上运行的汇编代码,如Intel的x86系列处理器。 一、基础知识 1. **指令集体系结构**:32...
汇编语言基础讲解.zip
2024-02-26 13:16
- **段**:在汇编语言程序中,通常分为代码段(存放可执行指令)、数据段(存放常量和变量)和堆栈段(存放函数调用时的
局部变量
和返回地址)。 - **标签和跳转**:通过标签(Label)可以定义程序中的位置,跳转...
C/C++程序员为什么要学习汇编?学习汇编有哪些好处?
2023-05-29 19:59
dvlinker的博客
本文详细讲述一个从汇编代码的角度去理解多线程编程
问题
实例,并详细介绍熟悉汇编代码都有哪些用处。
深入学习ARM汇编语言编程
2025-08-11 07:13
小黄人95的博客
ARM汇编语言是为ARM处理器架构量身定制的一种低级
编程语言
,它允许开发者直接与硬件进行交云,实现精细的资源控制和性能优化。由于其直接映射到硬件指令集,ARM汇编在嵌入式系统、操作系统开发及性能关键任务中具有...
没有解决我的问题,
去提问
向专家提问
向AI提问
付费问答(悬赏)服务下线公告
◇ 用户帮助中心
◇ 新手如何提问
◇ 奖惩公告
问题事件
关注
码龄
粉丝数
原力等级 --
被采纳
被点赞
采纳率
系统已结题
8月27日
关注
码龄
粉丝数
原力等级 --
被采纳
被点赞
采纳率
已采纳回答
8月19日
关注
码龄
粉丝数
原力等级 --
被采纳
被点赞
采纳率
创建了问题
8月17日