3
我正在爲多CPU架構上的彙編程序存根編寫測試套件。存根是爲了將參數傳遞給C回調。我已經寫了測試,以涵蓋多個場景(例如,按值傳遞結構,混合不同本地大小的參數,混合浮點數與整數等),我現在想測試回調做某些東西會用完很多寄存器/堆棧插槽等。C函數儘可能多地運行寄存器
這個想法是試圖清除只能通過僥倖工作的實現(例如,值沒有正確放在堆棧上,但它碰巧仍然在某個寄存器中,所以你逃脫了與它等)。
誰能推薦一個好片的C/C++的,我可以在這裏作爲測試使用?我意識到註冊使用不同的體系結構變化很大,並不能保證在所有它會得到完全覆蓋,但它會是不錯的東西,給了信心合理量。由於
我認爲,如果你想確保寄存器得到使用,你必須知道編譯器,或寫彙編器。否則,我相信這是在黑暗中拍攝的,因爲C標準沒有具體說明在什麼情況下要使用寄存器。甚至'register'關鍵字也只是編譯器的一個_suggestion_(現在,優化編譯器往往會更好地瞭解它。) – Floris
可能不是100%可靠的,請嘗試聲明大量volatile變量。如果可能,請查看生成的代碼。 – eventHandler
只需用匯編語言實現的函數替換回調函數即可將所有寄存器和返回值都封裝起來。 –