アセンブラを勉強しよ ..
[2ch|▼Menu]
552:デフォルトの名無しさん
08/12/02 12:10:42
突然ですが、レガシーなDMAコントローラを使う場合、
CPUのキャッシュとDMAによる物理メモリへの書き込みとを同期させる
には、far jmp 命令を実行すれば良かったんでしょうか?

553:デフォルトの名無しさん
08/12/02 14:56:45
x86でのDMA転送は、I/O Agent が勝手にsnoopして、物理メモリとキャッシュ
と同期する、という噂がありますが、正式な資料がどこかにありませんかね。

IA-32 Intel Architecture Software Developer's Manualの
Volume 3「System Programming Guide」 の 9.3.2節の以下の
部分に何となく書かれていますが、「できる(can performe)」ことと
「実際にそうなっている」事とは別ですから。

9.3.2. Choosing a Memory Type
The simplest system memory model does not use memory-mapped I/O with read or write side
effects, does not include a frame buffer, and uses the write-back memory type for all memory.
An I/O agent can perform direct memory access (DMA) to write-back memory and the cache
protocol maintains cache coherency.

554:a
08/12/02 15:06:54
age

555:デフォルトの名無しさん
08/12/03 00:04:07
>>553
ハードの実装次第

556:デフォルトの名無しさん
08/12/03 00:59:39
>>552
far jmpはパイプラインが捨てられるだけだ。
キャッシュきれいにしたけりゃwbinvdあたり使わねば。




557:デフォルトの名無しさん
08/12/03 01:47:07
>>556
自己書き換えコードの直後に jmp するというのはキャッシュ・クリア
ではなくパイプライン・クリアでしたっけ?

言われてみれば、データ用のキャッシュは、CPU自身の書き換えでは
整合するに決まってますね。

558:デフォルトの名無しさん
08/12/03 01:53:55
>>555
PCIは、あるデバイスがマスターになって、メモリに転送する機能が
定められている。Legacy DMAは、ISAバスに繋がっているが、ISAバスは
ISA-PCIブリッジによってPCIバスに繋がっている。

Legacy DMA転送は、PCIのこの転送機能を利用しているのだろうか?

559:デフォルトの名無しさん
08/12/04 02:16:42
>>558
そりゃブリッジがバスマスタになってごにょごにょしなけりゃ、
DMAにならんだろう。


560:デフォルトの名無しさん
08/12/04 07:53:34
>>559
PCIバスマスタ転送は、自動的にチップセットによってsnoopされ、
CPU内部のキャッシュと同期が取られるはずなので、
Legacy DMA 転送も、CPUの内部キャッシュと勝手に同期される
ということで正しいのだろうか。

561:デフォルトの名無しさん
08/12/04 09:34:17
されなきゃ8237直に叩くような行儀の悪いコードが
動かなくなってしまうのではないかと。

ISAのバスマスタなんてとんでもないモノは無理だと思うが。


562:デフォルトの名無しさん
08/12/04 10:03:45
>>561
てっきり、仮想8086モードでjmp far ptrを行うと、キャッシュや
パイプラインなどが実メモリと同期される性質(未確認)を使っているの
かと思ってますた。

チップセット内蔵の8237同等パーツは、今でも実メモリに直に繋がっている
ようにエミュレートされているのかと思ってましたが、そうではないの
かも知れませんね。

今は、絶対に、PCIのバスマスタ転送を利用していて、勝手にsnoopされて
いるんだという明確な証拠が欲しいですが。

563:デフォルトの名無しさん
08/12/04 22:02:23
少なくとも論理的にはPCIデバイスの先につながっているようになっている。
ちなみにキャッシュは気にする必要がない。そうでなければ既存のOSが動かなくなる。

564:デフォルトの名無しさん
08/12/09 06:21:42
>>563
便乗質問ですが、この場合CPUからの書き込みも何も気にする必要がないんでしょうか?
それともドライバーで何かの処理(DMAの領域はキャッシュ不可(ライトスルー)にする
等)が必要でしょうか?

ちなみにむかーし自分がm68kの乗ったマシンのドライバを書いた時はその手の処理を
したように記憶しています。今どき(?)のx86 & PCIのドライバに関してこの辺の知識を
得たいと思ったら何かお勧めの書籍等ありますかね?

565:デフォルトの名無しさん
08/12/10 14:18:11
ちょっと質問しまつ

使うアセンブラはyasm

汎用32ビットレジスタは eax,ebx,ecx,edx とかあるけど
汎用64ビットレジスタって rax,rbx,rcx.. .とか先頭にrを付けるのでいいのかな

566:デフォルトの名無しさん
08/12/10 14:43:38
ドキュメント読まないYUTORIか

567:デフォルトの名無しさん
08/12/10 20:59:37
>>566
読まないんじゃなくて読めない
ゆとりです

