阅读:2239回复:11
菜鸟请教:纯DOS下如何用C/C++编译器编译32位代码?
我写了一个C程序,需要读写32位寄存器,如ECX,EAX等,其中如下使用
_EAX = 0x1234; 但是上面的代码在Borland C++ 3.1下编译不通过,原因是它不支持EAX 32位寄存器。 现在问题是我如何在纯DOS下用C/C++编译器编译这样的代码,请前辈指点~~~ |
|
|
沙发#
发布于:2003-06-30 17:25
Options->Compiler>Advanced code generation,
Instruction Set, 80386 |
|
板凳#
发布于:2003-06-30 17:37
我是这样作了,但是好像Borland C++ 3.1不支持_EAX这样写发,
我直接用asm eax,0x1234也不行? 上面前辈是不是能确认那样做能行,是不是我还有些东东没弄好 ? |
|
|
地板#
发布于:2003-06-30 18:11
纯DOS是16位的;保护模式汇编是32位的,但编译是在window环境下的,现在已经没有你所讲的纯DOS了.
在VC++下,可以用asm mov eax,1234 |
|
地下室#
发布于:2003-06-30 19:13
我是启动PC时选DOS进入DOS的,这时用BC3.1编译器,不能编译使用eax寄存器的程序。
不过,如果我在Windows下用BCB编译使用eax寄存器的程序是没问题的。 |
|
|
5楼#
发布于:2003-06-30 19:16
不过我在Windows环境下用BCB编译的Consle应用程序是不能在纯DOS下运行的(这是应该的)
一句话,就是我如何在纯DOS环境下编译读写32位寄存器的代码? |
|
|
6楼#
发布于:2003-06-30 21:43
刚试了,
int main() { _EAX = 0x1234; _EBX = 0x1234; return 0; } BC++ 3.1,可以编译通过。 |
|
7楼#
发布于:2003-07-01 10:13
多谢arthurtu等!!!
我在公司下了一个新的BC31,也能用了。 估计我在家处理的时候忘了什么东东吧,回头再研究研究它~ |
|
|
8楼#
发布于:2003-07-01 10:17
我要买单了,请问如何结贴? --------- i m a newer~~~ |
|
|
9楼#
发布于:2003-07-01 11:27
第一贴下有个\"给分\" |
|
10楼#
发布于:2005-03-03 16:24
各位老大不好意思.....我个你们翻出来.....我正在用BORLAND C3.1++
那个EXAMPLES无法编译通过.....就是那个GRAPHICS.H有问题.... 帮忙呀! :P没法编译通过.....系统98..... [编辑 - 3/3/05 by lsn_061] |
|
|
11楼#
发布于:2005-03-03 16:46
把bgi得.obj连接lib库时出现错误.
..undifined symbol ...*****........in mould egaphc ..undifined symbol ...*****........in mould egaphc ..undifined symbol ...*****........in mould egaphc ..undifined symbol ...*****........in mould egaphc warning: no stack :( [编辑 - 3/3/05 by lsn_061] |
|
|