setjmp

    1熱度

    2回答

    我承認,如果可能的話,這將是敞開的門壞了,很糟糕的代碼。但在某些特定情況下... 所以現在的問題是,是否有c的setjmp/longjmp的任何等同? 我想在不使用線程的情況下實現一個類似python的生成器,只保存堆棧和上下文,然後再恢復。

    5熱度

    1回答

    我對setjmp至少在x86_64 linux中有什麼感興趣,所以我通過glibc的源代碼進行搜索,但我無法真正找到註冊表保存的位置。你能解釋一下這裏發生了什麼嗎? SETJMP.H extern int _setjmp (struct __jmp_buf_tag __env[1]) __THROWNL; #define setjmp(env) _setjmp (env) BSD-_set

    0熱度

    1回答

    根據公開組基本規格和longjump docs: 它是未指定的longjmp()是否恢復信號掩模,葉信號掩碼不變,或還原它在調用setjmp()時的值。 我認爲我遇到了ARMv8 Mustang board的警告。我們通過捕獲SIGILL來執行運行時功能檢測。在測試CRC32擴展時,第一個SIGILL陷阱按預期執行。第二個SIGILL陷阱確實不是在測試AES擴展時按預期執行。以下是它在調試器下的樣

    5熱度

    1回答

    setjmp()應該將包括「返回地址」和「堆棧指針」的寄存器保存到「jmp_buf」中。當我用glibc編譯(包括gcc和clang)並在x86_64下調試以下程序時,我無法理解「jmp_buf」中的內容以及「返回地址」和「堆棧指針」位於「jmp_buf」中。 #include <stdio.h> #include <setjmp.h> int main() { int i;

    4熱度

    2回答

    我想測試2我的函數那種模擬setjmp和longjmp的作業 - 這是很難,因爲我們是不允許使用內置函數或程序集asm()來實現longjmp和setjmp函數。 (是的,that's really the assignment。) 問題:我不斷收到錯誤的返回值。因此,簡而言之,當main()調用foo()和foo()調用bar()和bar()調用longjump()時,bar()不應該返回到fo

    3熱度

    1回答

    我的項目是用C++編寫的,它利用動態生成的代碼將一些東西粘合在一起(使用Fabrice Bellard的TCC和一些手動生成的彙編thunk )。動態生成的代碼有時會跳轉到用C++實現的「運行時幫助程序」中。 有一個功能,允許完全中止動態生成的代碼,無論它在哪裏,都跳回到C++(調用者)。爲了達到這個目的,我簡單地使用C++異常:一個運行時幫助器(作爲C函數)簡單地拋出一個C++異常,並且它通過生

    2熱度

    1回答

    嘗試在也構建爲C++的C代碼庫上顯示一些警告級別。我給了Visual Studio一個鏡頭(出於某種原因)。 儘管沒有看到任何相關的析構函數,但仍發現有關setjmp交互的警告。所以我做了試驗: #include <setjmp.h> struct X { int y; }; int main() { struct X x; jmp_buf buf; if

    1熱度

    2回答

    我試圖用setjmp()和longjmp(),以使c語言像fibonacci生成序列(即使用yield關鍵字實現在python): #include <setjmp.h> #include <stdio.h> jmp_buf mainTask, childTask; void child(void); int main(void) { long i = 1; if (

    2熱度

    1回答

    我需要longjmp/setjmp在OS X的.kext文件中。不幸的是,我不認爲XNU中有這些函數的官方支持。有沒有什麼根本的原因,爲什麼這不起作用,或者它現在只是沒有實施? 任何想法,我可以得到這個工作? 如果有幫助,我想嘗試讓Lua在OS X內核中運行,但運行時似乎取決於longjmp/setjmp或C++異常,而這兩者在XNU中都不可用。

    2熱度

    1回答

    的setjmp的(3)文檔(我的系統上)使用的setjmp指出 所有可訪問對象有值作爲時間的longjmp的()函數被調用除了在setjmp()調用和longjmp()調用之間更改的不具有易失性類型且已被更改的自動存儲調用持續時間的對象的值不確定。 這是否僅包括在相同的範圍,因爲在職能範圍內調用setjmp,或者也可以是任何物體了調用堆棧更高功能的對象? 例如,以下代碼是否正確? #include