搜索
bottom↓
回复: 182

自制STM8S的C编译器开始工作

[复制链接]

出0入0汤圆

发表于 2010-9-11 13:16:08 | 显示全部楼层 |阅读模式
C源程序(闪烁一个LED):

(原文件名:Screenshot-01.png)

编译后的输出(汇编代码):

(原文件名:Screenshot-02.png)

经过汇编后得到的输出:

(原文件名:Screenshot-03.png)

经过连接得到的最终HEX代码:

(原文件名:Screenshot-04.png)

接下来的工作是编写一个基本运算库(多字节的乘、除运算子程序)。难度不太高,注重高效率。


后记:31楼有源码

出0入0汤圆

发表于 2010-9-11 13:17:55 | 显示全部楼层
这个沙发很荣幸!

出95入100汤圆

发表于 2010-9-11 13:19:35 | 显示全部楼层
牛人 mark

出0入0汤圆

 楼主| 发表于 2010-9-11 13:20:56 | 显示全部楼层
此编译器的限制是(1)只能支持32KB的Flash空间;(2)只支持定点运算(1/2/4字节)。支持结构和联合以及各类指针,
可以在Linux和Windows编译和运行。不打算编写什么I/O库。手头只有一个STM8S-Discovery板,眼下不能做太多的实验。

出0入0汤圆

发表于 2010-9-11 13:22:58 | 显示全部楼层
这个必须顶!

出0入134汤圆

发表于 2010-9-11 13:25:20 | 显示全部楼层
强帖膜拜!

出0入0汤圆

发表于 2010-9-11 13:32:26 | 显示全部楼层
名字想好没

出0入0汤圆

 楼主| 发表于 2010-9-11 13:35:07 | 显示全部楼层
连接后实际上有两个输出文件。除了HEX文件之外,还有一个是map文件,给出了
最终的代码具体值,供阅读。不好意思的是,本人刚接触STM8S器件,还不知道怎么
使用调试(指使用stlink)。由于没有诸如.elf输出,也许无法使用各类调试手段(如断点、单步等)。

(原文件名:Screenshot-05.png)

出0入42汤圆

发表于 2010-9-11 13:35:21 | 显示全部楼层
有点牛

出0入0汤圆

发表于 2010-9-11 13:38:13 | 显示全部楼层
好东西啊,一定要支持。

出0入0汤圆

 楼主| 发表于 2010-9-11 13:38:40 | 显示全部楼层
回6楼:什么名字,指可执行文件吗?总共有3个可执行文件:st8cc.exe,st8as.exe,st8lk.exe。
另外外还有/include下的若干头文件(xxx.h)以及/lib下的基本库。

出0入0汤圆

发表于 2010-9-11 14:02:14 | 显示全部楼层
只能说你闲的慌。


人家专业编译器公司还有bug呢,你这除了你自己谁敢用?

出0入0汤圆

发表于 2010-9-11 14:24:06 | 显示全部楼层
回复【11楼】biansf2001 花溅泪
只能说你闲的慌。
人家专业编译器公司还有bug呢,你这除了你自己谁敢用?
-----------------------------------------------------------------------

人家自己玩呢,没叫你用

出0入85汤圆

发表于 2010-9-11 14:42:21 | 显示全部楼层
回复【11楼】biansf2001 花溅泪
只能说你闲的慌。
人家专业编译器公司还有bug呢,你这除了你自己谁敢用?
-----------------------------------------------------------------------

人家专业生产各种商业产品还有bug呢,论坛不用开源DIY了

出0入0汤圆

发表于 2010-9-11 14:51:00 | 显示全部楼层
求下载链接。。。我想试试,对比下cosmic的编译效率

出0入0汤圆

发表于 2010-9-11 21:33:37 | 显示全部楼层
好厉害,必须支持

出0入24汤圆

发表于 2010-9-11 21:36:24 | 显示全部楼层
绝对的膜拜

出0入0汤圆

发表于 2010-9-11 22:58:30 | 显示全部楼层
继续关注。
期待楼主发一个测试版上来,大家帮忙一起来测试下。

出0入0汤圆

发表于 2010-9-11 23:34:16 | 显示全部楼层
强烈支持,正在学STM8

出0入0汤圆

 楼主| 发表于 2010-9-11 23:36:23 | 显示全部楼层
