标签: bcc-compiler

BCC中的内联汇编(Bruce的C编译器) - 如何使用C变量?

我正在Real Mode下编写一个C程序.该程序将被加载以进行0x2000:0x0000寻址和运行.DS寄存器等于CS,即0x2000.我也正在调试bochs.

我的目标是在屏幕上打印一些文字.所以我需要内联汇编(用于BIOS INT 10h).

这是我的测试文件:

asm("jmp _main");

void putchar(c) char c;
{
    asm("mov ah, 0x0e");
    asm("mov al, c");
    asm("xor bx, bx");
    asm("int 0x10");
}

void main ()
{
    asm("push cs");
    asm("pop ds");
    putchar('A');
    for(;;);
}
Run Code Online (Sandbox Code Playgroud)

当我用这个命令编译它时...

bcc -W -0 -c test.c -o test.obj
Run Code Online (Sandbox Code Playgroud)

......它正在发挥作用.但是,当我试图将它与...链接时

ld86 -d isimsiz.obj -o kernel.bin
Run Code Online (Sandbox Code Playgroud)

...它给了我这个错误:

undefined symbol: c
Run Code Online (Sandbox Code Playgroud)

为什么会这样?如何在BCC在线组装下使用C变量?

如果你知道关于BCC的好教程,请留下链接.我在互联网上找不到它:(

提前致谢.

PS:以下是相应编译器BCC链接器LD86的手册页.

c assembly inline-assembly bcc-compiler

4
推荐指数
1
解决办法
1614
查看次数

寻找预处理器命令来删除代码中的命令

我正在研究一个有时使用的C库

 static inline void myfunc(...)
Run Code Online (Sandbox Code Playgroud)

在定义函数时.

现在我尝试将其移植到不支持"静态内联"的旧C编译器.这是bcc - Bruce的C编译器.

我可以在替换的头文件中使用命令吗?

static inline void
Run Code Online (Sandbox Code Playgroud)

void
Run Code Online (Sandbox Code Playgroud)

在包含此头文件的所有程序中?

c c-preprocessor bcc-compiler

2
推荐指数
1
解决办法
120
查看次数