• EC-hero
    置顶
    2021-12-09
    老师,“如下图所示,这里,左右两个窗口中相同背景颜色的代码行,表示了 C 代码与其对应的汇编代码。可以看到,左侧 C 代码中第三行变量 x 的值被存放到了 ebx 寄存器中” 是用什么软件看的?

    作者回复: 是这个网站哈 https://godbolt.org/,可以调整主题。

    
    22
  • cc
    置顶
    2021-12-08
    想了解一些关于 「C 语言为什么设计成现在这样」的内容。 之前学过 Java 和 Go,自己看了一段时间的 C 语言,比如对 C 语言的函数声明就觉得很难读,后来看了一些资料,只要掌握“声明的语法和使用的语法类似”这一点,就比较容易看懂函数声明了。 最近还在继续学 C 语言,遇到的一个困惑就是,为什么 C 语言需要有头文件,而其他接触到的语言都没有这个概念

    作者回复: 为什么 C 语言会有头文件这种设计?你可以这样简单理解:对于一个大型 C 项目,如何做到可以多人协作,分别编译,然后再把各自编写好的产物汇聚到一起,生成最终的可执行文件?我们通常会将一个模块可以对外使用的接口以原型的方式定义在头文件中,而将函数体实现隐藏。通过这种方式是不是就可以进行协作呢?但为什么其他语言没有借鉴类似的方式,这就说明这种方式并非一种好的设计。具体可以看看网上大家的讨论,比如这篇:https://softwareengineering.stackexchange.com/questions/233484/why-are-header-files-bad-design

    共 4 条评论
    11
  • Luke
    2021-12-16
    好早以前搞的os实验,看到那段at&t 汇编好亲切。 老师的代码等价于: dst =src; dst = dst + 1; 结果打印出来就是2 %1表示第二个参数,$1是立即数1。 rbp是栈的基指针,rsp是栈顶指针。 但愿没记错,哈哈。

    作者回复: 正解!

    
    9
  • J²
    2021-12-07
    感觉C不太容易学好

    作者回复: 其实也不太用纠结什么才是“学好”哈。作为语言,C 的语法就很简单很好学。但实际上,C 又由于应用的领域比较多,在写某些项目的时候又需要了解很多领域知识(比如编译器、数据库、协议等等)。所以总体还是看你学习 C 语言的目的是什么。

    
    7
  • 罗耀龙@坐忘
    2021-12-06
    茶艺师学编程 来极客时间学的第一门语言就是C。 现在出了这门课,闭着眼睛就冲进来了。

    作者回复: 感谢支持,一起学习!

    
    5
  • Geek_5b2ab1
    2021-12-07
    老师你好,请问由c生成的汇编代码是平台无关的吗?之前学过arm汇编,对于arm汇编,有专门的pdf文件,讲解每条指令的作用。我看c生成的汇编代码好像不是arm汇编。 那由c生成的汇编代码是基于什么指令集的呢,有没有什么文档可以查看每条指令的介绍?

    作者回复: 汇编代码本身就是平台相关的了,我们这门课中的汇编都基于 x86-64 指令集,你可以在这里找到有关这些指令的细节哈:https://www.intel.com/content/www/us/en/developer/articles/technical/intel-sdm.html

    
    4
  • 龍蝦
    2022-03-04
    老师,关于最近 Linux 5.18 将升级到 C11 的消息,能否详细解释下呢? 这个升级,具体要如何实施呢?

    作者回复: 我大致看了一下那封邮件,主要原因是 Linus 希望使用“可以在 for 循环内部声明变量”,也就是 “for loop initial declaration” 这个特性。但这个语言特性只在 C99 或者 C11 下才支持。所以,才有了想要做升级的讨论。而之所以选择 C11,是由于编译器实现比较稳定,相较于 C99,也可以进一步利用更多的语言新特性。 升级做法应该就是把编译器选项从 -std=gnu89 改成 -std=gnu11。详情可以参考邮件列表链接:https://lore.kernel.org/lkml/20220308215615.14183-4-arnd@kernel.org/

    
    3
  • Alan_Hwang
    2021-12-08
    于老师,散发着艺术的气息。我选C,和大家一起学C

    作者回复: 哈哈哈,感谢支持,一起学习!

    
    3
  • 糊糊
    2021-12-07
    这次一定坚持下去,学懂

    编辑回复: 小编给你加油!

    
    3
  • 杨宇
    2022-04-21
    看到C89、C11这种命名,想起了千年虫。到了2089年,会怎样?

    作者回复: hhhh这是一个好问题,希望 2089 年的时候 C 语言还在。

    
    2