C:在多个函数中共享对寄存器变量的访问

C:在多个函数中共享对寄存器变量的访问,c,pointers,global,local,cpu-registers,C,Pointers,Global,Local,Cpu Registers,目前,我正在为处理器设计任务编写一小段代码 我知道这通常是不好的做法,但是对于这个任务,因为我们在一个专门的处理器上实现了一个非常特定的功能,所以我决定减少处理器的数据内存。所有数据将仅在另一个处理器的FIFO或寄存器中。因为数据量很小,所以它很适合 因此,我的C代码中的所有变量都有前缀寄存器:它告诉编译器将它们保存在寄存器中,这很好 C、 但是,不允许定义全局寄存器变量,因此我的所有变量都是在entry函数中本地声明的 当我想从entry函数调用另一个函数时,出现了一个问题,它需要对相同的寄存

目前,我正在为处理器设计任务编写一小段代码

我知道这通常是不好的做法,但是对于这个任务,因为我们在一个专门的处理器上实现了一个非常特定的功能,所以我决定减少处理器的数据内存。所有数据将仅在另一个处理器的FIFO或寄存器中。因为数据量很小,所以它很适合

因此,我的C代码中的所有变量都有前缀寄存器:它告诉编译器将它们保存在寄存器中,这很好

C、 但是,不允许定义全局寄存器变量,因此我的所有变量都是在entry函数中本地声明的

当我想从entry函数调用另一个函数时,出现了一个问题,它需要对相同的寄存器变量进行操作。第二个函数无法看到它们,因为它们在entry函数中是本地的。 我无法使这些变量成为全局变量,如上所述,我无法传递指针,因为寄存器不可寻址,所以我看到的唯一方法是将所有变量传递给结构中的第二个函数,让第二个函数对它们进行操作,并将新值返回给另一个结构中的第一个函数

这似乎是一个非常糟糕的举动,因为我认为编译器不够聪明,无法实现第二个函数应该直接访问原始变量的寄存器。这会导致大量不必要的寄存器来回复制

我使用的编译器不支持GCC之类的嵌套函数。因为这是C,所以不可能有类

有没有其他优雅的方法来解决这个问题


多谢各位

我已决定减少处理器的数据内存。-那么,你们实际上是在制造处理器?这是一个非常普遍的问题。一切都取决于函数集的逻辑。理论上,您可以使用一个寄存器作为位掩码,通知所有函数哪些寄存器忙或空闲,以及所有其他寄存器用于数据。如果可能的话,将函数内联可能有助于您的编译器找到优化。否则,如果您真的想确保处理器执行您想要的操作,那么总是要用汇编语言编写这段代码。寄存器在最好的时候只是对编译器的一个提示,所以在标准C中没有办法真正保证这种性质的东西。我使用的是一个处理器设计包,它附带自动生成的编译器和模拟器,所以这就是我所说的处理器。我发现它完全符合我对寄存器关键字的要求,但遗憾的是,我不能以这种方式声明全局变量——这两个函数都需要访问这些变量,传递它们看起来非常糟糕。