![]() |
1
3
Gcc将自动保存和恢复所有被叫方保存寄存器 它知道的 。它知道自己使用的寄存器,但只有当你告诉它时,它才会知道内联程序集中使用的寄存器。这就是“打击者”名单的目的:
现在编译器知道您正在使用/修改rbx,因此如果需要,它会保存它。 请注意,您确实想这样做,而不是自己尝试保存它,因为这样,如果gcc还想在这个函数中使用寄存器,它将只保存一次。 |
![]() |
2
1
用死记硬背的方式保存和恢复每个寄存器,这将是一段相当棘手的代码。编译器将寄存器保存在它编译过的C代码中,但在这里,你是自己的,gcc不知道你的意图是什么。 装配工可以让你钻到发动机罩下面,但它不会替你更换火花塞。 |
![]() |
Ari157 · x86_64 Linux程序集中的逻辑与实现 2 年前 |
![]() |
masec · 是否将EAX复制到RAX高位? 7 年前 |
![]() |
Pushpam Kumar · 从可利用程序运行时出现外壳代码分段错误 7 年前 |
![]() |
RTC222 · CTypes返回值错误 7 年前 |
![]() |
SeanRamey · 汇编指令中冒号(:)的含义未知 7 年前 |
![]() |
Lynx · Ubuntu 16.04服务器amd64安装失败 7 年前 |