2008年10月21日

[linux-users:108134] Re: [linux-users:108130]inux-2.2.26/arch/i386/boot/setup.S にある jmpi とは?

門間です。

http://mirror.oss.lzu.edu.cn/software/linux.old/Linux-0.95/docs/FAQ-0.95a

によりますと、昔のカーネルブートコードはminixアセンブラ記法らしいですね。
jmpiは、特定のCPUアーキテクチャによらず一般的に "jump immediate"を表す表
記としてよく使われると思いますが、要は定数番地へのジャンプ、命令中に直接
飛び先アドレスが記述されているジャンプ命令ということになると思います。


blue_sky さんは書きました:
> inux-2.2.26/arch/i386/boot/setup.S
> の592行目にある
>
> jmpi move_self_here,SETUPSEG ! jump to our final place
>
> の "jmpi" という命令は何でしょうか。
>
> linux-2.2.26/arch/i386/boot/bootsect.S
> の67行目においても、
>
> jmpi go,INITSEG
>
> 上記のように使われています。
>
> linux-2.4.34/arch/i386/boot/setup.S
> では、894行目付近に"jmpi"がありますが、
>
> # NOTE: For high loaded big kernels we need a
> # jmpi 0x100000,__KERNEL_CS
> #
> # but we yet haven't reloaded the CS register, so the default size
> # of the target offset still is 16 bit.
> # However, using an operand prefix (0x66), the CPU will properly
> # take our 48 bit far pointer. (INTeL 80386 Programmer's Reference
> # Manual, Mixing 16-bit and 32-bit code, page 16-6)
>
> .byte 0x66, 0xea # prefix + jmpi-opcode
> code32: .long 0x1000 # will be set to 0x100000
> # for big kernels
> .word __KERNEL_CS
>
> 上記のように、コメント中で "jmpi" という文字が使われるだけで、命令の記述としては
> 使われなくなっています。
>
> linux-2.6.xx では、"jmpi" という文字は、コメントの中にも無くなったようです。
>
> GAS は AT&T ASM syntax ということのようですが、その中で、
> "jmpi"
> という命令が定義されているのでしょうか。
> ネット上をかなり調べましたが、回答に相当する情報をみつけることができませんでした。
> 意味もなく気になっているだけなのですが、この
> jmpi
> という命令が実際に定義されている文献を確認できれば、と思っています。
> ネット上にある文献で jmpi を定義しているものがあれば、お教えください。
>
> この jmpi についての記述がある文献ならば、GAS の文法書、AT&T ASM syntaxの文法書として
> とても詳しく書かれたものかもしれず、そういう文献を文法の参考にできれば、とも思っています。
>
> よろしくお願いします。
>
>
>


投稿者 xml-rpc : 2008年10月21日 03:23
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/78227
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。