14、17楼:稍等一点时间,一定会上传给大家的。如果你们给出信箱地址,我可以直接发给你们。
还有一个基本库要编,难度虽不大,数量也不算太多,但基本上都是以汇编的思路和格式进行,
目的是尽量优化。没看也没试过商业版STM8S的C编译。不知差距有多大。但有一点基本上可以肯定:
我的东东极容易上手,稍有经验者3分钟即可。

谢谢朋友们的鼓励!下面是一个常用函数strcpy()的代码输出:

(原文件名:Screenshot-06.png)


(原文件名:Screenshot-07.png)

出0入0汤圆

发表于 2010-9-11 23:41:05 | 显示全部楼层
厉害,太佩服了!

出0入0汤圆

发表于 2010-9-11 23:53:44 | 显示全部楼层
不服不行.

出0入0汤圆

发表于 2010-9-12 07:33:48 | 显示全部楼层
回复【19楼】su_mj000  
14、17楼:稍等一点时间,一定会上传给大家的。如果你们给出信箱地址,我可以直接发给你们。
还有一个基本库要编,难度虽不大,数量也不算太多,但基本上都是以汇编的思路和格式进行,
目的是尽量优化。没看也没试过商业版stm8s的c编译。不知差距有多大。但有一点基本上可以肯定:
我的东东极容易上手,稍有经验者3分钟即可。
谢谢朋友们的鼓励!下面是一个常用函数strcpy()的代码输出:

(原文件名:screenshot-06.png)
<center>

-----------------------------------------------------------------------

谢谢,如果方便发到这里:ifree64@gmail.com

另,从你的代码输出上看,使用的是堆栈传递参数和局部变量的分配,iar stm8使用了RAM开头的12~16字节作为虚拟寄存器,不知这样做会否提高效率,供楼主参考。

出0入0汤圆

发表于 2010-9-12 08:10:55 | 显示全部楼层
这个有兴趣,但劝楼主还是研究一下GCC,让他支持STM8,相信楼主这水平只要搞定移植就更简单了,库GCC都已有了。不过楼主能否说说C编译器的思路?

出0入42汤圆

发表于 2010-9-12 08:18:47 | 显示全部楼层
强帖留名

出0入9汤圆

发表于 2010-9-12 08:32:25 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-9-12 08:35:34 | 显示全部楼层
mark

出0入0汤圆

 楼主| 发表于 2010-9-12 10:54:45 | 显示全部楼层
回22楼
----------
我这个编译器使用最低地址(0x0000~0x0003)4个字节作为虚拟累加器(以后如果支持128KB的flash可能要扩充),存放函数
返回值或临时变量。bank0作为关键字,定义、分配变量可以提高效率。使用虚拟累加器或寄存器的一大弊端是:中断保护时
要保护这些单元,导致延时。‘正规’的C编译器都应该使用堆栈作为参数传递以及内部变量的存放,好处多多(如能支持递归,
多任务多线程)。

回23楼
---------
按理说,GCC移植到STM8S上是完全不成问题的。但我从未染指过GCC的源代码,不知道其中的奥秘和细节。可能勉为其难了。
说到思路,觉得几句话说不清楚。如果有兴趣,可以看看《Lex & Yacc》一书。估计这本书是从事编译器的必读之书。另外,
你必须对C语言有相当的了解。我使用的工具是GNU C/C++以及工具库中的flex和bison。使用flex建构词分析器,使用bison构建
语法分析器。语法分析/解析的输出是一棵编译树,有机地容纳了源程序的各种信息。再对语法树进行递归扫描,产生P代码。
P代码产生后必须再经过优化,否则效率级低。到此为止工作基本与目标机(CPU)的结构无关。P代码到目标机的翻译、转换
工作量较大(视功能要求而定),并能考验你对目标机指令系统的了解程度和优化能力。汇编器(assembler)和连接器(linker)
的设计流程也使用了同样的工具,但容易得多。

出0入0汤圆

