作者回复: 回答正确!
作者回复: 有一本叫《C in a Nutshell: The Definitive Reference》的书,不知道符不符合你的需求。
作者回复: 很好的问题!下面是回答: 1. 这里的 “.LC0[rip]” 实际上是汇编代码中的一种通过 rip 寄存器来进行相对寻址的方式,一般也称为 pc-relative 或 rip-relative。rip 寄存器中存放着下一条将要执行的指令。而这里该条指令的寻址结果便是 .LC0 这个 label 的开头。 2. .long 是一个汇编指示标记,用于让汇编器在当前这个位置保留一个 4 字节的值。这里第一个 .long 0 是 1.25 对应二进制表示的低 32 位;第二个 .long 1072955392 则是对应高 32 位的十进制值。
作者回复: 正确!
作者回复: 没错!
作者回复: 是的,你举的例子就是一个乱用的方式。编译器实际上有很大的宽容性,可以允许各种样式的代码通过编译,但在代码组织层面,各种语法结构怎么使用,需要团队整体有一个规范来约束。就比如你既然用枚举了,那就不要直接传数字,而是应该用带有业务含义的枚举值,等等。
作者回复: 可以看看有关 x86 汇编的书,推荐一本入门的:《x86汇编语言:从实模式到保护模式》,进阶一点可以看《X86/X64 体系探索及编程》。
作者回复: 👍🏻
作者回复: 不对哦,再看看?