鱼C论坛

 找回密码
 立即注册
查看: 1162|回复: 4

[已解决]关于常量的问题

[复制链接]
发表于 2022-5-25 15:49:22 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
看我一个能通过编译的代码
  1. #include <stdio.h>

  2. int main()
  3. {
  4.     99;
  5.     "Abc";
  6.     printf("OK\n");
  7. }

复制代码


这里的代码虽然能通过编译,可是因为那两个数值没有被用到  是不是会被编译器给优化掉呢,最终exe代码中是不会有这两个数值的  是吗
最佳答案
2022-5-25 16:30:15
wp231957 发表于 2022-5-25 16:06
你这一堆反汇编代码是咋抓下来的

        使用 GNU 的 C ++ 编译器,用下面的这条命令得到汇编代码
  1. gcc -S x.c
复制代码

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2022-5-25 15:51:52 | 显示全部楼层
PYTHON也可以耶
  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. "aa"
  7. "bbb"
  8. print("ok")
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-5-25 16:04:57 | 显示全部楼层
  1.         .file        "x.c"
  2.         .text
  3.         .section        .text$_Z6printfPKcz,"x"
  4.         .linkonce discard
  5.         .globl        __Z6printfPKcz
  6.         .def        __Z6printfPKcz;        .scl        2;        .type        32;        .endef
  7. __Z6printfPKcz:
  8.         pushl        %ebp
  9.         movl        %esp, %ebp
  10.         pushl        %ebx
  11.         subl        $36, %esp
  12.         leal        12(%ebp), %eax
  13.         movl        %eax, -16(%ebp)
  14.         movl        -16(%ebp), %ebx
  15.         movl        $1, (%esp)
  16.         movl        __imp____acrt_iob_func, %eax
  17.         call        *%eax
  18.         movl        %ebx, 8(%esp)
  19.         movl        8(%ebp), %edx
  20.         movl        %edx, 4(%esp)
  21.         movl        %eax, (%esp)
  22.         call        ___mingw_vfprintf
  23.         movl        %eax, -12(%ebp)
  24.         movl        -12(%ebp), %eax
  25.         movl        -4(%ebp), %ebx
  26.         leave
  27.         ret
  28.         .def        ___main;        .scl        2;        .type        32;        .endef
  29.         .section .rdata,"dr"
  30. LC0:
  31.         .ascii "OK\12\0"
  32.         .text
  33.         .globl        _main
  34.         .def        _main;        .scl        2;        .type        32;        .endef
  35. _main:
  36.         pushl        %ebp
  37.         movl        %esp, %ebp
  38.         andl        $-16, %esp
  39.         subl        $16, %esp
  40.         call        ___main
  41.         movl        $LC0, (%esp)
  42.         call        __Z6printfPKcz
  43.         movl        $0, %eax
  44.         leave
  45.         ret
  46.         .ident        "GCC: (GNU) 12.1.0"
  47.         .def        ___mingw_vfprintf;        .scl        2;        .type        32;        .endef
复制代码

        这是对应的汇编代码,你自己能从中找到这两个常量吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-5-25 16:06:58 From FishC Mobile | 显示全部楼层
jackz007 发表于 2022-5-25 16:04
这是对应的汇编代码,你自己能从中找到这两个常量吗?

你这一堆反汇编代码是咋抓下来的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-5-25 16:30:15 | 显示全部楼层    本楼为最佳答案   
wp231957 发表于 2022-5-25 16:06
你这一堆反汇编代码是咋抓下来的

        使用 GNU 的 C ++ 编译器,用下面的这条命令得到汇编代码
  1. gcc -S x.c
复制代码

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-3-29 20:11

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表