发表于 2010-9-12 17:09:22 | 显示全部楼层
回复【27楼】su_mj000  
回22楼
----------
我这个编译器使用最低地址(0x0000~0x0003)4个字节作为虚拟累加器(以后如果支持128kb的flash可能要扩充),存放函数
返回值或临时变量。bank0作为关键字,定义、分配变量可以提高效率。使用虚拟累加器或寄存器的一大弊端是:中断保护时
要保护这些单元,导致延时。‘正规’的c编译器都应该使用堆栈作为参数传递以及内部变量的存放,好处多多(如能支持递归,
多任务多线程)。
-----------------------------------------------------------------------
我能理解使用栈传递参数的好处,但如果对于内部寄存器较多的CPU,如果只使用栈传递参数和使用栈分配局部变量,或否
存在造成CPU内寄存器浪费的结果呢?



回23楼
---------
按理说,GCC移植到STM8S上是完全不成问题的。但我从未染指过GCC的源代码,不知道其中的奥秘和细节。可能难为其难了。
说到思路,觉得几句话说不清楚。如果有兴趣,可以看看《Lex & Yacc》一书。估计这本书是从事编译器的必读之书。另外,
你必须对C语言有相当的了解。我使用的工具是GNU C/C++及其工具库中的flex和bison。使用flex建构词分析器,使用bison构建
语法分析器。语法分析/解析的输出是一棵编译树,有机地容纳了源程序的各种信息。再对语法树进行递归扫描,产生P代码。
P代码产生后必须再经过优化,否则效率级低。到此为止工作基本与目标机(CPU)的结构无关。P代码到目标机的翻译、转换
工作量较大(视功能要求而定),并能考验你对目标机指令系统的了解程度和优化能力。汇编器(assembler)和连接器(linker)
的设计流程也使用了同样的工具,但容易得多。
-----------------------------------------------------------------------

这个P代码是自己设计的某种伪代码呢,还是有某种“标准”的P代码。google搜得到最多信息都是VB的P-code。

出0入0汤圆

发表于 2010-9-12 19:34:08 | 显示全部楼层
移植GCC?

出0入90汤圆

发表于 2010-9-12 19:40:02 | 显示全部楼层
最怕9楼的舌头了,一舔,我的网页就有点卡

出0入0汤圆

 楼主| 发表于 2010-9-13 05:48:47 | 显示全部楼层
上传各执行文件,解压后在MSDOS下运行。

(1)bank0被定义为分配变量的关键字,可提高效率。如:
      
        bank0 int x, y;

(2)中断服务程序用关键字interrupt()说明,见所附例子flashing.c所示。

(3)编译命令:
      
        st8cc file1.c file2.c ...

(4)汇编命令:

       st8as file1.asm file2.asm ...

(5)连接命令:

      st8lk file1.obj file2.obj ...

如发现有错误(基本可以肯定),请告知,先谢了! (su_mj000@yahoo.com)

点击此处下载 ourdev_582621DCF2CS.rar(文件大小:333K) (原文件名:stm8cc.rar)

出0入85汤圆

发表于 2010-9-13 08:48:40 | 显示全部楼层
终于迎来公测版,无限支持

出0入0汤圆

发表于 2010-9-13 09:32:30 | 显示全部楼层
牛人,顶!

出0入0汤圆

发表于 2010-9-13 09:57:06 | 显示全部楼层
牛人,顶!

出0入0汤圆

发表于 2010-9-13 10:18:25 | 显示全部楼层
顶楼主,做到这一步已经很不错了。但是优化会更难和更耗开发时间,大部分的BUG是在优化阶段里产生的,不过不优化的话,内存占用和执行速度又不如人意,这是个很艰巨的工作。

出0入0汤圆

发表于 2010-9-13 10:34:34 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-9-13 11:59:14 | 显示全部楼层
st8cc *.c可以正常工作

st8as *.asm只能生成一个obj文件。。。

做了个bat成在UE中编译,结果多文件没成功-_-

希望修正,不然还得自己做个软件来识别待编译文件然后调用编译器来编译,批处理文件必竟能力有限。。。

另外,编译出错时,不能正确的提示出源码的出错信息和行号,提示的是些编译器内部错误-_-

=======================


rem UE中加入 stm8cc "%p" %n %e

@echo off

if        "%3"==".c"        GOTO :START
if        "%3"==".C"        GOTO :START
GOTO        :ERROR1

:START
SET        bin=D:\Program Files\Cosmic\stm8cc
PATH        %bin%;%path%
CD        /d %1

if not exist out md out

if exist %2.hex        del %2.hex

st8cc.exe        *.c
if not exist        %2.asm        goto :ERROR1

