痔になりやすい生活習慣とは?

アセンブラで、CPUを再起動させたり、シャットダウン、停止など行うプログラムをマシン語で書きたいのですが、参考になるものはありますか?

CPU (AMD使っていますが)のマニュアルってあるのですか?

このQ&Aに関連する最新のQ&A

A 回答 (4件)

大概の16ビット以上のCPUは、0x00000000番地にリセットベクトルがあるので、



  mov.l #0x00000000,er0 ; 0x00000000番地をレジスタに指定。
  mov.l @er0,er0    ; er0レジスタで示すアドレスの値をer0レジスタに転送。
  jmp  @er0      ; er0レジスタで示すアドレスにジャンプ。

; ただし、mov.lは32ビット転送命令、jmpはジャンプ命令。
; mov命令は、ソース, ディスティネーションの順。
; er0は間接参照ができる32ビットレジスタ、@は間接参照、#はイミディエイトデータ。

でいいんじゃないかなぁ?
ただ、これが思った通りに動作しても、「本当に」リセットがかかるだけで、「正常なシャットダウン」→「再起動」ではないから気を付けてね。
i80386系のニーモニックを忘れたので、汎用CPU命令で失礼!
    • good
    • 0
この回答へのお礼

なるほど、こういう情報を待っていました。
OSの話でなく、直接CPUのべたな仕組みを知りたかった
ので、試しにIPL部に次のマシン語を書くと

sti
mov exa, 0x00000000
jmp exa

で再起動できました。

CPUのマップ表など情報を手に入れたいです。

お礼日時:2006/08/21 04:07

回答を見て少し気になったのですがスタックなども含めて初期化しないと危ないように思うのですが。


要はマニュアルを見て各レジスタ類をCPUのパワーオン時に設定しないと安全ではないですよね。

>電源断の
WindowsAPIにはありますが生で操作するとなるとどこかのI/Oポートに思われますがPCならBIOSレベルではないのかな。 OSが動いていたらいきなり電源OFFはあり得ないしCPU自身で停止するならHALTやらパワーダウン(クロックダウン)など省エネモードの命令はあると思いますがCPUのマニュアルがないとわかりません。
お役に立てなくて失礼しました。
    • good
    • 0

どんな環境でしょうか?


「シャットダウン」「CPUにAMD」と言うあたり、組み込み系ではなくWindowsのような気がしますが。

Windowsに限らず、まっとうなOSは#2さんの様な手段は通じません。CPU側も、それを防ぐ機能があります。
Windowsをシャットダウンしたいなら、マシン語は諦めて普通にC言語でAPIを呼んで下さい。「windows API シャットダウン」で簡単に検索できます。
とりあえず、引っかかったページを参考URLに載せますね。

参考URL:http://www31.ocn.ne.jp/~yoshio2/vcmemo18-1.html
    • good
    • 0
この回答へのお礼

なるほどWindowsではAPIじゃないと無理ですね。

しかし、私が知りたかったのはCPUのべたな機能でした。
組み込み系?など良く知らないのですが、CPUの情報について詳しく知りたかったのですが、言葉足らずで申し訳ありません。

今は、再起動が解決したので、IPLにマシン語で電源断のプログラムを書く方法が知りたいです。

お礼日時:2006/08/21 04:11

ご使用のOSにも寄りますが16ビットであれば、参考URLがお役にたつでしょう。

windows2000以降であれば32bitになってしまうので私には経験がありません。
ただし、私の記憶では(20年位前ですが)シャットダウンしたり、再起動するシステムコールはなかったような気がします。今はもしかしたらあるかも知れません。
後、私のホームページですみませんが、お勧め書籍のところを見てみてください。
http://www2.ttcn.ne.jp/tetnon2000/tet.htm

参考URL:http://www7.plala.or.jp/keny01/asm/dos/
    • good
    • 0
この回答へのお礼

なるほど、Windowsではシステムコールでできそうですね。
私は単にCPUがどのようにリセットするのか知りたかったのですが、言葉足らずですみませんでした。

お礼日時:2006/08/21 04:00

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


人気Q&Aランキング