风飞扬 发表于 2019-3-3 09:33:46

想玩玩开源的51编译器,有熟悉的朋友吗?

好像只有一个SDCC,能够支持stc的51系列。
但是却没见人用过,资料也全是英文,有用过这个的朋友吗?

john78 发表于 2019-3-3 14:41:05

也想玩,但还没有开始,先做下伸手党:LZ有资料方便共享下

jjj206 发表于 2019-3-3 15:51:57

想学习又不想克服困难。。。

mangocity 发表于 2019-3-3 20:27:57

要啥资料啊,装个codeblock直接就用了。

meerlin 发表于 2019-3-3 20:47:27

读sdcc源码?

风飞扬 发表于 2019-3-9 17:56:38

meerlin 发表于 2019-3-3 20:47
读sdcc源码?

读了读,似乎就是标准的C

看来不用到处找了,就是鼓捣鼓捣编译参数方面的具体细节了

90999 发表于 2019-3-9 23:54:09

不知道为什么,我用sdcc编译后 ,起不来

dukelec 发表于 2019-3-10 10:12:54

本帖最后由 dukelec 于 2019-3-10 10:23 编辑

4 年前用了一下下,然後放棄了,當時遇到編譯出來的代碼開始可以運行,寫了一大半之後出問題,用商業工具編譯出來對比是沒有問題,當時懶得仔細去查彙編找問題,就棄用了。
前兩天又花了很多時間對比各種編譯器,想用回 SDCC, 最終放棄,最新版本 3.8.0-r1 依然存在:

1. 不支持標準 c, 不能結構體直接賦值給結構體(用 memcpy 可以代替,但看起來很不簡潔);
2. 未使用的函數無法優化掉(至少 stm8 還是這樣,只有個別架構支持):https://sourceforge.net/p/sdcc/feature-requests/452/
3. float 效率太差,都快跌破 iar 的 1/10 了,哪怕是 1/2, 我這次就用了:http://www.colecovision.eu/stm8/compilers.shtml

過幾年再 review 一下,看這幾個問題是否能改進,暫時開虛擬機跑 iar 算了(stm8 項目)。

P.S.: 我開發是 Linux 環境,STM32 什麼的一直用的是 GCC, 所以沒有使用編譯器自帶 IDE 的習慣,代碼編輯用 eclipse, 編譯器只用它的編譯功能。

风飞扬 发表于 2019-3-10 23:04:14

dukelec 发表于 2019-3-10 10:12
4 年前用了一下下,然後放棄了,當時遇到編譯出來的代碼開始可以運行,寫了一大半之後出問題,用商業工具編 ...

看了一下,SDCC貌似原生是为51 设计的,后来才增加的其他mcu

是不是编译 51 没问题,用其他不行?

dukelec 发表于 2019-3-11 19:52:21

风飞扬 发表于 2019-3-10 23:04
看了一下,SDCC貌似原生是为51 设计的,后来才增加的其他mcu

是不是编译 51 没问题,用其他不行? ...

我好幾年前那次用就是 51, 現在穩定性應該好一些。
你可以先用用看,遇到問題再換也不遲。(對於 51 代碼移植,SDCC 和 KEIL 除了寄存器定義格式有點小不同,另外要注意的是 SDCC 是小端模式。)

din_ke 发表于 2019-4-6 21:31:39

还没见过开源旳51编译器

din_ke 发表于 2019-4-6 21:35:39

风飞扬 发表于 2019-3-10 23:04
看了一下,SDCC貌似原生是为51 设计的,后来才增加的其他mcu

是不是编译 51 没问题,用其他不行? ...

好像是这么回事,

cc224 发表于 2019-4-7 08:23:14

我在用sdcc,debian下apt就有,用起来很方便
当初我也以为从keil转过来会比较麻烦,结果一个总共1000多行项目不到一天就转过来了。sdcc确实有一些跟keil不一样的地方,不过好像并不多。如果你的c代码比较规范,没用到一些乱七八糟的语法,我想转换应该很容易的。
效率啥的没比较过,我的应用都是自己玩的,不是工作,对效率要求不高。真要追求效率,肯定上汇编了吧。
编译过程也挺简单,这是我从makefile里摘出来的
cc=sdcc --iram-size 256 --xram-size 256
%.hex:%.ihx
      packihx $^ > $@

%.bin:%.hex
      objcopy -I ihex -O binary $^ $@

%.rel:%.c $(hfile)
      @echo ------------------编译$<------------------
      $(cc) -c $<

%$(obj):%.a51
      @echo ------------------编译$<------------------
      @sdas8051 $<
xxx.ihx:xxx.rel xxxx.rel .....
      @echo ------------------连接$^------------------
      $(cc) -o $@ $^

newywx 发表于 2019-4-9 16:00:03

这个貌似用的人不多

njhying 发表于 2019-4-9 20:53:58

如果不是为了学习,有什么必须的理由吗?

dragonlands 发表于 2019-4-12 21:09:21

MDK不好用么

lipengxu 发表于 2019-5-31 19:21:47

收藏一下

风飞扬 发表于 2019-9-5 12:03:28

njhying 发表于 2019-4-9 20:53
如果不是为了学习,有什么必须的理由吗?

当然,用个与众不同的开源软件,会显得自己很高大上很N的样子{:lol:}
页: [1]
查看完整版本: 想玩玩开源的51编译器,有熟悉的朋友吗?