我正在尝试制作一些打印余数除以分母作为十分之一的分数。
因为我 fear 不喜欢未对齐的内存访问,我使用寄存器来缓冲最后八个计算数字。
但是,我找不到任何方法将缓冲区直接写入输出。
我知道我可以将缓冲区移动到内存中并写入,但我不想这样做。
有没有办法直接将寄存器的值写入文件?
我在64位Ubuntu上使用C ++中的内联汇编和gcc-4.7。
修改
我很抱歉提出这样一个令人难以置信的愚蠢问题。
我正在使用内联汇编并尝试有效地将逐字节生成的输出写入输出。我尝试通过将生成的字节移位到单个寄存器中,将该寄存器存储在存储器中并将该存储器地址的8个字节写入输出(尽管我不确定这是否与字节序兼容)。
在提出这个问题时我想到的是以某种方式省略“将该寄存器存储在内存中”。最后,我只是将寄存器存储到缓冲区,每次包含8个字节,当缓冲区被填满时,我一次打印整个缓冲区而不是8个字节。
我希望这能澄清我看似奇怪的问题背后的原因。
答案 0 :(得分:2)
“有没有办法直接将寄存器的值写入文件?”
没有
“因为我担心未对齐的内存访问,我使用寄存器来缓冲最后八位计算数字。”
如果计算机存在敌意,则无法编写计算机程序。为了编写程序,您必须假定计算机的行为是以规则和可预测的方式进行的。
在您的情况下,您必须以不能进行未对齐访问的方式编写程序。因为你是用汇编语言编写的,所以这是你的责任,而不是编译器的责任。