st8as.exe        *.asm
if not exist        %2.obj        goto :ERROR2

st8lk.exe        *.obj

move *.obj .\out
move *.asm .\out


echo 编译成功!!
goto :END

:ERROR1
echo 没有找到"%2.asm"
goto :END

:ERROR2
echo 没有找到"%2.obj"
goto :END

:END

出0入0汤圆

 楼主| 发表于 2010-9-13 12:10:19 | 显示全部楼层
回37楼:
-----------

不能使用诸如:

  st8as *.asm   或 st8lk *.obj

命令。只能使用文件名的全称 (如:‘st8as main.asm    spi.asm   timer1.asm’)。

最好利用make的批处理功能。DOS下的bat批命令功能太弱。

出0入0汤圆

发表于 2010-9-13 12:40:31 | 显示全部楼层
回复【27楼】su_mj000   
汇编器(assembler)和连接器(linker)  
的设计流程也使用了同样的工具,但容易得多。
-----------------------------------------------------------------------

这个能多给一些解释吗? 谢谢

出0入0汤圆

发表于 2010-9-13 17:50:26 | 显示全部楼层
楼主强人啊。

出0入18汤圆

发表于 2010-9-13 17:54:55 | 显示全部楼层
果然非同凡响

出0入0汤圆

发表于 2010-9-13 18:02:22 | 显示全部楼层
记号,我对编译器也有点兴趣!

出0入0汤圆

 楼主| 发表于 2010-9-14 00:52:16 | 显示全部楼层
更新st8cc.exe文件(发现两个错误),直接替换即可。

点击此处下载 ourdev_582859H4OME4.rar(文件大小:182K) (原文件名:st8cc_exe.rar)

!!!再次更新!!!



回39楼:
------
汇编器的设计也是先构造词法分析器和语法分析器。因为汇编语言的关键词基本上就是指令助记符以及寄存器名,非常直接了当。
至于语法,由于汇编语言是一行一句式的语句结构,又是按照[操作码  操作数,操作数]的简单语法。所以语法扫描/解析的工作
就显得微不足道了。但为了处理操作数中可能出现的运算表达式(算术/逻辑),所以还是得费点功夫。上传汇编器的语法扫描/解析器
源代码,供参照。点击此处下载 ourdev_582805S8NJF5.rar(文件大小:2K) (原文件名:asm_y.rar)

出0入0汤圆

发表于 2010-9-14 07:09:25 | 显示全部楼层
牛!

出0入0汤圆

发表于 2010-9-14 10:14:51 | 显示全部楼层
看到这文章太高兴了,我对编译器也很有兴趣,自己也在业余时间弄过一些简单的语句编译,但水平太第了,目前只能作词法分析的~~~~~

出0入0汤圆

发表于 2010-9-14 10:32:41 | 显示全部楼层
强人...

出0入0汤圆

 楼主| 发表于 2010-9-14 11:28:45 | 显示全部楼层
已经在43楼再次更新。

有一点语法习惯上的注意事项。有些人喜欢使用如

    int *p, offset, n;
    ...
    n = *(p+offset);

的方式使用指针。但本编译器眼下要求使用

    n = p[offset];

的方式。

出0入0汤圆

发表于 2010-9-18 22:26:55 | 显示全部楼层
虽然看不懂,但是这个必须得顶!

出0入0汤圆

发表于 2010-9-18 23:53:22 | 显示全部楼层
强人强帖,必须顶至少一次

出0入0汤圆

 楼主| 发表于 2010-9-19 06:47:20 | 显示全部楼层
再次更新
点击此处下载 ourdev_584125GKH2LO.rar(文件大小:182K) (原文件名:st8cc_exe.rar)
点击此处下载 ourdev_584126GNM0Q5.rar(文件大小:77K) (原文件名:st8lk_exe.rar)
点击此处下载 ourdev_584137PPC7N9.rar(文件大小:794字节) (原文件名:crt0_lib.rar)

出0入93汤圆

发表于 2010-9-19 09:09:55 | 显示全部楼层
发现ST8CC不支持位域,直接语法错误伺候。

编译信息:
=====================================
STM8S C Compiler (st8cc), v0.14
start parsing ... main.c

main.c:5: syntax error: token -> ':'
yyparse stopped at #Line 5

出0入0汤圆

 楼主| 发表于 2010-9-19 13:22:59 | 显示全部楼层
