问题标签 [bcc-compiler]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
5 回答
1598 浏览

c - Linux C 创建没有头库的自定义 printf 函数

我正在为我正在为类分配工作的引导加载程序创建自己的 prinf(),这意味着我必须使用 BCC 编译器并且我不能使用系统库,因为它们不存在。我确实有能力根据需要使用在汇编中设计的 putc() 函数和字符串库函数 strcmp 等来帮助我。

我似乎遇到了逻辑问题。

如果我在 Linux (cc) 上编译的测试文件中定义它:

然后我可以运行 ./a.out 并收到HI! :42949672: :0: :1: :0: :1: :42949672:正确的结果。

我创建了自己的 printf 函数,当我看到打印的东西时,我看到了HI! :23592: :655: :0: :1: :0: :1:,这是不正确的。我试过只用整数打印,效果很好,但是当我尝试打印无符号长整数时,我遇到了问题。

这是我的代码:

任何人都有任何提示,因为我被卡住了,需要一些帮助。

编辑(下午 2 点 06 分):我已将所有 u16/unsigned short 更改为 unsigned long,并且事情已更改为打印HI! :L: :0: :0: :: :: :1:

0 投票
1 回答
996 浏览

linux - ld86 编译中的 auto_start 错误

我正在尝试在 Linux 下编译一个相当基本的程序,但遇到了ld86. 有人知道是什么auto_start吗?

2012 年 3 月 12 日更新:当我定义自己的printf()...

0 投票
1 回答
1019 浏览

c - bcc 兼容性的编译问题

昨天,我和我的朋友设置了我们的开发环境,开始执行学校作业。我们的教授给了我们一些汇编代码来编译和链接我们自己的 C 代码来替换一个 linux 引导程序。然而,由于某种原因,代码在我朋友的机器上编译得很好,但给了我一堆编译错误。这段代码是教授给出的,所以我知道它一定是正确的。我们检查了我们的密件抄送版本,它们是相同的。这是错误输出:

这是使用这个 shell 脚本生成的:

最后是 main.c,它正在编译错误:

0 投票
1 回答
3287 浏览

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

我正在实模式下编写 C 程序。程序将被加载到0x2000:0x0000地址并运行。DS寄存器等于CS,即0x2000。我也在用bochs调试。

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

这是我的测试文件:

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

......它正在工作。但是当我试图将它与...链接时

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

为什么会这样?如何在 BCC In-Line Assembly 下使用 C 变量?

如果您知道关于密件抄送的好教程,请留下链接。我在互联网上找不到它:(

提前致谢。

PS:这里是各自编译器 BCC链接器 LD86的手册页。

0 投票
2 回答
178 浏览

c - 寻找预处理器命令以删除代码中的命令

我正在开发一个有时使用的 C 库

定义函数时。

现在我尝试将它移植到不支持“静态内联”的旧 C 编译器。这是 bcc - Bruce 的 C 编译器。

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

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

0 投票
1 回答
1023 浏览

c - 如何使用 Bruce 的 C 编译器进行编译以获得在 8086 处理器上运行的 asm 文件

我有这个小c代码

这是一个简单的移动平均函数

我想获得与此代码对应的汇编代码,但是,我想要可以在处理器 8086 上运行的 x86 ISA 汇编代码

看了之后我运行了这个命令

这以错误告终

如何编译我的文件以获取汇编代码?

0 投票
1 回答
292 浏览

c++ - “必须调用成员函数或其地址在函数中” C++ 错误

我正在编写一个C++与线程一起工作的程序。当我尝试创建一个进程时,我收到以下错误:Member function must be called or its address taken in function. 这是我的代码:

我在这两行中得到错误:

我已经尝试了一切。我已经尝试过(&(wrapper))PCB::wrapper&PCB::wrapper没有任何帮助,它只会给我更多的错误。PCB是类的名称。

如果有人有想法,请帮助。

0 投票
0 回答
84 浏览

bcc-compiler - BCC LD86 文件的幻数错误

我想在 DOSBox 中编写一个简单的 hello world 程序,所以我从这里下载了 Bruce 的 C 编译器。并编写了这个程序:

我像这样运行 bcc: bcc -o hello hello.c,但每次都会收到此错误:

我不知道为什么会发生这种情况,如果有人可以告诉我请做。

0 投票
1 回答
427 浏览

c - 编译 ld86 的问题:未定义的符号 auto_start

我正在尝试使用 ld86 编译一些程序集和 C 代码。这样做时,我遇到了一个问题:“未定义的符号:auto_start”

我已经搜索过这个,遇到了这个堆栈溢出问题,这和我的一模一样。但是,他们从主函数中删除参数的解决方案对我不起作用。我正在寻找更多潜在的选择。

我的 tc 代码:

对于bs.s:

0 投票
1 回答
115 浏览

c - For循环遍历数组导致无限循环

我有一段代码应该在按下回车键时刷新一个字符数组,只有代码无限循环,我不知道为什么。

有一个字符数组,每次按下一个键时都会获取一个新字符。当检测到回车键时,将执行以下代码以在屏幕上生成新行之前用 '\0' 字符刷新字符数组:

每次按下一个字符(除了输入(ASCII 13))时,i 在主循环中都会增加。该字符也被添加到缓冲区[]。该代码未在此处显示,但我可以重现它。不用说,即使该代码不正确地增加了 i,循环也应该在 i 达到 0 时结束(并且考虑到减量,我应该在某个点达到 0)。

所以理论上,在按下回车键时,如果行上有 5 个字符(并且没有退格),缓冲区 [] 元素 0-4 将具有字符,并且 i 将等于 5。代码中的循环应该用 '\0' 字符替换元素 5 到 0。诚然,从元素 5 开始是不必要的,但它不应该导致我一直在经历的行为。

这种行为是循环无休止地运行。现在我已经能够通过使用我的 putchar 函数在每次循环运行时打印一个字符来验证这一点。现在我想我可以编写另一个函数来打印 i 的值,我可能会得到我的问题的答案。此外,对于它的价值,当我将这个循环变成等效的“while”循环时,就会发生无限循环。

我只是想确保这里没有明显的东西会导致无限循环行为。对不起,如果这是一个愚蠢的问题。谢谢你的帮助。该程序以 16 位实模式作为原始二进制文件运行。我正在从 bcc 编译到 as86 到最终的二进制文件。

编辑:在进行更多调试后,我确认 i 以正确的正值进入循环(基于数组中的字符数,例如,如果 7 个字符,则 i = 7)。然而,在 for 循环中,i 在 -1 和 -2 的值之间无限交替。由于基于 i 的输入值(或基于循环的条件)没有任何意义,这是否有可能是某种内存或寄存器问题?

最终编辑:问题似乎是 >= 导致 i 变为负数的条件。由于某种原因,即使 for 循环中的条件检查是否为负 i,这也会导致无限循环。感谢所有的帮助。