C数组的反汇编给出了奇怪的结果

用户名
int square() {
    char test[50];
}

上面的代码产生

square():
        push    rbp
        mov     rbp, rsp

当我将代码更改为

int square() {
    char test[150];
}

生成的程序集是

square():
        push    rbp
        mov     rbp, rsp
        sub     rsp, 40

这仍然很奇怪,因为我不明白为什么它不分配给以前的作品。我正在-O0运行,因此gcc不会对其进行优化。为什么gcc为错误大小的数组创建代码?

int square() {
    char a[50];
    char b[50];
}
square():
        push    rbp
        mov     rbp, rsp
        sub     rsp, 8

对于x86同样

int square() {
    char a[500];
}

用-m32编译可以给我:

square():
        push    ebp
        mov     ebp, esp
        sub     esp, 512

这额外的12个字节从哪里来?为什么-m32有一个用于char test [50]的子指令,而x86_64没有?

SS安妮

GCC使用x86-64 System V ABI的堆栈指针下方的128字节红色区域作为变量,仅在不够时才保留一些额外的堆栈空间

对于最后一个例子,GCC subš512保持对准堆栈(和阵列)。

i386 System V ABI没有红色区域,因此它必须为整个阵列保留空间(Windows x64也不是)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

数组给出了从HTML生成的奇怪结果

来自分类Dev

JMEter给出了奇怪的结果

来自分类Dev

哪个节点给出了非常奇怪的结果

来自分类Dev

Python开罗将图形另存为NP数组给出了奇怪的结果

来自分类Dev

C中的插入排序程序给出了奇怪的结果

来自分类Dev

numpy.linalg.norm给出了奇怪的结果

来自分类Dev

高于DIV的透明PNG给出了奇怪的结果

来自分类Dev

如果R中的语句给出了奇怪的结果

来自分类Dev

get_the_post_thumbnail_url给出了奇怪的结果

来自分类Dev

numpy.linalg.norm给出了奇怪的结果

来自分类Dev

重命名文件在tcsh中给出了奇怪的结果

来自分类Dev

高于DIV的透明PNG给出了奇怪的结果

来自分类Dev

神经网络的预测功能给出了奇怪的结果

来自分类Dev

SQLite3 中的更新命令给出了奇怪的结果

来自分类Dev

Euler 项目问题 #12 Python 代码给出了奇怪的结果

来自分类Dev

如何反汇编LLVM MCJIT编译的结果?

来自分类Dev

C程序给出奇怪的结果

来自分类Dev

C语言全局数组在其反汇编代码中的位置在哪里

来自分类Dev

C ++ CodeBlocks反汇编;方式太多的代码?

来自分类Dev

为什么数组上的.toString给出奇怪的结果?

来自分类Dev

向量数组的反向输出给出奇怪的结果

来自分类Dev

部署到Glassfish的Spring Boot应用程序给出了奇怪的结果

来自分类Dev

Mysql group_concat具有与众不同的位置,并且给出了奇怪的结果

来自分类Dev

为什么Wiki中的弹丸轨迹公式给出了奇怪的结果?

来自分类Dev

在 ggplot2 中绘制多个组的线条给出了一个奇怪的结果

来自分类Dev

TryGetValue 给出了错误的结果

来自分类Dev

内联汇编器在 vs 2015 中给出了 c2400

来自分类Dev

这个反汇编数组的开始和结束是什么?

来自分类Dev

行的总和的结果是正确的,但列的总和对于3 x 4数组给出了错误的结果

Related 相关文章

  1. 1

    数组给出了从HTML生成的奇怪结果

  2. 2

    JMEter给出了奇怪的结果

  3. 3

    哪个节点给出了非常奇怪的结果

  4. 4

    Python开罗将图形另存为NP数组给出了奇怪的结果

  5. 5

    C中的插入排序程序给出了奇怪的结果

  6. 6

    numpy.linalg.norm给出了奇怪的结果

  7. 7

    高于DIV的透明PNG给出了奇怪的结果

  8. 8

    如果R中的语句给出了奇怪的结果

  9. 9

    get_the_post_thumbnail_url给出了奇怪的结果

  10. 10

    numpy.linalg.norm给出了奇怪的结果

  11. 11

    重命名文件在tcsh中给出了奇怪的结果

  12. 12

    高于DIV的透明PNG给出了奇怪的结果

  13. 13

    神经网络的预测功能给出了奇怪的结果

  14. 14

    SQLite3 中的更新命令给出了奇怪的结果

  15. 15

    Euler 项目问题 #12 Python 代码给出了奇怪的结果

  16. 16

    如何反汇编LLVM MCJIT编译的结果?

  17. 17

    C程序给出奇怪的结果

  18. 18

    C语言全局数组在其反汇编代码中的位置在哪里

  19. 19

    C ++ CodeBlocks反汇编;方式太多的代码?

  20. 20

    为什么数组上的.toString给出奇怪的结果?

  21. 21

    向量数组的反向输出给出奇怪的结果

  22. 22

    部署到Glassfish的Spring Boot应用程序给出了奇怪的结果

  23. 23

    Mysql group_concat具有与众不同的位置,并且给出了奇怪的结果

  24. 24

    为什么Wiki中的弹丸轨迹公式给出了奇怪的结果?

  25. 25

    在 ggplot2 中绘制多个组的线条给出了一个奇怪的结果

  26. 26

    TryGetValue 给出了错误的结果

  27. 27

    内联汇编器在 vs 2015 中给出了 c2400

  28. 28

    这个反汇编数组的开始和结束是什么?

  29. 29

    行的总和的结果是正确的,但列的总和对于3 x 4数组给出了错误的结果

热门标签

归档