簡體   English   中英

將C ++代碼轉換為SPIM的程序集

[英]Convert C++ Code to Assembly for SPIM

我在SPIM上運行已編譯的程序集文件時遇到很多麻煩。 基本上,我想編寫一個c ++文件,然后生成一個.s文件,可以在SPIM中打開它而不會出現錯誤。 這意味着程序集必須使用MIPS I指令(某些MIPS II)在MIPS32 ABI中。 我該怎么做呢? 現在,我正在使用g ++,但是嘗試在SPIM中運行該文件時出現嚴重錯誤。 我正在使用MAC OSx 10.6.3,並且正在Linux機器上進行遠程編譯。 我可以使用一個特殊的編譯器來簡化此工作嗎?

給編譯器-S選項,它將生成匯編代碼。 然后,您將必須編輯代碼,以便SPIM接受它。

您還需要g++ -S -fno-delayed-branch ,如果你能像優化-O1-Og更多可讀的代碼。 通常將SPIM配置為模擬不具有分支延遲插槽的MIPS,但是gcc會假定分支執行后的指令即使已被執行。 -fno-delayed-branch獲取gcc以用nop填充任何分支延遲槽。

另一個有用的選項是-fverbose-asm ,讓gcc使用每個操作數的C變量名稱添加注釋。

您將要避免使用諸如std::vector類的C ++庫,這些庫可以編譯成很多額外的代碼,而不是本地數組,尤其是在沒有優化的情況下,除非您確實需要這些功能。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM