2012-10-03 53 views
-2

我試圖做一些東西,打印餘數除以分母爲基數十分數。有沒有辦法直接將一個寄存器的值寫入文件?

因爲我 害怕 不喜歡未對齊的內存訪問,我用一個寄存器來緩衝最後八個計算數字。

但是,我找不到任何方法將緩衝區直接寫入輸出。

我知道我可以將緩衝區移動到內存中並寫入,但我寧願不這樣做。

有沒有辦法直接將一個寄存器的值寫入文件?

我在C++中使用64位Ubuntu上的gcc-4.7內聯彙編。

編輯:

我是問這樣一個令人難以置信的愚蠢的問題,很遺憾。

我正在玩內聯彙編,並試圖有效地將輸出I逐字節地生成到輸出。我試圖通過將生成的字節移入單個寄存器,將該寄存器存儲在內存中,並將該內存地址的8個字節寫入輸出端(儘管我不確定這是否與endian兼容)。

當我問這個問題時,我想到的是忽略了「將該寄存器存儲在內存中」。最後,我將寄存器存儲到一個緩衝區,每次它包含8個字節,並且當緩衝區填滿時,我一次打印整個緩衝區而不是8個字節。

我希望這可以澄清我看似奇怪的問題背後的推理。

+0

您使用的是什麼操作系統和編譯器? –

+0

@RPFeltz,我想你可能想使用像GDB這樣的調試器進行調查。 XEmacs有一個用於GDB的圖形用戶界面,這對新用戶來說可能更容易。或者,也許別人可以推薦一個(我對最近的Linux調試工具不熟悉 - 我最近一次在* n * x平臺上使用調試器的時間超過10年以前 - 可能會有更好的調試工具)。 – Ben

+0

@Ben我使用Eclipse CDT和GDB。究竟是什麼意思調查? – RPFeltz

回答

2

「有沒有辦法直接將文件的值寫入文件?」

「因爲我擔心對齊的內存訪問,我用一個寄存器來緩衝八強計算的數字。」

假設計算機是敵對的,你不能編寫計算機程序。爲了編寫一個程序,你必須假定計算機的行爲是以一種常規和可預測的方式進行的。

在你的情況下,你必須以這種方式編寫程序,以便不可能進行不對齊訪問。既然你是用匯編編寫的,這是你的責任,而不是編譯器的責任。

+1

我很努力地理解你認爲文件IO如何工作,這樣的事情可能是可取的。將寄存器寫入永久存儲器的想法當然與鼓內存計算機https://en.wikipedia.org/wiki/Drum_memory一致。實際上,通過將數據寫入共享內存塊,然後指示硬件設備讀取該內存並將其寫入目標,標準體系結構中的IO工作在最低級別。 – Ben

相關問題