引用 10 楼 lr2131 的回复:谢谢JQGuardian的回复。 汇编编写的代码需要程序员自己维护栈和保存寄存器的工作。 ATPCS是APCS的一个子集,这个应该算是用在汇编和C相互调用时遵循的标准是吗? 嗯,不过在汇编调用c函数里要注意先设置好sp指针,如果sp指向一个不可写的位置,会死掉……
问题已经都解决了,还想问一下,是不是C语言不能直接操作CPU内的寄存器,例如这些R0-R15....等这些寄存器。那如果是这样的话,应该说没有哪个操作系统可以用纯C来写吧,至少现场保存这块必须是得用汇编来写的。这种理解不知道是不是对的。
谢谢JQGuardian的回复。 汇编编写的代码需要程序员自己维护栈和保存寄存器的工作。 ATPCS是APCS的一个子集,这个应该算是用在汇编和C相互调用时遵循的标准是吗?
如果是汇编写的代码,就不知道编译器会不会这么“智能”了。看来想要偷懒让编译器来做这些寄存器的工作有些不放心、。总之,会用到(有的地方说破坏)的寄存器就要保存,没用到的可以不保存。所以就不管了,都保存了算了,并确保各个模式下压栈前和出栈后的全部寄存器(至少是要用到的寄存器)都和之前的一样,我想这个总该不会有问题了吧。
WIN的话,看潘爱民那本内核,讲过的
21,597
社区成员
21,709
社区内容
加载中
试试用AI创作助手写篇文章吧