全国服务热线:400-035-8011

位置:徐州少儿编程培训机构 > 学校动态 > 计算机漏洞日常

计算机漏洞日常

来源:徐州少儿编程培训机构时间:2020/12/15 13:38:08

  近项目逼紧,老同事有一个bug始终解决不了,拖了半个月了,老大就把我给派过去协助。

计算机漏洞日常

  我们做的是用C语言生成硬件代码(更低层的verilog,verilog是一门硬件编程语言),懂这个的知道这个叫做HLS开发(高层次综合)。

  HLS算得上是比较新的东西,因为传统上设计硬件,都是直接coding 硬件设计代码。几十年都是如此,直到近几年HLS开始慢慢有了应用。

  他那段代码并不是很复杂,总共30多行,我反复阅读了代码,逻辑功能没有问题,仿真也没有问题。纯C语言仿真可以实现想要的功能。

  综合成底层的verilog代码的过程中也没有报错。

  但是综合得到的verilog代码,跟C代码的功能却不一致。

  也就是说工具并没有成功的从C语言转换到我们需要的verilog语言。

  我们初步断定是coding style的问题,因为HLS对C语言的写法有要求,如果写的不好,要不综合得到的硬件性能不好面积太大,还有可能综合的不对。

  因为肉眼看不出来,所以暴力的方法,就是重新写一个。换一种写法,说不定运气好能过。

  所以我试了另外一种写法,用了一种的数据类型,代码只有10行。

  综合结果也不对。

  我把其中的部分代码一行一行删掉,后只剩下4行,终于对了。

  所以我判定另外6行有问题。

  我对另外6行再次改写,把一些常变量换成固定数值,发现固定数值就没有问题。

  看到了一点曙光。

  于是我开始怀疑是一个常量的数据类型错了。

  原代码里面常量采用了constant int的类型,当我将其改成ac_int<32,true>的时候,终于对了。

  所以你看,我们搞了一个星期,到后发现就是一个变量类型定义不对。

  总代码数非常少,也就是十几行,修改的地方也就几个字符。

  但是为了得到这个结果,我们试了十几种方法,换了各种各样的coding style。

  编程难的地方的就是这里。写的时候很爽,觉得自己思路清晰,写完了,全是bug。

  bug多了,就觉得没意思了。

  现在的编程,说是语言,其实还是人在理解机器。

  为什么Class复制之后只是指针复制了?别的变量复制之后整体都被复制了?

  这些都是为了机器的方便,为了少点开销,对人只会造成混淆。

  机器不具有容错能力,机器一遇到bug只会撒手,说白了还是我们的机器不行。

  我们仍然处于编程历史的初级阶段。

领取试听课
每天限量名额,先到先得

尊重原创文章,转载请注明出处与链接:http://www.peixun360.com/2553/news/295753/违者必究! 以上就是徐州少儿编程培训机构 小编为您整理 计算机漏洞日常的全部内容。

温馨提示:提交留言后老师会第一时间与您联系!热线电话:400-035-8011