我正在尝试使用 gdb 了解在 xv6(教学操作系统)中的引导。
初始引导期间的指令之一是(AT&T 语法):
cmpl 0x0,%cs:0x65a4
接着,
jne 0xfd2b9
现在,据我了解,cmpl 比较两个值并设置标志,如果刚刚比较的值不相等,jne 会查看标志并跳转。
但我不明白 %cs:0x65a4 作为操作数的含义。这是指地址的值 (cs*16 + 65a4),还是该内存位置的实际内容?
我问是因为系统最终不会在 jne 指令之后跳转,这意味着第二个操作数 (%cs:0x65a4) 评估为零。但这不应该是,因为地址和它的内容都不是零。