LS,本编译器不支持你所指的位域。事实上,位域在编程时的确提供了
某种便利,但在最后的代码运行中并不见得有正真的好处。

对于I/O寄存器中标志/控制bit,可以使用下述的定义形式在头文件中定义说明:

sbit   SPI_BSY  @   (&SPI_SR << 3)|7;

出0入0汤圆

发表于 2010-9-19 15:17:53 | 显示全部楼层
sbit   SPI_BSY  @   (&SPI_SR << 3)|7;

这个如何理解???
=========================

cosmic中对位域和位变量支持的很好,基本上全部转成了汇编的位操作,无论是比较还是赋0,1或是赋给另一个位域
cosmic中将一个位变变量的值传给另一个位变量时,用btst和bccm通过C标置传递的,很高效。

出0入0汤圆

发表于 2010-9-19 19:44:11 | 显示全部楼层
记号,好贴不容错过

出0入0汤圆

 楼主| 发表于 2010-9-20 12:16:23 | 显示全部楼层
再次更新:更正了一些低级错误。

点击此处下载 ourdev_584381RBNB1Q.rar(文件大小:360K) (原文件名:stm8cc.rar)

另外,发现仅使用.hex文件也可在stvd下进行调试,但比较费神。

出0入296汤圆

发表于 2010-9-20 14:01:54 | 显示全部楼层
严重支持楼主
上传《Lex & Yacc》ourdev_584393GCYRF3.pdf(文件大小:10.56M) <font color=green>

出0入85汤圆

发表于 2010-9-20 14:08:29 | 显示全部楼层
建议楼主加个readme.txt,加入版本更新

出0入0汤圆

发表于 2010-9-20 21:18:48 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-9-21 10:18:39 | 显示全部楼层
sbit   SPI_BSY  @   (&SPI_SR << 3)|7;

这个如何理解???

出0入0汤圆

 楼主| 发表于 2010-9-21 11:57:36 | 显示全部楼层
回楼上(59楼):
------------------------
这是专门针对I/O寄存器中的标志/控制位设计的位定义语句(语法)。

比如:SPI接口中的SPI_SR寄存器在头文件中以

#define SPI_SR                REG8(0x5203)

定义说明。此寄存器最高位(BSY)可以用

sbit   SPI_BSY  @   (&SPI_SR << 3)|7;  /* SPI_SR 的 bit-7 */

来定义。

在程序中可以直接使用该名称进行操作。如:

void SPI_write (char data)
{
     while ( SPI_BSY );
     SPI_DR = data;
}

得到的结果是:

(原文件名:Screenshot1.png)

----------------------------------------------------------------------------------------------------------------------------------
由于匆忙,且工作量较大,没有在头文件中列出I/O的各个位定义。但使用者可以按照这个语法加上。

出0入0汤圆

发表于 2010-9-21 13:30:38 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-9-21 15:10:37 | 显示全部楼层
sbit   SPI_BSY  @   (&SPI_SR << 3)|7;  /* SPI_SR 的 bit-7 */


bit7好理解。。。。为什么要左移三位?对这个不明白。。。

像cosmic一样支持:会容易理解些

_Bool SPI_BSY @SPI_SR:7;

出0入0汤圆

发表于 2010-9-21 15:25:39 | 显示全部楼层
每个字节8个BIT。

字节地址 *256 + 位序号 = BIT地址

出0入0汤圆

发表于 2010-9-21 16:02:15 | 显示全部楼层
传点资料

GCC的语法树结构ourdev_584680VL3TGD.pdf(文件大小:336K) (原文件名:gcc-tree.pdf)
GCC内部实现ourdev_584681N4E1MK.rar(文件大小:2.88M) (原文件名:GCC的内部实现.rar)

出0入0汤圆

 楼主| 发表于 2010-9-22 04:32:28 | 显示全部楼层
回63楼:
------
应该是:

寄存器地址*8 + 位序号 = BIT地址

回64楼:
------
很好的资料!看上去GCC的语法树结构和我的语法树结构很相近(或非常相近)。但我的的语法树结构
简化了一点(节点种类只有5种:id_node, const_node, op_node, list_node, str_node。
也许可以简化为4种)

谢谢56楼:
-------
这是本非常好的书!建议大家直接看英文原版。既可以提高、巩固英文,又可避免翻译的曲解走样。

