腾讯云
开发者社区
文档
建议反馈
控制台
登录/注册
首页
学习
活动
专区
圈层
工具
文章/答案/技术大牛
搜索
搜索
关闭
发布
精选内容/技术社群/优惠产品,
尽在小程序
立即前往
文章
问答
(3020)
视频
沙龙
1
回答
GNU
汇编程序
-
为什么
-
4
(%
rbp
)
不
覆盖
堆栈
上
的
帧
指针
?
、
考虑下面的反汇编代码:0000000100000f60 pushq %
rbp
0000000100000f64movl %edi, -0x
4
(%
rbp
)据我所知,%
rbp
是一个64位寄存器,所以这意味着pushq%rpb在
堆栈
上
分配了8个字节。如果是这样,
浏览 3
提问于2018-01-30
得票数 0
回答已采纳
2
回答
指令移动%edi和mov %rsi做什么?
、
、
x; return x;当我使用objdump (与gcc一起在Linux86-64
上
编译)转储对象代码时:0x0000000000400475 <main+1>: mov %rsp,%
rbp
0x0000000000400478 <main+
4
>: mov+11>: movl $0x0,-0x
4
(%
rbp
浏览 3
提问于2015-07-14
得票数 10
回答已采纳
2
回答
静态变量地址相同,局部变量地址不同
、
、
、
什么样
的
书说,如果我们有一个static variable和一个local variable,我们更新他们和睡眠一段时间,并尝试打印他们
的
地址,然后跨多个这样
的
进程运行,一个将得到相同
的
内存地址。这是因为每个进程都感觉自己拥有整个内存,没有对物理内存
的
控制,所以在同一时间运行
的
不同进程之间
的
地址将保持相同。我理解这一点,但是当我运行我
的
程序时,我在静态变量之间得到相同
的
地址,但在局部变量之间得到不同
的
地址。以我小小<
浏览 3
提问于2015-08-03
得票数 2
回答已采纳
4
回答
为什么
编译器在
堆栈
上
留出空间?
、
、
、
我不知道我
的
标题是否合适,因为我
的
问题是:我知道有时(当我想使用argv[]时)编译器必须在
堆栈
上
为命令行参数安排空间。现在,我编写了一个简单
的
程序来查看C编译器如何处理简单
的
C数组(实际
上
它处理它们
的
方式与std::array
的
相同)。, -32(%
rbp
) movl $3, -24(%
rbp
) movl
浏览 0
提问于2017-02-27
得票数 1
回答已采纳
1
回答
局部变量如何存储在
堆栈
中
、
、
、
对于程序来说,局部变量是在
堆栈
中定义和分配
的
,但是,我只是想知道定义局部变量
的
顺序与使用局部变量
的
顺序不一样。例如,在主函数中,定义了int,如所述,在
堆栈
中分配了一个b,这意味着如果变量a位于
堆栈
的
底部,但是当首先使用变量时,如何从
堆栈
中弹出一个out?或者ebp指向存储所有变量
的
位置?
浏览 2
提问于2018-05-25
得票数 3
回答已采纳
1
回答
64位
指针
在x86_64
汇编程序
中如何适应
4
个字节?
、
我目前正在阅读以下博客,以了解如何编写
汇编程序
。我知道博客里
的
每一件事,但我想不出一件事。<main+
4
>: mov $0x0,%eax我不明白
为什么
我们可以写0到-0x
4
(%
rbp
)。在第1行中,我们推送保存在
堆栈
上
寄存器%
rbp
中
的
浏览 1
提问于2017-11-28
得票数 3
回答已采纳
1
回答
理解x86-64汇编代码中
的
指针
分配
、
、
、
我被困在指定
指针
的
部分和leaq命令之后
的
代码中#include <stdio.h> int x=50;int *y=&x;}.file "AssemlyCode.c"
浏览 1
提问于2016-11-30
得票数 1
1
回答
x86-64
GNU
组件
、
、
在调查一次崩溃时,我偶然看到以下代码片段,并立即认识到mov指令实际
上
应该是movq才能获得正确
的
64位寄存器操作。#elif defined(__x86_64__) __asm__ volatile ("mov %%
rbp
, %0" : "=r" (
rbp
));sp = (void **)
rbp
;此外,我还发现一些文档声称x86-64
的
rbp
浏览 0
提问于2012-02-21
得票数 2
回答已采纳
2
回答
g++使用哪种ASM样式?
、
、
、
、
%ebp说,以上所述等同于:但是将基本
指针
移动到
堆栈
指针
中是没有意义
的
下面是我用来生成ASM (和平台信息)
的
命令:OS: Fedora Linux 14, 2.6.35.10-74.fc14.i686 Compiler: gccversion 4.5.1 20100924 (Red Hat 4.5.
浏览 0
提问于2011-04-11
得票数 2
回答已采纳
2
回答
subl在这里做什么?
-h.section .note.
GNU
-stack,"",@progbits 现在我知道了推送和移动:它们将当前
帧
指针
存储到
堆栈
上
,然后将
帧
指针
寄存器
的
值设置为
堆栈
指针
的
值。,但我不知道
的
售
浏览 11
提问于2010-03-17
得票数 2
回答已采纳
4
回答
为什么
我们需要在调用函数时递减
堆栈
指针
、
、
、
我学习汇编已经有一段时间了,我开始掌握它
的
诀窍了,但是有一件事我似乎不能理解,那就是
为什么
我们需要减少
堆栈
指针
,以便为局部变量留下漫游,看看这段代码:(用64位
GNU
编译器编译
的
代码,AT&T语法)movl $0, -
4
(%
rbp
) movl $
4
,
浏览 5
提问于2014-10-01
得票数 2
1
回答
根据x86-64在linux
上
的
调用约定设置本地
堆栈
。
、
、
、
我正在对运行在64位linux
上
的
gnu
代码进行一些扩展
的
程序集优化。我想从程序集代码中打印调试消息,这就是我是如何完成以下任务
的
。我希望有人能解释我在这种情况下应该做什么。,它们将通过寄存器传递,然后推送到
堆栈
上
。对我来说奇怪
的
是gcc是怎么做到
的
: pushq %
rbp
movl %edi
浏览 9
提问于2014-12-08
得票数 0
回答已采纳
1
回答
汇编代码:计算
堆栈
偏移量背后
的
逻辑
、
、
rbp
) #, d movl $10, %edx #, movl %eax, %1从main中
的
堆栈
指针
中减去48的确切算法是什么。2有趣
的
是,我相信访问函数参数
的
基
指针
的
偏移量从16开始(返回地址和基
指针
是
堆栈
中
的
两个内存位置)(
堆栈
浏览 0
提问于2014-05-11
得票数 3
3
回答
编译器:理解从小程序生成
的
汇编代码
、
、
、
、
我在自学编译器
的
工作原理。我是通过阅读GCC从64位Linux程序中生成
的
代码
的
反汇编来学习
的
。c7 45 fc 00 00 00 00 mov DWORD PTR [
rbp
-0x
4
],0x0
为什么
编译器不使用sub rsp,0x10在
堆栈<
浏览 6
提问于2017-03-24
得票数 15
4
回答
为什么
这些代码生成
的
程序集比等效
的
C++/Clang要多得多?
、
、
a || (a && b)我使用检查
汇编程序
输出。3], al jne .LBB0_1.LBB0_1:.LBB0_2: jmp .LBB0_
4
mov al, byte ptr [
rbp</
浏览 10
提问于2017-08-08
得票数 16
回答已采纳
1
回答
我对函数声明中
的
GNU
汇编程序
开始和结束部分感到困惑
、
、
我最近一直在通过Ubuntu
上
的
GNU
汇编程序
学习x86汇编语言,在互联网
的
某个地方学习编程。在创建函数时,总是有两个部分是“必须
的
”: 波普尔%ebp 请帮我知道到底发生了什么,这是用来做什么
的
。-
为什
浏览 3
提问于2011-05-25
得票数 2
回答已采纳
2
回答
当std::函数
的
对象被破坏时?
、
当std::function
的
目标被摧毁
的
时候?
为什么
当变量std::function超出作用域时指向fn1对象
的
指针
仍然有效(您看到代码片段运行良好, )#include <iostream> //
浏览 1
提问于2020-12-12
得票数 2
回答已采纳
2
回答
程序集代码如何确定在
堆栈
上
放置了多少向下
的
变量?
、
、
、
、
我正试图理解一些基本
的
汇编代码概念,并被困在程序集代码如何确定在
堆栈
上
放置东西
的
位置以及给它多少空间
上
。 pop
rbp
这里有几个问题: 参数不应该在调用之前放在
堆栈
上
吗?
为什么
从当前
堆栈
<
浏览 0
提问于2019-04-29
得票数 3
4
回答
研究一种简单
的
代码反汇编输出和内存映射
、
、
问题: 26 i ++; 00000000004014fb: addl $0x1,-0x
浏览 1
提问于2014-10-04
得票数 3
回答已采纳
1
回答
%
rbp
与汇编中
的
返回地址?
、
、
、
、
我有点和我
的
书搞混了,看看这个: pushl %ebp # store old ebp ret # pop return address and jump是return address实际
上
是
rbp
的
值,这是我们第一次进入main
的
框架?。如果是,
为什么
不将其称为old
r
浏览 0
提问于2021-07-07
得票数 0
回答已采纳
点击加载更多
扫码
添加站长 进交流群
领取专属
10元无门槛券
手把手带您无忧上云
热门
标签
更多标签
云服务器
ICP备案
云直播
对象存储
实时音视频
活动推荐
运营活动
广告
关闭
领券