当我阅读早期的Linux内核代码时,我在boot / bootsect.s中遇到了一个难以理解的问题。“ seg fs”,它在做什么?如果要更改为AT&T的汇编语法,该怎么办!
body {
zoom: 300%;
-moz-transform: scale(3);
-moz-transform-origin: 0 0;
}
答案 0 :(得分:4)
我假定它为下一条指令组装为fs
前缀。那将与注释匹配,并且是唯一有意义的事情。
应该足够容易地进行构建和分解(如果需要,可以转换为AT&T语法)。
在AT&T语法中,您可以仅将fs
用作其他助记符的前缀。
fs movsw
汇编为此(在64位模式下。16位模式将跳过66个操作数大小的前缀)。
0000000000000000 <.text>:
0: 64 66 a5 movsw %fs:(%rsi),%es:(%rdi)
答案 1 :(得分:-1)
谁能告诉我将其更改为正确的? !
__go:
movw %cs , %ax
movw $0x4000-12 , %dx
movw %ax , %ds
movw %ax , %es
movw %ax , %ss
movw %dx , %sp
pushw $0x0000
popw %fs
movw $0x0078 , %bx
lgs %fs:(%bx) , %si
movw %dx , %di
movw $0x0006 , %cx
cld
rep
movw %dx , %di
movw $0x12 , 0x0004(%di)
movw %di , %fs:(%bx)
movw %es , %fs:0x0002(%bx)
movw %cs , %ax
movw %ax , %fs
movw %ax , %gs
xorb %ah , %ah
xorb %dl , %dl
int $0x13