出0入0汤圆

发表于 2010-9-22 09:45:28 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-9-22 11:24:12 | 显示全部楼层
低调MARK

出0入0汤圆

发表于 2010-9-22 15:45:22 | 显示全部楼层
历害。膜拜下。我们做plc时也用了yacclex

出0入0汤圆

发表于 2010-9-22 21:44:42 | 显示全部楼层
编译器也DIY了!!!

出0入0汤圆

发表于 2010-9-22 22:46:47 | 显示全部楼层
高手。。。

出0入0汤圆

发表于 2010-9-23 00:33:39 | 显示全部楼层
高人
牛魔王!!

出0入0汤圆

发表于 2010-9-23 11:15:38 | 显示全部楼层
楼主是ST的员工吗?

出0入0汤圆

发表于 2010-9-23 11:25:29 | 显示全部楼层
mark

出0入0汤圆

 楼主| 发表于 2010-9-23 12:12:21 | 显示全部楼层
回72楼:
------
你的问题太好玩了。说老实话,我对ST公司一点也不了解,很可能
还不如你。:-)

出0入0汤圆

 楼主| 发表于 2010-10-4 10:42:05 | 显示全部楼层
编译时如果启动‘-debug’选项,可以看到一些有意思的输出。对编译器有兴趣的可以试一试。

出0入0汤圆

发表于 2010-10-8 13:11:31 | 显示全部楼层
低调 MARK
强帖膜拜

出0入0汤圆

发表于 2010-10-9 19:21:30 | 显示全部楼层
强帖膜拜。

MARK

出0入0汤圆

发表于 2010-10-10 11:50:05 | 显示全部楼层
不能不服.....

出0入0汤圆

发表于 2010-12-26 12:23:47 | 显示全部楼层
不得不说,我很佩服你,,牛人啊

出0入0汤圆

发表于 2011-1-25 20:55:24 | 显示全部楼层
楼主开发编译器真是强.

出0入0汤圆

发表于 2011-1-25 21:26:42 | 显示全部楼层
就是要多楼主这种强人,才会有希望

出0入70汤圆

发表于 2011-1-25 23:21:14 | 显示全部楼层
不顶不行

出0入0汤圆

发表于 2011-1-26 11:33:05 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-1-26 11:38:06 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-1-27 15:40:43 | 显示全部楼层
强人呐!!!

出0入0汤圆

发表于 2011-1-27 17:39:48 | 显示全部楼层
mark

出0入0汤圆

 楼主| 发表于 2011-1-28 04:34:05 | 显示全部楼层
正在继续努力,新版本将支持超过32K ROM的各种STM8S芯片。

出0入8汤圆

发表于 2011-1-28 08:15:54 | 显示全部楼层
高,实在是高~!

出0入0汤圆

发表于 2011-1-28 08:25:18 | 显示全部楼层
不错

出0入0汤圆

发表于 2011-1-28 09:33:37 | 显示全部楼层
厉害,21_ic有一位小燕子神飞的网友也自制了个编译器,可以编译8051,AVR,凌阳,corte-m0等芯片,楼主可以跟他交流经验啊

出0入0汤圆

发表于 2011-1-30 18:10:27 | 显示全部楼层
可惜不是GCC。。。

出0入0汤圆

发表于 2011-1-30 20:15:37 | 显示全部楼层
厉害,太佩服了!

出0入0汤圆

发表于 2011-1-30 20:23:28 | 显示全部楼层
楼主是移植GCC的吗?

出0入0汤圆

 楼主| 发表于 2011-2-1 03:23:14 | 显示全部楼层
回: 【93楼】 zhonghua_li 蓝色天空
-------------------------------

不是移植GCC的,完全是个人作坊式设计。:-)
头像被屏蔽

出0入0汤圆

发表于 2011-2-10 14:46:00 | 显示全部楼层
这个要顶········

出0入0汤圆

发表于 2011-2-15 10:43:24 | 显示全部楼层
今天又认识了一位强人!

出0入0汤圆

发表于 2011-2-15 11:55:25 | 显示全部楼层
关注楼主进展情况!

出0入0汤圆

发表于 2011-2-15 12:30:18 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-2-15 13:42:49 | 显示全部楼层
MARK
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-5 11:52

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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