您的位置:首页 > 编程语言 > C语言/C++

用C语言在NDS上编写程序

2010-06-08 13:43 141 查看
在DS上进行开发是我一直的梦想,虽然有DSBasic, DSLua等解释器,但是总感觉很别扭,而且没有更多的语言支持。昨天偶然发现了一个DS上的x86虚拟机,我想在这上面测试一下。

我们需要以下组件:

**DSx86**

在DS上模拟x86环境的虚拟机

地址:http://dsx86.patrickaalto.com/,目前最新版本0.14Beta

需要的文件有:

DSx86.nds --- 引导文件

DSx86.ini --- 配置文件

DSx86Cfg --- 配置设置工具

把下载的文件解压到/data/dsx86/就行了。

但是这只是x86虚拟机,我们还需要一个操作系统。(往下看)

**4DOS**

命令提示符外壳

地址:ftp://jpsoft.com/4dos/files/,目前最新版本7.2

这里需要的文件只有:

4dos.com

下载到/data/dsx86/4dos/, /data/dsx86/, /4dos/中任意一个文件夹都可以,其他的几个辅助文件也可以一并下载。

**Vim**

文本编辑工具

地址:http://www.vim.org/download.php#pc

我们需要的部分是:

vim71d16.zip --- 16位dos下的可执行文件

vim72rt.zip --- 所有版本vim所需要的运行时包,包括了文档,语法还有其他的配置文件

把上面的文件下载后解压到/vim/vim71/进行一些配置来时编辑器更加符合程序员的使用,在/vim/下创建_vimrc文件,内容为下面的语句

syntax enable

set smartindent

set tabstop=4

set shiftwidth=4

set nu!

这里面已经包括了设置语法高亮,自动缩进,行号等功能了。

**DJGPP**

一个GNU在DOS下的编译系统实现

地址:http://www.delorie.com/djgpp/

我们可以在他给出的ftp中找到需要的文件:

gccXXXb.zip --- GNU C编译器

gppXXXb.zip --- GNU C++编译器

bnuXXXb.zip --- 链接库

djdevXXXb.zip --- 库,头文件等

csdpmiXb.zip --- DOS 保护模式方法接口

makXXXb.zip -- GNU Make工具

注:以上的X替换为你能找到的最新版本。

把下载到的文件都解压到/djgpp/下

到此,我们已经完成了虚拟机,操作系统,编译环境,代码编辑工具的搭建。

现在我们来开发在DS上的第一个项目:Hello, World!

打开DS,从你烧录卡的引导器中找到/data/dsx86/DSx86.nds并启动,屏幕将会出现如下画面:

***** DSx86 v0.14 by Patrick Aalto *****

BIOS date: Jun 8 2010

Initializing llibDAT: Success!

/DATADSX86/DSX86.INI loaded!

Starting command shell:

Try C:/DATA/DSX86/4DOS/4DOS.COM ...OK!

4DOS EMS swapping initialized (240K)

4DOS 7.50 DOS5.00

Copyright 1988-2004 Rex Conn & JP Software Inc. All Rights Reserved

C:/>_

这说明4DOS已经载入成功,可以开始运行DOS程序了。

进入Vim目录,并创建a.c源文件:

C:/>cd vim/vim71

C:/vim/vim71>vim a.c

按I进入插入模式,输入程序:

#include <stdio.h>

int main()

{

  printf("Hello, world!/n");

  return 0;

}

按ESC返回普通模式,用ZZ命令保存并退出。

要得到可执行文件必须先编译,我们首先要设置编译器路径,在命令提示符下输入以下命令:

set PATH=C:/DJGPP/BIN;%PATH%

set DJGPP=c:/djgpp/djgpp.env

现在可以开始编译了,使用命令:

gcc -o a.c

这时屏幕提示错误并输出一堆乱码:

80386 required.

好,我们的工作到这里暂时告一段落,首先说明一下,为什么我们没有得到可执行文件。

根据DSx86主页上作者的说明,目前DSx86只能模拟到没有保护模式的80286,也就差不多等于80186。而我们的编译环境需要80386,当然就不能

进行编译了。

所以,如果我们需要用DJGPP完成开头提出的目标,比如等待作者继续更新DSx86,使它支持80386,或者自己重新编译gcc,让它支持80186实模

式。

没有合适的自由软件或免费软件,我们只能用商业软件代替了。一款古老的编译器,Turbo C将会帮助我们完成接下来的工作。

**Turbo C**

Borland的古老的C编译器,我们需要的是2.0版,虽然同时代同系列的最新版本是3.0,但是经测试,TC3.0需要的处理器最低为80386。

安装TC2.0后在PC上运行TC.EXE,依次展开Options-Directories菜单,将里面的路径设置为正确的,如:

Include directories: C:/TURBOC2/INCLUDE

Library directories: C:/TURBOC2/LIB

Output directories:

Turbo C directories: C:/TURBOC2

Pick file name:

设置完毕后使用Options-Save options命令保存刚才的设置。

并且在TC2目录下建立刚才的a.c文件。因为TC2年代久远,当时的C标准与现在不同,所以我们的程序需要修改一下才能运行。

把第一行的:#include <stdio.h>

改为:#include "stdio.h"

重新启动DS,进入C:/TURBOC目录,执行编译命令:

tcc a.c

程序将会自动编译并链接为一个a.exe

然后输入a就可以看到效果了,屏幕打印一串字:

Hello, world!

到此,我们已经成功地在DS上编写C程序并编译运行。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