【发布时间】:2021-01-28 13:41:13
【问题描述】:
gdt64:
dq 0 ; zero entry
.code: equ $ - gdt64
; 0x08 kernel CS 0x8
; bits set: descriptor type, present, executable, 64bit
dq (1<<53) | (1<<47) | (1<<44) | (1<<43) ; kernel
; 0x10 user CS
; works when its set to kernel mode, but when in user mode, it doesnt, duh
;dq (1<<53) | (1<<47) | (1<<44) | (1<<43) ; kernel
dq (1<<53) | (1<<47) | (1<<46) | (1<<45) | (1<<44) | (1<<43)
我知道 dq 是 .long。我可以翻译第一部分:
gdt64:
.long 0 // zero entry
.code = . - gdt64
但是如何翻译这样的行:
dq (1<<53) | (1<<47) | (1<<46) | (1<<45) | (1<<44) | (1<<43)
【问题讨论】:
-
不是组装专家,但它不会只是一个设置了相应位的数字吗?
-
你试过
.quad (1<<53) | (1<<47) | (1<<46) | (1<<45) | (1<<44) | (1<<43)吗? -
是的,我认为这是一个设置了相应位的数字。