Hao's profile电子小虫 PlusBlogListsGuestbook Tools Help

Blog


    花了一整天搭建开发环境

        昨天用Ubuntu修改分区,不小心弄得Windows启动不了。想了一下,干脆重装,咱有正版咱怕啥。我决定在上面试一试各种开发工具,开阔一下我的眼界。

        Free Pascal就不说了,整天学习Pascal,怎能忘了它。

        花了1个小时下载完了MinGW完整版,用的GCC 3.4.5,装上后始终编译不了程序,提示找不到什么’__divx’。最后发现是一个叫libmingwex.a的静态库有问题,换了个cygwin的。还装了Code::Blocks IDE配合。

        然后又花了许久装上了Cygwin,这基本上是一个完整的Linux的移植,太大了,没全装,装了推荐的组件和开发工具(GCC 3、4)。网上说MinGW就是从Cygwin分出来的。

        在MinGW的基础上,又搭建了MSYS开发环境,这个东西和Cygwin感觉差不多,只是小了许多。

        最后装的是Microsoft Visual C++ 2008 Express Edition,微软免费的开发工具。只有这个东西要求重启,太烦人了!

        使用我的PasCalc对几个编译器进行了测试,发现只有MinGW能编译过去。Cygwin、VC++都提示找不到stdbool.h、complex.h、stdint.h这几个C99标准增加的头文件,真让我失望(Cygwin也用GCC!)。我改了一下PasCalc,去了两个头文件,但complex.h去不了,这可是虚数计算的核心!还是MinGW最强大,对C99支持好。

        还准备试一下LCC、Tiny-C、Intel C++(好像只有Linux版免费)。

    汇编语言的A+B(采用C函数)

    前阵子学汇编语言,难死了。这是汇编版的A+B,AT&T格式,Windows函数名(Linux请把所有的_去掉),保存为*.s,可以用gcc编译:

    .data

      a:.int 0

    //加数1

      b:.int 0

    //加数2

      rd:.asciz "%d"

    //scanf参数

      pr:.asciz "%d\n"

    //printf参数

     

    .text

    .globl _main

    _main:

      nop

      pushl $a

      pushl $rd

      call _scanf

      addl $8,%esp

    //读入a

     

      pushl $b

      pushl $rd

      call _scanf

      addl $8,%esp

    //读入b

     

      movl $0,%eax

      add a,%eax

      add b,%eax

    //a+b—>%eax

     

      pushl %eax

      pushl $pr

      call _printf

      addl $8,%esp

    //输出

     

      pushl $0

      call _exit

    //退出

    我的音乐程序核心(完整介绍)

        公开一下我的音乐程序核心(请用 Turbo Pascal 编译,若200号错误请打补丁 http://www.brain.uni-freiburg.de/~klaus/pascal/runerr200/t7tplfix.zip 解压到tp/bin运行t7tplfix.exe,再按p键)。
        无需开音响,可能会出现速度过快,那是程序不太稳定~~~
     
    uses crt;
    procedure music(i:integer; n,wait:integer); { i:表示音调的范围(音符下面加点的是0,无点的是1,上面加点的是2)
                                                  n:音符(1哆 2来 3咪...)  wait:声音持续时间(0.1秒*wait)}
      var st,hz:real; {st:哆的频率  hz:音调频率}
      begin
        case i of
          0:st:=130.5;
          1:st:=261;
          2:st:=522;
        end;
        case n of
          0:hz:=-st;
          1:hz:=0;
          2:hz:=st*1/12*2;
          3:hz:=st*1/12*4;
          4:hz:=st*1/12*6;
          5:hz:=st*1/12*7;
          6:hz:=st*1/12*9;
          7:hz:=st*1/12*11;
          8:hz:=st*1/12*12;
        end;
        sound(round(st+hz));
        delay(100*wait);
        nosound;
        delay(50);
      end;
    begin
      music(2,1,4);  {高1,一拍}
      music(2,1,2);  {高1,半拍}
      music(1,3,2);  {3,半拍}
      music(1,5,8);  {5,一拍}
     
      music(2,1,4);  {高1,一拍}
      music(2,1,2);  {高1,半拍}
      music(1,3,2);  {3,半拍}
      music(1,5,8);  {5,两拍}
     
    .....
     end.
     
     

    vbs小程序,算阶乘的

    保存为.vbs文件即可:
     
    dim n,ans,i
    n=inputbox("n(0<=n<=170)=")
    ans=1
    for i=1 to n
     ans=ans*i
    next
    msgbox(ans)