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