-2

我正在尝试制作将余数除以分母作为以十为底的分数的东西。

因为我担心不喜欢未对齐的内存访问,所以我使用一个寄存器来缓冲最后八个计算数字。

但是,我找不到将缓冲区直接写入输出的任何方法。

我知道我可以将缓冲区移动到内存中并写入,但我不想这样做。

有没有办法将寄存器的值直接写入文件?

我在 64 位 Ubuntu 上使用带有 gcc-4.7 的 C++ 中的内联汇编。

编辑:

我很抱歉问了这样一个非常愚蠢的问题。

我正在玩内联汇编,并试图有效地将我生成的输出逐字节写入输出。我尝试通过将生成的字节转移到单个寄存器中,将该寄存器存储在内存中并将该内存地址处的 8 个字节写入输出(尽管我不确定这是否与字节序兼容)。

当我问这个问题时,我想到的是以某种方式省略了“将该寄存器存储在内存中”。最后,我只是将寄存器存储到一个缓冲区,每次它包含 8 个字节,当缓冲区被填满时,我一次打印整个缓冲区而不是 8 个字节。

我希望这能澄清我看似奇怪的问题背后的原因。

4

1 回答 1

2

“有没有办法将寄存器的值直接写入文件?”

不。

“因为我担心未对齐的内存访问,所以我使用一个寄存器来缓冲最后八个计算数字。”

你不能在假设计算机是敌对的情况下编写计算机程序。为了编写程序,您必须假设计算机以常规且可预测的方式运行。

在您的情况下,您必须以无法进行非对齐访问的方式编写程序。由于您是用汇编程序编写的,因此这是您的责任,而不是编译器的责任。

于 2012-10-03T13:39:11.930 回答