568:565・567
08/12/10 21:48:48
自己解決しますた
nasmのドキュメソトにレジスタ名載ってますた

>>566
d

569:デフォルトの名無しさん
08/12/11 03:34:33
ARMなんですが,実行ファイル(ELF)を無理矢理で良いので
アセンブラの段階まで書き下してくれるようなソフトってすでにあったりしませんか?

FF DE FF E7 FF DE ・・・・・・

bx lr

なんていうかこんな感じで

570:デフォルトの名無しさん
08/12/11 03:50:02
>>569
あったな、あった。
昔はそんなの沢山あったな。

まあ、難しいもんでもないから自分で作ってみたら?

データとプログラムの区別とか、ジャンプテーブルの解釈がミソだぜ。

571:デフォルトの名無しさん
08/12/11 03:50:36
objdump -D

572:デフォルトの名無しさん
08/12/19 16:44:55
win32+VC++で、逆アセした関数をC++に組み込むのに安全で手っ取り早い方法を教えてケロ

573:デフォルトの名無しさん
08/12/19 17:02:33
MASMで書いてリンクじゃ駄目なの?

574:デフォルトの名無しさん
08/12/19 19:32:32
>>572
違法行為やめろ

575: ◆0uxK91AxII
08/12/19 19:48:25
途中でdisassembleしている辺りが、被効率的杉で、ハナシにならない。

576:デフォルトの名無しさん
08/12/19 20:28:38
>>574
なにがどう違法行為なんだかw

もうすぐ合法になって、契約による縛りも無意味になるご時世だというのに。

577: ◆0uxK91AxII
08/12/19 20:40:06
被 -> 非

VirtualAllocで確保して、書き込んで、呼べばokな気がするする。

578:デフォルトの名無しさん
08/12/20 01:18:10
それだと使いたい所が空いてなかったら困らんかい?

適当にもらってから頑張って再配置とか。


579:デフォルトの名無しさん
08/12/20 10:52:50
>>577
それじゃ命令内のアドレスが無茶苦茶だろ。

580: ◆0uxK91AxII
08/12/20 10:58:24
(゚Д゚)ハァ?
バカは死ね。

581:デフォルトの名無しさん
08/12/20 11:00:48
絶対ジャンプや静的変数の扱いをどうすんの。

582: ◆0uxK91AxII
08/12/20 11:04:14
関数に、そんなモノは無い。

583:デフォルトの名無しさん
08/12/20 11:05:50
゚o゚

584: ◆0uxK91AxII
08/12/20 11:14:57
572が想定している関数に、そんなモノは無い。
...と書くべきだったか。

585:デフォルトの名無しさん
08/12/20 11:22:07
もちろん無いなら問題ないんだが、
どうして何の情報も出してない572の想定が分かるのだろうか。

586: ◆0uxK91AxII
08/12/20 11:25:37
『手っ取り早い』という条件があるからね。
とにかく、バカは死ね。

587:デフォルトの名無しさん
08/12/20 13:22:16
・・・これはひどい。

588:デフォルトの名無しさん
08/12/21 11:56:49
取り敢えず、>572が諦めれば済むな。

589:デフォルトの名無しさん
08/12/21 20:09:21
アセンブラを安全に使うなんて、無理だろ。つうか使う意味が無い。
危険だけど好きな事が出来るのがアセンブラの醍醐味なんだからな。

590:デフォルトの名無しさん
08/12/22 08:24:12
危険つっても攻殻機動隊の世界みたく脳が焼かれるわけじゃなし

591:デフォルトの名無しさん
08/12/22 14:03:18
無茶すりゃOSに怒られるしなあ…


592:デフォルトの名無しさん
08/12/22 15:45:23
MS-DOS の時代に比べれば、みんな安全なプログラムだよなぁ。

593:デフォルトの名無しさん
08/12/23 10:31:13
そうだねえ。
ハード叩きまくりだったからなあ。

再起不能になって修理するハメになったり…


594:デフォルトの名無しさん
08/12/28 00:52:29
32ビットは対象外かな?

595:デフォルトの名無しさん
08/12/28 01:00:40
いくらでもOK

596:デフォルトの名無しさん
08/12/28 08:44:52
アセンブラ勉強ならmasm使うべき

597:デフォルトの名無しさん
08/12/29 01:21:28
x86が基本ってことはないと思うが・・。

598:デフォルトの名無しさん
08/12/29 07:11:30
目の前にあるじゃない

599:デフォルトの名無しさん
08/12/29 09:01:18
基本中の基本ということなら68000かな。

600:,,・´∀`・,,)っ-●◎○
08/12/29 09:11:44
そこはMMIXwareだろう



最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

5201日前に更新/148 KB
担当:undef