1 名前:デフォルトの名無しさん [2007/08/14(火) 17:18:08 ] アセンブラ全般に関するスレッドです。 【前スレ】 アセンブラ… ( ゚д゚)ウッウー pc11.2ch.net/test/read.cgi/tech/1174825173/
364 名前:デフォルトの名無しさん mailto:sage [2008/04/14(月) 11:48:32 ] >>359 この時代で一番いいのは6502だろ、マイナーだったことと周辺LSTのそろいが悪いので売れなかったけど。 反面一番売れたZ80は、タイマー・DMA・I/Oインターフェイスと大抵の物がそろっていて、はんだこて握らなくて済むように ソケットにでもしてしまえば今のPC自作と変わらないレベルだった。 それ以外にもZ80は、メモリーを節約しやすかったので、この点もメモリーの制約の大きな時代では大きなアドバンテージになったと思う。 それで、書きやすかったかといえば・・・・・ちょっと微妙な気がするな。 16ビット計算もなんちゃって計算なのでフラグが使えなかったりと・・・ 高速な乗算に使える1を入れての右シフトは公開してほしかった、こんな大事なもの非公開の隠し命令にするなんて何事だと当時思った。 もうひとつついでにDRAMのリフレッシュをする機能であるRレジスタは、CPUリセットで停止してしまう片手落ちをなんとかして使えるものにしてほしかったな。 リセットするごとにメモリーが消えては使い物になりましぇん。 こんな事書いていると年がばれるぅぅぅ
365 名前:デフォルトの名無しさん mailto:sage [2008/04/14(月) 13:06:09 ] >>363 わざと誤情報をばら撒いたという事か 悪質だね
366 名前:デフォルトの名無しさん mailto:sage [2008/04/14(月) 22:18:02 ] >>361 MIPSは良かったねぇ >>365 かわいそうな子にさわっちゃいけません
367 名前:デフォルトの名無しさん mailto:sage [2008/04/14(月) 23:22:44 ] >>364 今もこれだけの愚痴が出るということは かなり根に持ってるな?w アセンブラ、ゴリゴリいじってみたい気もするけど、 今いじる仕事といえばかなり卓越してないと無理だろうな。。。 趣味だけにしとこ
368 名前:デフォルトの名無しさん mailto:sage [2008/04/14(月) 23:40:36 ] 6502ってハミコンか?
369 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 01:05:09 ] ダンゴさんがピシっと〆てくれたな
370 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 06:51:48 ] 6800作ったMotorolaからスピンアウトした連中がMostekって会社作って6502作った 6800は8bitとしては歪んだ(贅沢な)設計だったが6502は潔かったので安くて速かった AppleIIに採用されたことで有名 ファミコンはそれのカスタム版だったと思う
371 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 13:22:15 ] >>367 いやぁ、懐かしい思い出だよ Z80はプログラムを作る方はともかく、ロボットを作ったりしたときなどはそりゃもう一番楽しいチップだったよ。 大手メーカーがこぞってこれを使ったのは、技術的なハードルが低いのとコストの安さだろうね。 逆にいえば、これを使っているメーカーの技術力はしれていたと思ってます。 シャープのテレビ事業部の製品などは、技術とかそんなの関係なしに楽しかったな、ハードはああでなきゃいかんです。 富士通は技術力あったけれど、つまらんマシンだったと思ってるので。 >>370 6502は、無駄を省き必要最小限にシェープアップすると、ここまで変わるのかという例だね。あとR3000も。 不必要な命令セットは、憶える事も余分に増えるし、大して代わり栄えのしないトライアンドエラーによるチューンが増える。 時間が無駄になる割には効果は薄いと思った。
372 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 17:25:44 ] >>371 全くだ。6502は6802に対応するチップだが本家より先に出したんだから凄い。 多分Moto内部で6800に負けたデザインなんだろ。
373 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 21:44:58 ] >>371 そういう経験っていいなー。ハード屋目指してみるかな?w けど、今のハードのレベルだと三十路過ぎから勉強しても無理だよな。。。 趣味でやろうと幾つか買ってるけど全然いじってないしorz
374 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 23:26:42 ] >>373 それハード屋じゃない。
375 名前:デフォルトの名無しさん mailto:sage [2008/04/16(水) 00:02:56 ] >>374 じゃあ何屋になるんだろ?単純に組み込み系かな? すまん、門外漢で全然分からんw
376 名前:デフォルトの名無しさん mailto:sage [2008/04/16(水) 00:13:07 ] >>372 > 6502は6802に対応するチップ どこが対応してるんだ?
377 名前:デフォルトの名無しさん mailto:sage [2008/04/16(水) 00:21:28 ] ソフト屋(低レベル)とか制御屋とか?
378 名前:デフォルトの名無しさん mailto:sage [2008/04/16(水) 00:40:43 ] >>377 thx ハード屋=回路設計だっけ?
379 名前:デフォルトの名無しさん mailto:sage [2008/04/16(水) 13:06:17 ] 組み込みとか楽しそう。
380 名前:デフォルトの名無しさん mailto:sage [2008/04/17(木) 03:10:43 ] >>376 中味の話じゃなくて位置付け
381 名前:デフォルトの名無しさん mailto:sage [2008/04/17(木) 21:49:11 ] >>390 だから、位置付けのどこが対応してるんだ? # 中身は、言わずもがなだろ。
382 名前:デフォルトの名無しさん mailto:sage [2008/04/17(木) 21:49:29 ] 対抗するチップ、のほうがしっくり来るな。
383 名前:デフォルトの名無しさん mailto:sage [2008/04/17(木) 21:50:25 ] はいはい、おじさん同士喧嘩しないの!
384 名前:デフォルトの名無しさん mailto:sage [2008/04/17(木) 22:13:22 ] 横からお邪魔しますが,型番が全てを表してるんじゃないの?
385 名前:デフォルトの名無しさん mailto:sage 全てって何さ [2008/04/18(金) 12:22:59 ] いえ、型番だけではビット数もパッケージのピン数も 開発者の嫁の顔もわかりません。
386 名前:デフォルトの名無しさん mailto:sage [2008/04/18(金) 13:02:05 ] 【コラム】Hello Worldコレクション (5) アセンブラ編 - OSごとに微妙に異なるスタイルを使い分ける ttp://journal.mycom.co.jp/column/helloworld/005/index.html
387 名前:デフォルトの名無しさん mailto:sage [2008/04/20(日) 15:08:28 ] 昔はVRAMのアドレスやジョイステックのポートを直接読んだり書いたり、Hello World なんかよりよほど面白かったんだけどな アセンブラがわからなくても、ベーシックについているモニタモードなどでアドレス指定して直に書き換えしているうちに憶ちまった人もいるし 今はいちいちOSにお問い合わせしないと何もできないからすぐに結果が出せなくて面白くないね。 言語関係をやっている人以外には興味の湧くところでなくなった。
388 名前:デフォルトの名無しさん mailto:sage [2008/04/20(日) 16:20:14 ] > 昔はVRAMのアドレスやジョイステックのポートを直接読んだり書いたり 必要なのはアセンブラではなくてメモリのマッピングの情報だったりする。 自身でも書いているけど、ベーシックだろうがCだろうが可能だよね。 ちょっと前に趣味でDSの自作ソフト作ってみたけど、 そこでもARMのアセンブラの知識が有効活用されたと思ったことはあまりなかったな。 本当にもうコンパイラ屋さんしか必要ない情報なのかも
389 名前:デフォルトの名無しさん mailto:sage [2008/04/20(日) 16:21:53 ] 思い出した。ゲームのプロテクトを外すのにはアセンブラ必須だったね。 9801のディスクアクセス割り込みの CD 1B とか懐かしいな。
390 名前:デフォルトの名無しさん mailto:sage [2008/04/20(日) 17:48:26 ] >>388 コンパイラのアセンブリ出力見たりしない? 私は最適化をどう行なったのか当たりをつけるために、しばしば見てるんだけどねぇ。
391 名前:デフォルトの名無しさん mailto:sage [2008/04/20(日) 18:08:06 ] >>388 > 本当にもうコンパイラ屋さんしか必要ない情報なのかも ブート部分を書く人にも必須だよ。 まあ、流通量の多い機器ならコンパイラ屋さんがサンプル提供している ケースも多いけど。 >>390 >>388 は知らんけど、俺は何か問題かある時とかよっぽどきちきちに組み たい時以外は見なくなった。
392 名前:デフォルトの名無しさん mailto:sage [2008/04/20(日) 18:26:12 ] 最近はコンパイラの品質も高く あとは言わな(ry
393 名前:デフォルトの名無しさん mailto:sage [2008/04/20(日) 18:31:45 ] >必要なのはアセンブラではなくてメモリのマッピングの情報だったりする。 最近のハードウェアがまたI/Oをメモリーにマップする(x86場合はIO空間か?)より 通信が中心になってパケットをDMAまたは、それに類似する方式で送る形式になっているので、 「すぐにアクセスできる感」は直に触ってもないんだよな。 近年のハイパフォーマンスを実現するにはアドレスとデータのペアなんか送っていたのでは性能が出ないというのも難解にしているような気がする。 すっかり総ネットワークプログラミング状態だよ。 昔ながらのアクセス方法が今に続いているのはメモリーだけになってきている。
394 名前:デフォルトの名無しさん mailto:sage [2008/04/20(日) 18:37:08 ] >>392 高くはないけれど、最近のハードウェアの特性が地味チューンを無意味にしている所はある。 メモリーキャッシュに乗せる技術でほぼ全部だし、それ以外はやってもやらなくても殆ど変わらない。
395 名前:デフォルトの名無しさん mailto:sage [2008/04/20(日) 18:46:25 ] うーむ、アセンブリ出力を眺めてループ内にdivがいくつあるか数えるような使い方するのはうちくらいか?w
396 名前:デフォルトの名無しさん mailto:sage [2008/04/20(日) 19:06:55 ] よし、みんなで秋葉原の鈴商にHD64180を買いに行こう!
397 名前:デフォルトの名無しさん mailto:sage [2008/04/20(日) 20:50:36 ] >>389 よく SYMDEB で弄ったな。 >>396 作りかけのCP/Mボードが部屋に転がってるw まだ64180なんて売ってるのか。 まぁ8085とか6800とかも売ってる所が在るから不思議では無いか。
398 名前:デフォルトの名無しさん mailto:sage [2008/04/20(日) 21:33:00 ] 6800系はまだ現役だね。マイクロコントローラになっちゃってるけど。
399 名前:デフォルトの名無しさん mailto:sage [2008/04/20(日) 23:24:05 ] >>395 多分君のところだけ。 普通のところはそんなことする必要がある部分は初めからアセンブラで書くと思う。
400 名前:デフォルトの名無しさん mailto:sage [2008/04/21(月) 11:24:59 ] 86や使いこなせばこなすほどコンパイラなる我が身なりけり 68kどれを使えばよいのやらgccに道を問ふまで 引用元忘れた
401 名前:デフォルトの名無しさん mailto:sage [2008/04/21(月) 16:31:46 ] 最初のコンパイラはASMで書いたけど、cができたらそのcもcで書き直すよね。 そうすると新しいチップができてもそのコンパイラはコンパイラで書くんじゃないの?
402 名前:ヽ・´∀`・,,)っ━━━━━━┓ mailto:sage [2008/04/21(月) 16:45:42 ] 機械語やデータのバイト列生成するだけならfwriteとかfputcharで十分だな
403 名前:デフォルトの名無しさん mailto:sage [2008/04/21(月) 17:42:38 ] sレコードとかならprintfでいける。
404 名前:デフォルトの名無しさん mailto:sage [2008/04/21(月) 17:47:04 ] ところで昨日鈴商いったんですよ、でね、HD64180探してたら目の前に8085があるじゃないですか。 マルチプレクスされたバスなんて、ちょっと回路組んだ気分にひたるには丁度よさそうなんで、 そのまま8255と8251と8KSRAMまで買って帰ってきちゃいましたよ。 あと373とかも。 あとはROMが欲しいので、今日、若松でDIPのFlash買って来ました。 さて、ハンダ付けハンダ付け・・・ >>397 CP/M関連でお勧めのサイトありますか? あったら教えてください。
405 名前:デフォルトの名無しさん mailto:sage [2008/04/21(月) 17:58:42 ] www.auction.co.jp/mem1/item/mem_itm_item.asp?LOT=1036477 120円、高っ、いつか10円になっていた時代があったような・・・
406 名前:デフォルトの名無しさん mailto:sage [2008/04/21(月) 19:56:06 ] >>396 俺が知っているのはTMP64180だな。
407 名前:デフォルトの名無しさん mailto:sage [2008/04/21(月) 21:52:02 ] >>401 コンパイラ本体は C で書くけど、どんなコード生成すればいいかはアセンブラと 言うか機械語の知識が必要でしょ。 あと、コンパイラによってはアセンブラソースを吐く奴もいるし。
408 名前:デフォルトの名無しさん mailto:sage [2008/04/23(水) 15:14:04 ] >>407 コンパイラの最終一歩手前フェーズ(機械語生成フェーズ)がその知識を抱え込めば いいはずですよね。 その後に最適化フェーズが何パスかあるかも。 アセンブラソースを吐かすのはデバックとかそのフェーズ検証のためが第一義で、 コンパイラでアプリを開発する人には、ゼロとは言わんがあんまりメリット無い気がする。
409 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 07:22:49 ] >>408 いや。コンパイラ使いにも、-S 出力のメリットはある。 同じ処理で、どっちの書き方が効率良さそうかをみる時には活用できる。 もちろんベンチを取るでもいいんだけど。
410 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 18:19:15 ] 半田づけする時のヤニが焦げる香りが好きで吸い込んでいた事があったのを思い出して今ぞっとした。鉛中毒は何年後にでるかなorz 融点が高いという話は聞いていますが今の鉛フリーの半田は取り扱い難くなっているとかあるんですかね?
411 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 18:32:06 ] はげしく板違いだな。 鉛フリーは使った事ないけど、濡れにくいと聞いている。
412 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 19:40:41 ] 上でも言われてるけどコンパイラの最適化具合見る為にアセンブリ吐かせるっしょ。 iclもifort単純な演算にハメてやらないとすぐベクトル化諦めやがる。 ま、大抵の場合はそこまで単純化出来ないから結局intrinsics使う事になるんだけどな。
413 名前:デフォルトの名無しさん mailto:sage [2008/04/26(土) 12:41:25 ] >>411 処女みたいなもんだな。
414 名前:デフォルトの名無しさん mailto:sage [2008/04/28(月) 01:55:57 ] 技量に大きく依存する点も似てるな
415 名前:デフォルトの名無しさん mailto:sage [2008/05/01(木) 22:28:01 ] intelプロセッサに未だにDWORDの並列演算が無いのは嫌がらせか?
416 名前:デフォルトの名無しさん mailto:sage [2008/05/01(木) 22:49:34 ] DWORD*4ならSSE2になかったっけ?
417 名前:デフォルトの名無しさん mailto:sage [2008/05/02(金) 10:33:42 ] 〜〜やるのに都合のいい命令が無いっていうならわかるけど、 並列演算が無いっていうのは調べて無さすぎだろ MMX かなり限定的な使用のみ SSE 大幅に拡張された SSE2 かなりのところまで使えるようになった SSE3/SSE4 さらに便利に wlog.flatlib.jp/archive/1/2007-4-21
418 名前:デフォルトの名無しさん mailto:sage [2008/05/02(金) 23:00:14 ] 415だが正しくは32bitの飽和並列演算が無いの間違いだった。
419 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 01:24:48 ] 実行頻度低そー
420 名前:ヽ・´∀`・,,)っ━━━━━━┓ mailto:sage [2008/05/03(土) 11:49:23 ] 2byte空間にOpcode余ってないからじゃないの? それよりSIMDにNEG代替命令が無くて困る。 NANDやNOR入れてくれよ。
421 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 11:53:14 ] >>420 pcmpeq で all 1 つくって、pxor じゃ駄目なの? レジスタ節約したいとか、クロック節約したいとか切実に思うけど。
422 名前:ヽ・´∀`・,,)っ━━━━━━┓ mailto:sage [2008/05/03(土) 12:07:40 ] ぼくがかんがえたAVX 2に入れるべき最強命令(笑) vpnand ymm0, ymm1, ymm2 vpnor ymm0, ymm1, ymm2 vporn ymm0, ymm1, ymm2 vpeqv ymm0, ymm1, ymm2 vpcmov ymm0, ymm1, ymm2, ymm3 あと、3〜4入力のAND, OR, XORがあってもいいくらいだな これなんてDSP? つーかDWORDの飽和演算なんてARGB128bitとか使わない限り要らんな。
423 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 14:51:40 ] >3〜4入力のAND, OR, XOR これいいな
424 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 20:38:30 ] >>420 AVXの発表で思ったんだが、まだ1byte空間に空きがある事の方が驚き。 NEGは俺も凄く欲しい。しかしVMXにも無いよな。 マイナス取るって事はその後演算するって事なんだろうから、 可能な限り演算順序を入れ替えて対処しろって事かと。 あとはuOP Fusionみたいのでxor/subの組み合わせを特別に認識している可能性はある。 もしくは入れ替えに対処出来ない状況というのはa*(-b)のような積や商に入っている場合だから、 どっちにしろ積のレイテンシ待ちだしその間にやれば?って発想かも知れん。 >>423 ハードウェアの仕組みを知らんが、入力ポートと出力ポートの数に制限があるんじゃないか? そうじゃないと配線が大変な希ガス。
425 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 22:00:04 ] > ハードウェアの仕組みを知らんが ハードウェアの勉強してから書けよ。
426 名前:ヽ・´∀`・,,)っ━━━━━━┓ mailto:sage [2008/05/03(土) 22:57:45 ] negはできるわ。SSSE3のpsign*が使える。まあ2段構えになるが。 無いのはNOTだな。 AVXでは4引数(3入力1出力)を実現するのにVEXの他にimm8の上位4ビットを使ってるが 下位4ビットも使えば5引数(4入力1出力)も可能だろうし、実際に何かしらやる計画はあるのだろう。
427 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 00:34:13 ] >>425 スマン。 >>426 命令にエンコード出来るかどうかじゃなくて、実装出来るかどうか。 多分レジスタファイルが何十とあって、 そこから処理する値を取ってきて保管する場所があって、 それを処理して、出力を保管する場所があるんじゃないか? 例えばパラレル配線で繋がっているメモリからの読み出しをクロック当たり1byte増やそうと思ったら CPUのピン、メモリのピン、基盤の配線が全て8本増えるって事だと思うんだが、 オペランド数を増やすのも似たようなことが起きそうな気がする。 3オペランド化は殆どの命令に恩恵があるからやる価値があったのだろうけど たった数命令の為に膨大なトランジスタリソースを裂く必要があれば全く目もくれないと思うんだが。
428 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 11:58:02 ] 謝る暇があったら、勉強しなよ。 > 多分レジスタファイルが何十とあって、 > そこから処理する値を取ってきて保管する場所があって、 > それを処理して、出力を保管する場所があるんじゃないか? 何を言いたいのかさっぱりわからん。 そのあとの文章も同様。
429 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 13:31:06 ] >>428 お前は分かっているのか。 大雑把に教えてくれるなり指摘してくれ。 CPUにレジスタファイルが何十と入っているのは分かるよな。 処理部分がVHDLで記述されていようと自分で回路書いていようと、結局は回路な訳だ。 例えば1bitのAND回路があった時に、通常入力は2つで出力は1つだろう。 レジスタファイルが100あってもその全てがAND回路に繋がっているはずがない。 入力として必要な2つだけが選択的に一次レジスタのような格好で取り出され、処理が選択されるんじゃないかと。 > そのあとの文章も同様。 妄想だらけな文章でも、そのあとの方が理解しやすいと思うんだがどの辺が分からなかった?
430 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 14:56:18 ] >>429 「CPUの作り方」みたいな本が沢山出てるから、どれでも一冊読んでみ。 バスとかセレクタとか・・・
431 名前:ヽ・´∀`・,,)っ━━━━━━┓ mailto:sage [2008/05/04(日) 19:48:18 ] 「imm8を使えばとれる引数増やせるじゃん」って言ったら 「デコーダが複雑になるだろ」とか集中砲火浴びたことがあった。 今じゃ、 Opcode ModRM [SIB] [DISP] imm8, imm8 なんて命令すらありますね。AMDだけど。 SSE5では最初のimm8をDREXに置き換えたのかな?
432 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 20:14:41 ] ダンゴさんは先見の明がありすぎるな
433 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 20:34:10 ] >>429 デコーダはあっち置いといて。 4入力ANDを追加するとして、バスから4入力ANDへ引く線と AND回路と、結果を書き戻す回路が必要になるだけだろう。 ファンアウトでも気にしてるのか?
434 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 20:43:56 ] つ「74LS181」 focus.ti.com/lit/ds/symlink/sn74s181.pdf
435 名前:ヽ・´∀`・,,)っ━━━━━━┓ mailto:sage [2008/05/04(日) 21:22:57 ] 4入力のANDは [A]─AND─AND-[E] [B]─┘ │ [C]─AND─┘ [D]─┘ 一方、VMXでいうvselbとかAMD SSE5のpcmovは [A]━━━━AND-OR-[D] [B]─AND─╂─┘ [C]━┷NOT┛ VMXに関してはvand/vor/vnor/vxorと同じレイテンシで実現できてることを考えれば 3〜4入力はそんなに実装難易度は高くない気がする。
436 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 21:45:39 ] 多オペランド演算の問題はALUではなく レジスタからALUへのパスが複雑化することにあるんだが。 どうせ回路を複雑にするなら特殊な専用命令を追加するより スーパースカラやベクトル演算器を入れた方が効率がいい。
437 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 22:00:32 ] 今はregister fileのportからALUへのpathはoperandの数だけ独立に引いてる? それとも時分割してる?
438 名前:デフォルトの名無しさん mailto:sage [2008/05/05(月) 02:19:03 ] レジスタファイルって何を指してる? ただのレジスタってか、FFのことを言ってるのか?
439 名前:デフォルトの名無しさん mailto:sage [2008/05/05(月) 08:01:28 ] 何十って言ってるから、32/64bit レジスタを1個と思ってるんじゃね?
440 名前:デフォルトの名無しさん mailto:sage [2008/05/05(月) 11:15:38 ] 64ビットx8本くらいのレジスタファイルが100セットくらいあると思ってるのかもよ。
441 名前:デフォルトの名無しさん mailto:sage [2008/05/05(月) 11:41:00 ] いや、だから、そのファイルって、何を言おうとしてるのかなと。 どこかのメーカの用語か?
442 名前:デフォルトの名無しさん mailto:sage [2008/05/05(月) 11:48:39 ] ああ、レジスタ全体のことか。失礼。
443 名前:デフォルトの名無しさん mailto:sage [2008/05/05(月) 12:08:55 ] つ ttp://en.wikipedia.org/wiki/Register_file
444 名前:デフォルトの名無しさん mailto:sage [2008/05/05(月) 12:45:41 ] レジスタファイルはプロセッサコア方面では普通に使われる。 CPU作ろう系の本には必ず出てくるよ。
445 名前:デフォルトの名無しさん mailto:sage [2008/05/05(月) 12:56:12 ] アーキテクチャによるだろ
446 名前:デフォルトの名無しさん mailto:sage [2008/05/05(月) 13:10:05 ] アーキテクチャはあんまり関係ないだろ。 全部ワイアードでも、マイクロプログラムの説明は出てくるように。 ただ、萌え系のあの本にはレジスタファイルの解説は無さそうだ。
447 名前:デフォルトの名無しさん mailto:sage [2008/05/05(月) 13:20:06 ] レジスタファイルの概念が確立した以後の本で、その本で造ろうとする石で プロセッサファイルを使っているか、総合的な解説に字数を割いていれば 出てくるとは思うけど。
448 名前:ヽ・´∀`・,,)っ━━━━━━┓ mailto:sage [2008/05/05(月) 13:23:53 ] とりあえずレジスタリネーミング機構のあるプロセッサには確実にあるものだと思ってるが。 ATOMにすらあるようだな。2スレッドで独立してるらしいが。
449 名前:デフォルトの名無しさん mailto:sage [2008/05/05(月) 15:20:32 ] >>447 > プロセッサファイルを また、俺の知らない単語が出てきたよ...。
450 名前:デフォルトの名無しさん mailto:sage [2008/05/05(月) 15:26:06 ] おれも初耳だよ(´・ω・`)
451 名前:447 mailto:sage [2008/05/05(月) 15:27:42 ] かきまつがえたorz
452 名前:デフォルトの名無しさん mailto:sage [2008/05/05(月) 15:47:13 ] いまのうちに実用新案出しておくんだ!
453 名前:デフォルトの名無しさん mailto:sage [2008/05/05(月) 20:06:44 ] 商標登録でもいいんじゃね?
454 名前:デフォルトの名無しさん mailto:sage [2008/05/06(火) 11:50:06 ] おれはネコ耳だよ
455 名前:デフォルトの名無しさん mailto:sage [2008/05/06(火) 18:41:44 ] 娘さんを下さい
456 名前:デフォルトの名無しさん [2008/05/16(金) 11:56:11 ] x86 について調べていますが、Core 2 にも U パイプラインや V パイプラインがあって、それぞれペアリングできる条件がありますか? intel の資料で「ペアリング」や「Uパイプライン」で検索してもヒットしないので、どうすればペアリングされるのか分かりません。
457 名前:デフォルトの名無しさん [2008/05/16(金) 12:01:59 ] OSもなにもなしにx86系のCPUに直接マシン語を読ませて、実行するには どういう環境が必要でしょうか
458 名前:デフォルトの名無しさん mailto:sage [2008/05/16(金) 12:05:45 ] コードをROMに書いてみるなりしたら?
459 名前:ヽ・´∀`・,,)っ━━━━━━┓ mailto:sage [2008/05/16(金) 12:10:11 ] >>456 Core 2は4Wayパイプラインでアウトオブオーダ実行だからそんな古い知識は捨ててしまいなさい ALUのポートとレイテンシさえ知ってればいい。 まあAtomではまた必要になりそうだがな
460 名前:デフォルトの名無しさん mailto:sage [2008/05/16(金) 12:36:46 ] >>457 WindowsやLinuxなどのUnixなどたいていのOSは、 CPUの保護モードを利用して、普通の機械語プログラムは 直接CPUにくべて走らせています。 もし、OSの保護下でなく直接機械語を実行させたいなら、 MS-DOSのような保護のないOSを使うか、ブートセクタに 書き込んで実行させるのが手軽です。
461 名前:デフォルトの名無しさん mailto:sage [2008/05/16(金) 16:34:03 ] >>457 『30日でできる!OS自作入門』という本が参考になるかもしれない。 読んだことないけど。
462 名前:デフォルトの名無しさん mailto:sage [2008/05/16(金) 17:33:42 ] リアルタイムOSを利用しましょう
463 名前:デフォルトの名無しさん mailto:sage [2008/05/16(金) 18:12:26 ] >>459 U/V パイプラインというものはないということでしょうか? 参考にしていたサイトが古かったようです。 ALUのポートは Core 2 では確か 3 つですよね。ということは、ALU を使う演算は同時に 3 つできるのですね。 レイテンシは Intel の資料の付録にあったので、それを参考にします。 スループットは大事ではないのですか?
464 名前:ヽ・´∀`・,,)っ━━━━━━┓ mailto:sage [2008/05/16(金) 18:44:09 ] >>463 もちろん大事。 スループットは、殆どの命令で1クロックサイクル。 ALUの3ポートのどれでも実行出来る命令は1/3と表現される。 んで、レイテンシ・スループットサイクル数が多い命令は概して複数のμOpsに分解して実行する命令ですね。 まあ各命令ごとの使用ポートの詳細はagner.orgあたりが詳しいと思う。 掛け算とかシフトとか発行できるポートが決まってるから、その辺さえ抑えておけばOK。 ちなみにPentium Pro以降のx86アーキテクチャは命令の並べ方自体にはそんなに意味はない。 10数命令前後する程度なら、依存関係さえ無ければ平気で並べ替えて実行できます。
465 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 02:32:22 ] >>464 なるほど、ありがとうございました。
466 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 02:40:59 ] レジスタ少ないからこの >依存関係さえ無ければ って意外と手で書くには難しいところはあるかもしれないけどね。
467 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 19:54:18 ] >>466 それは団子に散々指摘してるんだが学習しないんだよな。 ストレステスト(笑)しか作った事無いんじゃないかと。 CPUが割と広い視野を見てくれる事は事実だろうから知識として与えてもいいが、 質問者がわざわざintrinsicsじゃなくてアセンブラでやりたい/出来るだけの知識がある人なんだから 重要なところから目を反らすような発言はいただけない。
468 名前:ヽ・´∀`・,,)っ━━━━━━┓ mailto:sage [2008/05/17(土) 19:56:24 ] >>467 ←レジスタリネーミングも知らないのかこいつ
469 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 20:11:11 ] 依存関係がなければリネームできるけど あったら無理だろ
470 名前:ヽ・´∀`・,,)っ━━━━━━┓ mailto:sage [2008/05/17(土) 20:28:31 ] 依存関係を断ち切る方法だってIntelの最適化マヌアルに載ってるんだがな。 逆に、OoO・レジスタリネーム機構で断ち切れない依存関係なんて インオーダ時代のアーキテクチャの知識があってもどうにかなるわけがないだろう。 tripper.kousaku.in/20080307.html#p01 ↑これだってレジスタ利用数を意図的に絞ってコード組んでるんだけどね。
471 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 21:13:29 ] > 依存関係を断ち切る方法だってIntelの最適化マヌアルに載ってるんだがな。 最初からそういう方向性でものを言った方がいいだろって言ってるんだよ。 否定されたものだから否定で返しやがって ほんっと主語が読めてないな。
472 名前:ヽ・´∀`・,,)っ━━━━━━┓ mailto:sage [2008/05/17(土) 21:17:27 ] 前述のagnerのにもIntelの資料読む必要ないくらい詳しく載ってる。
473 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 22:01:13 ] >>471 >ほんっと主語が読めてないな。 期待したあなたの負け
474 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 22:15:40 ] ダ●ゴさんのカキコでスレが一気にヒートアップしたな
475 名前:ヽ・´∀`・,,)っ━━━━━━┓ mailto:sage [2008/05/17(土) 22:26:26 ] 474 名前:あぼ〜ん[あぼ〜ん] 投稿日:あぼ〜ん
476 名前:ヽ・´∀`・,,)っ━━━━━━┓ mailto:sage [2008/05/17(土) 22:27:36 ] >>471 自分の了見の狭さを露呈したからといって相手に理解力がないことにするのは詭弁以外のなんでもないよ。
477 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 23:25:54 ] 自分の了見の狭さ
478 名前:デフォルトの名無しさん mailto:sage [2008/05/18(日) 00:44:31 ] いちいち例は挙げないが団子が知ってる知識だけ披露して、 外野の煽りはまだしも理論的に攻められてもスルーするのは昔から。
479 名前:デフォルトの名無しさん mailto:sage [2008/05/18(日) 01:39:07 ] 団子さんの知識に嫉妬する輩のせいでスレがションボリしたな
480 名前:デフォルトの名無しさん mailto:sage [2008/05/18(日) 01:40:45 ] 外野アァン
481 名前:デフォルトの名無しさん mailto:sage [2008/05/18(日) 02:17:41 ] 壊れたラジオみたいなもんだ 使い方によっては便利?
482 名前:デフォルトの名無しさん mailto:sage [2008/05/18(日) 05:59:17 ] せいぜいお笑い系番組聞くくらいだね。 登山途中で天気図書くとか、急いでる時に渋滞情報聞こうとかいう用途には不向き。
483 名前:ヽ・´∀`・,,)っ━━━━━━┓ mailto:sage [2008/05/18(日) 07:34:34 ] >質問者がわざわざintrinsicsじゃなくてアセンブラでやりたい/出来るだけの知識がある人なんだから >重要なところから目を反らすような発言はいただけない。 これがどこがどう理論的なんだ自画自賛か 「知識がある人」だとみとめつつも、ちょっとマニュアル調べればわかることを理解できないと過小評価してるわけだよね。 俺は「アウトオブオーダ」と「依存関係」というヒントがあればちゃんとたどり着くことは期待してたんだがな。 ついでにいうとx86はレジスタが少ないからこそかえってレジスタリネーミングは実装しやすい。 ISAレベルで数十レジスタあるようなCPUだとかえって複雑になるからね。
484 名前:デフォルトの名無しさん mailto:sage [2008/05/18(日) 07:53:01 ] 団子の場合、読みにも書きにもフィルタが入っていると思っておけば間違いないよ。
485 名前:ヽ・´∀`・,,)っ━━━━━━┓ mailto:sage [2008/05/18(日) 08:10:35 ] 自画自賛くんは放置するか 自分の意見通したいだけで困ってる当事者に何の配慮のレスもしない ただの荒らしでしかない
486 名前:デフォルトの名無しさん mailto:sage [2008/05/18(日) 08:53:24 ] 誤読して>>468 みたいな発言するからまずいんじゃないのか >>485 まで通して読むとあまりに見苦しいよ
487 名前:デフォルトの名無しさん mailto:sage [2008/05/18(日) 09:12:22 ] ダンゴさんの指導でスレが猛烈にヒートアップしたな
488 名前:ヽ・´∀`・,,)っ━━━━━━┓ mailto:sage [2008/05/18(日) 09:18:31 ] >>486 ←自己弁護見苦しい。理論もクソも無いじゃないか
489 名前:デフォルトの名無しさん mailto:sage [2008/05/18(日) 09:22:52 ] >>467 からレジスタリネーミングを知らないなんて飛躍するのが理論なの?
490 名前:ヽ・´∀`・,,)っ━━━━━━┓ mailto:sage [2008/05/18(日) 09:57:13 ] x86って何の気も無しにコード組んでればレジスタリネーミングのヒントを与えてるんだよ 値のロードやxor eax, eaxなど第1オペランドで指定するレジスタの元の値に非依存の結果が得られる命令のほとんどがそうだ。 第2オペランド以降が依存関係がないか解決できてるのも条件だけど。 >>466 が的外れなのも言うまでもないし、SPARCみたいな古くからあるレジスタ大量に積んだ RISCがOoOを実装してないのはご周知の通り。 そもそもOoOみたいな複雑な機構自体がRISCと矛盾する。 ところで「重要なところ」って何なのかな。 無知故の発言にしかみえないが。 命令列レベルで並列なんて考えない方が良いんだよ。 x86の少ないレジスタで命令レベル並列なんて根本的に無理だし、 結局ロード・ストアを連発する羽目になりRAWハザードで性能でないのが落ち。
491 名前:ヽ・´∀`・,,)っ━━━━━━┓ mailto:sage [2008/05/18(日) 10:00:20 ] おっと最近のSPARC64はOoO実装してるね。無茶なのに。
492 名前:デフォルトの名無しさん mailto:sage [2008/05/18(日) 10:23:19 ] クソコテは放置推奨
493 名前:ヽ・´∀`・,,)っ━━━━━━┓ mailto:sage [2008/05/18(日) 10:44:41 ] (ISAレベルで)レジスタが多いと、インオーダでもちゃんと組んでやれば性能は出せるけど ユニット構成が変わったりパイプラインが深くなったりすると総崩れを起こすんだよね。 レジスタが多いが故にOoOで依存関係を解決してやるのも回路が膨大になる。 OoO時代になって、回路規模あたりの効率はレジスタの多いPOWERみたいなアーキよりもx86のほうがむしろ勝ってたりね。 ジョブズがG4/G5よりCoreのほうが性能が良いって掌を返したのも無理もない話なんだよ。 あと様々なプラットフォームに移植されてるJavaVMはスタックマシン。 スタック階層が依存関係のヒントにもなるから動的最適化もしやすいんだよ。 今やx86もVMみたいなもんだからな。JavaVMほどには洗練されてないが、ソフト資産の面で優れてる。 命令セット使い捨てのアーキには優れたアーキなんだけどねRISCみたいなのは。 CellのSPEなんかも使い捨てだろう。 PS2のときもワークステーションを作るだとかふかしてたが結局EE(ベクトルコプロセッサ付きカスタムMIPS)は使い捨てられた。
494 名前:デフォルトの名無しさん mailto:sage [2008/05/18(日) 11:04:59 ] >>492 もうちょっとやりあっちゃ駄目? あーでも納得させる自身は無いなあ。 誰も奴の知識に文句をつけてる訳じゃなくて 知識に自分の思想/宗教を付加してる事が教育的ではないと思うんだが。 > x86の少ないレジスタで命令レベル並列なんて根本的に無理だし、 そんなの思想だ。俺は無理だと思っているが、無理かどうかは分からない。 お前は今まで反対に命令レベルの並列を説いて「少ないレジスタで並列なんて無理だろう」って言われてたよな。 > CellのSPEなんかも使い捨てだろう。 単なるお前の予想だし蛇足だろう。そもそもLarabeeマンセーはどこいきましたか(笑)
495 名前:ヽ・´∀`・,,)っ━━━━━━┓ mailto:sage [2008/05/18(日) 12:22:18 ] インオーダのベクトル指向プロセッサはデータレベル並列性が高い処理にしか有効でないよ。 1スレッドあたりの性能が重要な用途ではOoOのスーパースケーラが引き続き有効。 バランスが大事だな。 Larrabeeは既存のx86アーキの代替ではない。 置き換わるなんて言ってるのは後藤くらいだ。
496 名前:デフォルトの名無しさん mailto:sage [2008/05/18(日) 13:08:06 ] で、それは「アセンブラ」の話題なのか?
497 名前:デフォルトの名無しさん mailto:sage [2008/05/18(日) 13:47:28 ] そりゃそうだろう
498 名前:デフォルトの名無しさん mailto:sage [2008/05/18(日) 14:14:06 ] CPUの話題ではないのか、ってこと?
499 名前:デフォルトの名無しさん mailto:sage [2008/05/18(日) 14:24:40 ] 壊れたラジオだから 期待するだけ無駄 スレに住みつかれたら 無視するしかないだろ
500 名前:デフォルトの名無しさん mailto:sage [2008/05/18(日) 15:01:24 ] CPU の話題を出さずにアセンブラの話をするのは無理というものだ
501 名前:デフォルトの名無しさん mailto:sage [2008/05/18(日) 15:20:58 ] 団子じゃなけりゃ文句も出ないんじゃね?
502 名前:デフォルトの名無しさん mailto:sage [2008/05/18(日) 18:59:14 ] CPUの話題なら何でもいいってわけじゃないし。
503 名前:デフォルトの名無しさん mailto:sage [2008/05/18(日) 20:10:04 ] 団子が名前欄に何も入れなければ済む話だと思う
504 名前:デフォルトの名無しさん mailto:sage [2008/05/18(日) 21:21:20 ] 入れて欲しすぎる。NG設定が面倒。
505 名前:ヽ・´∀`・,,)っ━━━━━━┓ mailto:sage [2008/05/18(日) 21:41:53 ] まあなんでもいいんだけど。 「重要なこと」があると言いつつ自分は例示せずに俺に噛みついてれば彼の脳内では「理論的」なんだから たまったもんじゃないよな。 まあレジスタリネームの存在を前提としないトンデモ仮説なら何言っても否定してやるけどさ。
506 名前:デフォルトの名無しさん mailto:sage [2008/05/18(日) 22:59:52 ] はいはい壊れたラジオ
507 名前:ヽ・´∀`・,,)っ━━━━━━┓ mailto:sage [2008/05/18(日) 23:26:51 ] 耳の痛い話に壊れたラジオって言っておけば「理論的」なんだね
508 名前:デフォルトの名無しさん mailto:sage [2008/05/18(日) 23:55:06 ] コテハンvs名無し ですか
509 名前:デフォルトの名無しさん mailto:sage [2008/05/18(日) 23:59:19 ] 団子さんへの嫉妬でスレが埋まりつつあるな
510 名前:デフォルトの名無しさん mailto:sage [2008/05/19(月) 00:44:52 ] >>505 >まあレジスタリネームの存在を前提としないトンデモ仮説なら何言っても否定してやるけどさ。 ご遠慮ください。
511 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 22:50:44 ] アセンブリ言語の教科書に org 100H section .text start: mov ax, 0200H mov bx, HELLO PRINT: mov dl, [ds:bx] cmp dl, 00H jz PRINTEND int 21H inc bx jmp PRINT PRINTEND: mov ah, 4CH int 21H section .data HELLO db 'Hello World!',00H というプログラムがあるのですが、 文字列のアドレスを入れるのはbxレジスタでなければいけないんでしょうか? 例えば、 mov bx, HELLO mov dl, [ds:bx] inc bx の部分を mov cx, HELLO mov dl, [ds:cx] inc cx に変更したら動かないのですが、何が問題なのかよくわかりません。
512 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 23:04:00 ] int 21H というファンクションの仕様。 cなどでいう関数の引数。
513 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 23:42:22 ] [ds:cx]と表現するようなアドレッシングモードは存在しないから
514 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 13:54:30 ] ;ファイル作成 org 100H section .text start: mov ah, 3CH mov dx, filename xor cx, cx int 21H mov ah, 4CH int 21H section .data FILENAME db 'test.txt', 00H とした時にtest.txtではなくTEST.TXTが作成されてしまうのですが。 test.txtを作成する時はどうすればいいのでしょうか?
515 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 14:11:58 ] LFN (Long File Name) ファンクションを使うんだ。 www.vector.co.jp/soft/data/prog/se044198.html
516 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 23:49:21 ] >>514 大文字、小文字なんか気にするな。 気になるなら set DIRCMD=/L とすれば気にならなくなるよ。 君の使ってる OS で使えるかどうかは知らんが。
517 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 00:05:32 ] >>515 Windows 2000/XP でも有効ですか?
518 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 00:10:54 ] なんかアセンブラと関係ない気がする
519 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 07:43:35 ] >>517 有効です。
520 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 12:01:00 ] 今度はキャメルケースが全部小文字になる方が気になるw
521 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 12:27:59 ] 大文字、小文字を意識するネーミングは、たいていの場合においてよくないことだと思うぞ。 MontaVista Linux のソースなんか大文字、小文字違いで同じ名前のファイルが あちこちにあるんで、Windows 上に持ってきて作業できない。 おかげで vi がそこそこ使えるようになっちまったよ。(w
522 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 20:51:11 ] >>521 Windowsでも大文字小文字を区別できなかったっけ? レジストリの設定にそんなのがあった気がする
523 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 21:36:27 ] Win32サブシステムがDOSとの互換性のために区別してないだけで カーネルやファイルシステムレベルじゃ区別されてるな
524 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 21:39:23 ] Win32サブシステムでも区別する設定はあるけど 区別しない前提で作ってるアプリばっかりだから きっとまともに動かないんじゃないだろうか
525 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 21:48:11 ] Aとaは区別されない えーっ
526 名前:ヽ・´∀`・,,)っ━━━━━━┓ mailto:sage [2008/05/22(木) 21:55:19 ] 大小違い同名ファイルが作れるかどうかは別だよな
527 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 21:56:18 ] NTカーネル(つかNTFS)で 全角アルファベットが酷い扱いだった時代があったことを知らないのかね。
528 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 21:57:55 ] うわ知ったか消防が来た
529 名前:デフォルトの名無しさん [2008/05/22(木) 22:03:40 ] 晒しage
530 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 07:52:14 ] ケースの話してるのに、なぜ「全角」が出てくるのか、まずはそこからだ。
531 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 09:21:35 ] だんごさんのせいでオヤジギャグがスルーされたな。
532 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 09:40:54 ] >>530 全角Aとaのcaseが区別されない、と言うことを525が言ってるからだろ
533 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 11:37:28 ] そういうケースもあるさ
534 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 02:48:18 ] 団子とやりあってたヤシだがしばらく書き込めなかった。 予想通り俺の説得スキルが足りないようなのでもうやめる。 続けたければ隔離スレでも立ててくれ。
535 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 04:26:55 ] SBB AL,[EAX] ADD [EAX],AL XCHG [EAX],EAX ADD [EAX],AL あるゲームのHPの格納アドレスの近くにあるのですが これってどういう意味があるのでしょうか
536 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 07:53:07 ] ただのデータじゃね?
537 名前:ヽ・´∀`・,,)っ━━━━━━┓ mailto:sage [2008/05/24(土) 08:27:58 ] >>534 お前が無知なだけだろ。モダンなx86の物理レジスタは100本以上あるんだよ。
538 名前:ヽ・´∀`・,,)っ━━━━━━┓ mailto:sage [2008/05/24(土) 08:41:39 ] 俺を説得とか馬鹿にもほどがある。 釈迦に説法と言う気はないが、俺に無意味に噛みついて質問者を混乱させてどうするんだ。 「重要なこと」さっさと答えろよ
539 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 09:20:27 ] >>538 無意味に噛みつていたのはおまえだろ
540 名前:ヽ・´∀`・,,)っ━━━━━━┓ mailto:sage [2008/05/24(土) 09:24:41 ] 「重要なこと」があると言いつつ、それを言わないこと自体が論理矛盾じゃないか。 俺は「無い」と断言したがな
541 名前:デフォルトの名無しさん [2008/05/24(土) 09:30:04 ] ここで聞くことかどうかわかりませんが、電子手帳とかそういうのもマイコン 使ってますよね。そういうのに入っているデータもアセンブラがわかれば 吸い出せるんですか。昔のやつが何台もあるので。
542 名前:ヽ・´∀`・,,)っ━━━━━━┓ mailto:sage [2008/05/24(土) 09:31:44 ] データそのものは機械語で保存されてるわけではない。どっちかというと構造体が解析できればOK。
543 名前:デフォルトの名無しさん [2008/05/24(土) 09:32:50 ] >>542 もう少しヒントを教えてくれるとありがいです。または参考となるURLなど あれば。お願いいたします。
544 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 09:41:39 ] せめて機種を書け。
545 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 09:47:18 ] www.wotsit.org/ くらいは読みこなせるようになって、 日本語漢字コードのあれこれを理解できたら 独自解析も夢ではないと思うよ
546 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 10:41:11 ] 団子さんのカキコでスレが猛烈にヒートアップしたな
547 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 11:20:44 ] >>546 あんたよく飽きないねぇ
548 名前:ヽ・´∀`・,,)っ━━━━━━┓ mailto:sage [2008/05/24(土) 11:30:52 ] レス番飛んでる
549 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 15:19:25 ] お宝鑑定団子供大会
550 名前:ヽ・´∀`・,,)っ━━━━━━┓ mailto:sage [2008/05/24(土) 15:34:56 ] 「さんの(レス|カキコ)」
551 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 17:33:19 ] みんなが 団子さんのカキコでスレが云々 とか書いておけば団子ハブにできるのか。いいな。
552 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 18:19:49 ] 団子さん兄弟
553 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 20:35:16 ] もうこの板の名無しを「団子さん」にすりゃいいんじゃね?
554 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 08:54:41 ] そもそも彼奴が名無しで書き込めば解決なのだから 今後もハンドル付きで書き込むようなら 内容にかかわらず荒らし扱いで問題ないよな
555 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 11:32:52 ] .text:0040135A loc_40135A: ; CODE XREF: sub_401350+28j .text:0040135A cmp [ebp+arg_4], 0 .text:0040135E jz short loc_40137A .text:00401360 mov ecx, [ebp+var_4] .text:00401363 mov byte ptr [ecx], 0 .text:00401366 mov edx, [ebp+var_4] .text:00401369 add edx, 1 .text:0040136C mov [ebp+var_4], edx .text:0040136F mov eax, [ebp+arg_4] .text:00401372 sub eax, 1 .text:00401375 mov [ebp+arg_4], eax .text:00401378 jmp short loc_40135A .text:0040137A loc_40137A: ループで文字列の比較をしてるんでしょうか? インクリメントしてる方の処理が何をしているのか。
556 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 11:59:34 ] // >>555 for (; arg > 0; ++var, --arg) { * var = 0; } // ただの配列のクリアだね。随分と無駄なコードだけれど。
557 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 12:09:37 ] >>556 ありがとうございます。
558 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 15:48:45 ] x86やAMD64向けの、NUL文字の位置を最速で求めるコードって何ですか?
559 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 15:57:03 ] ダンゴ様のピリっとしたベンチマークが求められているな
560 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 16:31:16 ] ダンゴちゃんの愛されっぷりがわかるスレだな
561 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 17:17:41 ] みんなツンデレすぎ
562 名前:ヽ・´∀`・,,)っ━━━━━━┓ mailto:sage [2008/05/25(日) 19:18:01 ] 長い文字列なら16byteごとに一気に判定してしまうのが吉 lea edx, [str] pxor xmm0, xmm0 loop1: movdqu xmm1, [edx] pcmpeqb xmm1, xmm0 pmovmskb ecx, xmm1 test ecx,ecx jnz skip1 add edx, 16 jmp loop1 skip1: bsf eax, ecx add eax, edx ; eaxに結果格納 SSE4.1対応ならpcmpeqb+ptestでNULLが含まれる16バイトを検出可能。 SSE4.2に対応してればATAを使えばNULL文字の位置まで特定できる。 まあレイテンシ隠蔽とかの最適化は各自でやれ
563 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 19:25:54 ] SSSE3だのSSE4.1、4.2だの… 最近わけわかめ
564 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 22:33:37 ] そんなことよりMIPSやろうぜ。
565 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 23:35:56 ] Intel 64 and IA-32 Architectures Software Developer’s Manual の日本語版ない?
566 名前:ヽ・´∀`・,,)っ━━━━━━┓ mailto:sage [2008/05/25(日) 23:41:06 ] www.intel.com/jp/download/index.htm 日本法人は変なFlashゲーム以外仕事しねーな
567 名前:デフォルトの名無しさん mailto:sage [2008/05/26(月) 00:43:04 ] >>562 すげー倍以上速くなった。
568 名前:デフォルトの名無しさん mailto:sage [2008/05/26(月) 09:14:22 ] >>567 想像で勝手な事言うが、メモリがボトルネックで流石に倍は無いだろう。 そら自力で1byteずつ調べてたらxmm使った場合の16倍の調査が必要になって メモリアクセスに隠蔽されないくらい遅くなるかも知れないが strlen使ったら普通4byteずつ調べてくれるから比較とかの時間はメモリアクセスの時間に隠蔽されるはず。 よく話題に上がる高速版memcpyを考えるのと同じで ハードウェアプリフェッチを邪魔しない程度にプリフェッチの方法を考えた方がスピード上がるはず。
569 名前:デフォルトの名無しさん [2008/05/26(月) 12:09:40 ] Windows上で動くCASL2のアセンブラを探しているんですが、何かありませんか? ソースプログラムと実行結果をテキストで出力可能なら良いのですが。
570 名前:デフォルトの名無しさん [2008/05/26(月) 12:27:03 ] >>569 いくらでもあんじゃない? ttp://www.vector.co.jp/vpack/filearea/win/prog/casl/
571 名前:ヽ・´∀`・,,)っ━━━━━━┓ mailto:sage [2008/05/26(月) 12:30:32 ] stlrenで4バイト同時って可能なの? dword単位で0が含まれるバイトを検索する命令なんてないと思うんだが。 基本的に巡回操作の場合は明示的な prefetch* 命令は使う必要ない。 文字列が全部キャッシュに載ってるなら尚更だし。 むしろmovdquの方に突っ込み入るかと思ったが(16byte境界からの探索にしてmovdqaしたほうがいいかも) >>569 ここは良いGoogle検索代行スレですね。 www.vector.co.jp/vpack/filearea/win/prog/casl/
572 名前:ヽ・´∀`・,,)っ━━━━━━┓ mailto:sage [2008/05/26(月) 12:35:07 ] ああ、MSVCRTのstlren.asm見たらようやく理解できた。 1バイト毎にbranch命令じゃ確かにパイプラインハザードで性能でない罠。
573 名前:ヽ・´∀`・,,)っ━━━━━━┓ mailto:sage [2008/05/26(月) 22:35:00 ] まあ、俺は性能どころかまともに動くかすら全然確かめてなかったんで とりあえず実験してみましたよ。 smallcode.weblogs.us/2006/08/22/fast-strlen-function/ のソース一式を改造して俺仕様stlrenベンチを作成。 NULL文字検出方法自体は>>562 をベースに小改良をしたものね。 で、それぞれ一番最後のスコアだけ抽出 strlen - short strings Microsoft: 1625 ticks, a = 145 Peter: 1093 ticks, a = 145 A.Fog: 1273 ticks, a = 145 DQN(SSE2): 674 ticks, a = 145←ここ strlen - long string Microsoft: 1225 ticks, a = 926 Peter: 1225 ticks, a = 926 A.Fog: 874 ticks, a = 926 DQN(SSE2): 437 ticks, a = 926←ここ とまあ、MSVCRT版strlenの倍以上は余裕で速い。 もっとも、pmovmskbの性能によって前後するみたいだが(Pen4とかAMDのプロセッサなんかだと全力で遅いかも) ちなみにうちの環境はCore 2 Duo (Wolfdale) 3.17GHz, Windows Vista Ultimate x64 Editionその他諸々ね 改造ソースとバイナリ一式→download.kousaku.in/trip/fast_strlen_mod.zip ちなみにSSE4.1(ptestを使う方法)だとSSE2と比べても伸びなかった。
574 名前:デフォルトの名無しさん mailto:sage [2008/05/26(月) 23:11:38 ] OoOやら予測分岐やらでかい口叩いてもCPUがメモリに負けてるってことか。 てかMacBook Pro (Merom)でWinXP(32bit) on VirtualPCだとDQNおせぇ。 VMWareにデュアルコア割り当てちゃってるけどバッテリ駆動じゃねえのになあ。 (VMWareは片コアだけにした方が速いと言われている) strlen - short strings Microsoft: 6024 ticks, a = 145 Peter: 6708 ticks, a = 145 A.Fog: 6036 ticks, a = 145 DQN(SSE2): 12792 ticks, a = 145 strlen - long string Microsoft: 6612 ticks, a = 926 Peter: 6792 ticks, a = 926 A.Fog: 4716 ticks, a = 926 DQN(SSE2): 12936 ticks, a = 926 イレギュラーな使い方だが、何故遅くなるのかは興味あるな。
575 名前:ヽ・´∀`・,,)っ━━━━━━┓ mailto:sage [2008/05/26(月) 23:22:02 ] ああ、うちのMerom機(T5500 Vista Home Premium (32bit))でも遅くなる。 【実行結果】 www.vipper.org/vip829067.txt.html pass [1234] ちなみに答えはわかってる。 Merom/ConroeはShuffle Engineの実装がしょぼくて pmovmskb reg, xmmがアホみたいに遅い。 MMXでやったほうがかえって速いかも知れない。
576 名前:ヽ・´∀`・,,)っ━━━━━━┓ mailto:sage [2008/05/26(月) 23:48:49 ] あれ?まともだ。 コンソール出力をリダイレクトすると何故かまともな結果が出るらしい。 そして、Meromでもシャッフルは思ったよりネックじゃない。 原因が別のところにありそう。 MMX(+SSE1 64bit整数SIMD)版追加版 download.kousaku.in/trip/fast_strlen_mod2.zip Merom機で追試 www.vipper.org/vip829134.txt.html PASS: [1234]
577 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 01:33:24 ] 576をWindows Vista 32bit + T5600 (Merom) で実行したけど、ほぼ同じ結果なのだが、 short stringsのDQN(MMX)が a = 145 だった。 あとMMXとSSE2に限り、1/20くらいの割合で平均の3倍以上かかる時があった。 大体649ticksや660ticks前後なのに、突然1738ticksになったり。 でもMMX/SSE2はMSVCRTの倍を超えている。 L2キャッシュがあふれるほど長い文字列なら話は別だろうけど。
578 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 01:40:51 ] レジスタ退避コスト?
579 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 02:07:18 ] 参考までにログをうp。fast_strlen > result.logとして出力。 パスは1234。Core 2 Duo T5600 Merom Vista HomePremium SP1 32bit www.dotup.org/uploda/www.dotup.org4863.txt.html + VirtualPC XP Pro SP2 32bit www.dotup.org/uploda/www.dotup.org4864.txt.html
580 名前:ヽ・´∀`・,,)っ━━━━━━┓ mailto:sage [2008/05/27(火) 02:17:30 ] >>576 の追試結果のテキストファイルはミスで、MMXのはShortのほうでLongを実行しちゃってるオチ。 今上げてるEXEとソースは修正済み。 PenM(Banias)でも計ってみたんだけど僅差でSSE2>MMXになってる。 並列度の低いコードではベクトル長の引き伸ばしはある程度有効ということがわかる。 >>578 あーそれもありそうだな。 Windowsってコンソールへの描画すらなにげに重たいようだ。 (ファイルだと軽いと思われる) 何周か回して平均値で算出したほうがよさそうかも。
581 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 07:42:01 ] こんなタイトなループで並列度が低いとか
582 名前:デフォルトの名無しさん [2008/05/27(火) 09:53:49 ] >>570 ありがとうございます
583 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 10:00:07 ] いまどきアセンブラよりJavaのほうが速い。 JNI使えばハードの機能もフルアクセスだし。
584 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 10:18:41 ] つ、釣られるもんか!
585 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 11:20:27 ] >>583 開発速度のことですね、わかります。
586 名前:デフォルトの名無しさん [2008/05/27(火) 11:41:02 ] Core2Quad Q9450でPS2エミュをやると、実機と違い処理オチせず、激ムズになることが判明 namidame.2ch.net/test/read.cgi/news/1211740649/l50
587 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 20:09:50 ] >>583 wwwwwwwwwwwwwwwwwwwwwww
588 名前:ヽ・´∀`・,,)っ━━━━━━┓ mailto:sage [2008/05/27(火) 20:31:16 ] JNIでfast_strlen.cppの関数をコールですね。わかります。
589 名前:デフォルトの名無しさん mailto:sage [2008/05/28(水) 22:05:50 ] このスレを見ている人はこんなスレも見ています。(ver 0.20) フロントミッション総合 - FRONT MISSION - 105th [家ゲーSRPG] この会社辞めようと思った腐れ上司の一言0x21 [プログラマー]
590 名前:デフォルトの名無しさん [2008/05/29(木) 16:29:58 ] すいません。アセンブラの宿題が終わらなくて。。。 どうか、手伝ってください。。。 Define a character string named CO_NAME containing "Internet Service" as a content. コレ分かる方います? あ〜!わかんね〜!
591 名前:デフォルトの名無しさん mailto:sage [2008/05/29(木) 18:33:02 ] 自己解決しました
592 名前:デフォルトの名無しさん mailto:sage [2008/05/30(金) 22:49:58 ] >>589 涙出てきた
593 名前:デフォルトの名無しさん [2008/06/03(火) 00:55:58 ] アセンブラでポインタってできるんですか? 変数の値の番地のプログラムに飛びたいんですが
594 名前:デフォルトの名無しさん mailto:sage [2008/06/03(火) 03:45:37 ] どの石よ?
595 名前:デフォルトの名無しさん [2008/06/03(火) 05:16:21 ] PICです
596 名前:デフォルトの名無しさん mailto:sage [2008/06/03(火) 06:28:13 ] >>595 間接アドレシングで出来るから、手元にあるデータシートに記載されてる説明を確認の事。 手元になければ↓からダウンロードして欲しい。 ttp://www.microchip.co.jp/document.htm
597 名前:デフォルトの名無しさん mailto:sage [2008/06/03(火) 13:11:35 ] すごいですありがとうございます!
598 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 13:41:56 ] 【算術演算結果による分岐】 N 番地の内容から M 番地の内容を引き,答えが負なら P 番地に -1(#FFFF)を,正なら +1(#0001)を格納するプログラムを作成しなさい.
599 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 13:46:02 ] >>598 だが断る
600 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 15:58:03 ] >>598 問題文が糞だから書き直せ屑
601 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 18:58:36 ] >>598 #define V(X) *(short *)(X) r = V(N) - V(M), r < 0? V(P) = -1 : r > 0? V(P) = 1 : 0;
602 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 23:40:05 ] 答えが 0 の時は、格納しちゃダメなんじゃないのか?
603 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 01:20:57 ] そーゆー問題のときは"0"=正で考えていいんでないかい。 特別扱いする必要があったらそういう注意書きがあると思う。
604 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 02:52:33 ] >>598 CLRX INCX LDD M CPD N SBEX #0 CPD N SBEX #0
605 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 02:55:52 ] STX P
606 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 07:25:19 ] >>598 ;うろおぼえ68000 START: MOVE.W SR, -(SP) MOVEM.L D0-D1, -(SP) MOVEQ #1,D1 MOVE.W N(PC),D0 CMP.W M(PC),D0 ;SUB.W M(PC),D0 BPL L_PLUS(PC) NEG.W D1 L_PLUS: MOVE.W D1,P(PC) MOVEM.L (SP)+, D0-D1 MOVE.W (SP)+, SR RTS N: DC.W $FF00 M: DC.W $00FF P: DS.W 1
607 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 10:50:12 ] しれっと特権命令使ってんじゃネーヨw
608 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 12:31:03 ] ああ、そうか。 MOVE.W (SP)+, SR RTS じゃなくて RTR で、いいんだ。
609 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 23:17:04 ] >>603 > そーゆー問題のときは"0"=正で考えていいんでないかい。 > 特別扱いする必要があったらそういう注意書きがあると思う。 そう言う思い込みはバグの元になるぞ。
610 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 23:21:17 ] 68000だけはmove SRが一般命令だったり。 010になって特権命令になったが。 ところで、PC相対ってオペランドの右に使えたっけ? なんか制限あったような気がするんだが。
611 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 23:52:58 ] >>610 > 68000だけは 68008 のこともたまには思い出してください。 > move SRが一般命令だったり。 move from SR の方だけね、move to SR は 68000 でも特権命令。 > ところで、PC相対ってオペランドの右に使えたっけ? て言うか、CMP 命令は右にしか使えない。 Add/Sub なんかはどっちにでも使える (但し、反対側は Dn のみ) けど、CMP はその後の条件判定を反対にすればいいので、片方しか 必要ないと判断したんだろうな。
612 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 12:25:06 ] ;青い本みてやりなおした68000 START: MOVE.W SR, -(SP) MOVEM.L D0-D1/A0, -(SP) MOVEQ #1,D1 MOVE.W N(PC),D0 CMP.W M(PC),D0 BPL L_PLUS(PC) NEG.W D1 L_PLUS: LEA P(PC), A0 MOVE.W D1, (A0) MOVEM.L (SP)+, D0-D1/A0 RTR dstにd16(PC)使えるの4命令しかなかた
613 名前:607 mailto:sage [2008/06/08(日) 15:33:43 ] * ステップ数を詰めてみた。 MOV.W N,D0 CMP.W M,D0 SMI D0 *(00/FF) EXT.W D0 *(0000/FFFF) ORI.W #1,D0 *(0001/FFFF) MOV.W D0,P * もっと変則にしてみたがステップ数縮まらず。 MOV.W N,D0 CMP.W M,D0 SPL D0 *(FF/00) EXT.W D0 *(FFFF/0000) ASL.W #1,D0 *(FFFE/0000) NOT.W D0 *(0001/FFFF) MOV.W D0,P * Scc を用いない方法。 MOV.W N,D0 SUB.W M,D0 ASR.W #8,D0 (00??/FF??) ASR.W #8,D0 (0000/FFFF) ORI.W #1,D0 (0001/FFFF) MOV.W D0,P * そして分岐を使っていないことに気が付く。
614 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 17:27:20 ] 素直な人間の思考から外れるものはコメント無いと泣けるので勘弁してください。
615 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 17:32:57 ] >>613 (PC)を使ったらもっと縮まるんじゃない?
616 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 18:55:49 ] 直感的ではない技巧に走るのは厨房
617 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 19:35:35 ] それは実務に限った話だ。
618 名前:>>611 mailto:sage [2008/06/08(日) 20:52:52 ] >>612 > dstにd16(PC)使えるの4命令しかなかた ほんとだ、俺もすっかり忘れてた。 そもそも、PC 相対はアクセスモードがプログラム参照 (FC=ユーザープログラム or スーパーバイザプログラム) になるから、可変データを PC 相対でアクセスす る領域に置くのは推奨されない。 さすがにデータ参照とプログラム参照で違うメモリをアクセスするシステムは見 たことないけど、プログラム参照領域は書込み禁止を設定しているシステムはあ るのでちょっと注意した方がいいかも知れない。 > MOVE.W SR, -(SP) move ccr, (-a7) でいいと思うが。 あと、68k は大抵の命令でコンディションコードが変化するから、サブルーチン の前後でコンディションコードを保存しないと言う流儀の方が多いと思う。
619 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 22:23:20 ] コメントなしにいきなり殴り書きされてるんじゃない限り 技巧のうちにゃ入らんだろ
620 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 18:12:54 ] >>598 LEAX N CMPX M BPL L_PLUS+1 LDB #$FF L_PLUS CMPX #$C601 SEX STD P
621 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 20:07:17 ] って最初からボケてる LDX N 或いはLEAX [N] か?
622 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 20:11:46 ] >>621 だね。6809は専門じゃないからつっこみかねてた。 ときに C6 01 にコメント振ってくれるとありがたい。 つか SEX 書きたかっただけじゃないか?
623 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 20:35:48 ] バレたか(w C6 はLDBのつもりだった、反省はしてない。
624 名前:ヽ・´∀`・,,)っ━━━━━━┓ mailto:sage [2008/06/09(月) 20:39:00 ] Obj-Cでsuper freeとか書くようなノリか
625 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 21:05:43 ] ただ8bitCPUだから、コスト的にはどうなんだろうな? クロック表が見当たらないぜ。
626 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 21:29:08 ] 68系ばっかりになるのなw
627 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 21:59:12 ] このスレで最高にビューティフルなマシン語を持つ超エレガントなアーキテクチャのCPU仕様を作ってARM超えを目指そうぜ! プロジェクトリーダーはダンゴさんに任せた!
628 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 08:46:38 ] Kaltfeuerとでも名付けよう。
629 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 03:19:05 ] 沢村さんを推します
630 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 18:28:34 ] ある命令の実行に何クロックかかるかを知りたいんですが、 CPU毎に"命令Aにはnクロックかかるよ"っていうのがリストされた資料があるんですか、それとも実測ですか? もし実測しかないならその方法を簡単に教えてください
631 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 18:33:45 ] 自己解決しました amdとintelの最近のプロセッサものはとりあえず見つけました メーカーがwebで公開してるんですね・・・
632 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 19:28:44 ] なんか昨今はGoogleする前に2chって思考なのかね 人の脳みそをあんまり安く考えてると、働くようになってから 苦労するんじゃねーかな まあ、半可通の糞ほど教えたがりなんだが
633 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 19:43:33 ] これがゆとりか・・・
634 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 20:05:52 ] 普通に勉強してれば命令語一覧とかに載ってるのを知ってそうなものだが・・・ そのうち 「ある命令の実行でフラグがどう変わるか知りたいんですが?」 とかの質問も来るのかな。
635 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 20:54:57 ] >>632 逆に半可通だからこそそういう疑問が出るんじゃないかな? ビンゴワードを知らないと何回か周辺ワードでググってそれを探さないといけないから意外と難しい。 昔は頭使わなくてもマイコン雑誌の特集とかで載ってて必修みたいなものだったけどさ。
636 名前:ヽ・´∀`・,,)っ━━━━━━┓ mailto:sage [2008/06/13(金) 21:14:19 ] 実測するためのCソースもIntelが提供してるな。 アレもわかりにくいところにあるけど
637 名前:デフォルトの名無しさん [2008/06/14(土) 01:40:46 ] >>635 > 逆に半可通だからこそそういう疑問が出るんじゃないかな? 半可通の酋長ダんゴ先生をバカにシュルナ!!!!
638 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 03:53:12 ] 知っているのならさっさと教えろやクズどもが。
639 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 09:32:33 ] >>638 あんただれ?
640 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 12:38:30 ] 俺だよ俺俺
641 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 12:43:50 ] あちこちで、教えるクンがオナニーしすぎて>>638 みたいな機知外 が本当に増えている
642 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 13:36:40 ] >>634 それも実験して調べるのです(Z80の隠し命令かよ・・・)。
643 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 18:00:18 ] >>641 それ以上にそいつ等をスルーできないやつ等のほうが増えて内科医。
644 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 18:11:17 ] おっさんくさいスレになりました
645 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 22:23:13 ] まあアセンブラなんて今時の若い者はあまりやらんからな。
646 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 23:17:34 ] つPIC
647 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 23:22:19 ] 最近の若い奴はJVMとCLRのアセンブラ(バイトコード)は結構読めるよ。
648 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 08:17:07 ] NASM のドキュメントの Appendix B って消えた? あれ便利してたんだが。
649 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 22:28:15 ] 今時アセンブラの需要はあるのかねえ
650 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 22:34:13 ] コンパイラベンダにゃ必須だろう。
651 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 22:36:25 ] エンコーダとか
652 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 22:40:54 ] ベクトル化ガリガリやりたいなら必要だね
653 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 23:03:58 ] 組み込みで、ブートローダー書く人とか。
654 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 23:31:20 ] 高級言語で書けない命令がどれだけあると思ってるんだ?
655 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 00:10:10 ] ローテート命令。 なんでC言語にはローテート演算子が無いんだ。 何度欲しいと思ったことか…
656 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 00:13:10 ] ローテートってそんなに速くなかったような気がするよ
657 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 00:45:22 ] シフトと論理和もしくは加算で書くより速いだろJK 何でもかんでもアセンブラで書きたがるのは昔の厨二病
658 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 00:47:15 ] 結果をすぐ使わないのであれば うまく並列実行されれば ローテートより速いんじゃね?
659 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 00:48:59 ] >>657 それがだな、昔シフト系の命令がクソ遅い Pentium4 とかいう CPU があってだな。 x86 の rol/ror 命令使うよりも mmx シフトと mmxor で書いたほうが速いとかいう ふざけたこともあったのだよ。フツーの 32bit の SISD でね。
660 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 01:00:51 ] つーか、ローテート命令が遅いなんてデマを流さないでほしい。
661 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 01:53:52 ] >>660 CPU によるけど、ローテート命令が速くない環境はあるよ。 intel の 24896604_j.pdf からの引用だけど、x86 では add : レイテンシ 0.5clk, スループット 0.5clk shl/shr: レイテンシ 4clk, スループット 1clk rol/ror: レイテンシ 4clk, スループット 1clk でー mmx だと pslld: レイテンシ 2clk, スループット 1clk psrld: レイテンシ 2clk, スループット 1clk por: レイテンシ 2clk, スループット 1ckl ね。 SISD で rol/ror より速いっつーのは記憶違いで嘘だったけど。 まーこういう糞な石はメインストリームじゃなければ無視できる のだけど、一時期多数派を占めてたりしたから無視するわけにも いかんのよ。
662 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 03:25:13 ] そんなにCがいいならインラインアセンブラつかえよ
663 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 03:31:41 ] ローテートぐらいならgccの拡張で使えたような気がする
664 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 13:26:14 ] rol や ror はintrinsicであるんだけどrolxやrorxのようにキャリーと一緒に回すのが無いんだよね
665 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 13:45:41 ] そもそもCにはキャリーの概念すらないし。
666 名前:デフォルトの名無しさん [2008/06/20(金) 09:47:19 ] Cのソースからアセンブラ吐いたんだけど,Cのソースではhoge(0,1)って引数で関数 呼び出してるけど、アセンブラでは movl $1, 4(%esp) movl $0, (%esp) という風に引数を逆に処理してるのは、どういう意味があるの?ご教示お願いします
667 名前:デフォルトの名無しさん [2008/06/20(金) 09:54:29 ] >>666 悪魔乙 gas の記法だろ。アセンブラによってオペランドを書く順番が違ってくるのさ
668 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 10:02:58 ] いや,オペランドじゃなくて引数の順序だろ. C では良くあること.
669 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 10:05:04 ] >>666 ・スタックは数が減る方に向かって伸びる。 ・その例でも引数1が %esp+0, 引数2が %esp+4 になってるでしょ? ・引数のポインタを取ったとき、スタック上の引数列が配列になるでしょ? hoge(int foo, int bar) を例に取ると int *p = &foo; によって p[0] == foo p[1] == bar となる。 で、このことは、引数不定とか可変長引数を実装するときに すごく都合がいい。スタックトップが必ず引数1になる。 K&Rの頃は引数不定がまかり通ってたし。 なお、>>666 の例では、%esp はあらかじめ減じられていると思われるため movl $0, (%esp) movl $1, 4(%esp) のように引数順に処理することもできるが、コンパイラの都合上それをやっていない。
670 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 11:45:08 ] 処理系によるんじゃないか?
671 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 12:04:24 ] >>666 Cの引数の評価順は特に決められていないので、コンパイラの都合で好きな順序で処理してよいわけだが、 たまたま逆順の方がコンパイラを作りやすかったとか、特に気にしないで作ったらたまたま逆順になったとか、 そんなとこだろうと思うよ 特に意味はないかと
672 名前:デフォルトの名無しさん [2008/06/20(金) 12:12:48 ] 厳格に決まっているわけではなく、 >>669 の述べているような理由などから、私が使っている処理系では引数がたまたま 決まっているということでいいんですか?
673 名前:デフォルトの名無しさん [2008/06/20(金) 12:13:51 ] ↑訂正、 引数がたまたま逆に処理されている
674 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 12:55:25 ] >たまたま逆に いや単に右から左なだけで,逆順とか正順とか決まってないから
675 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 13:34:07 ] カウントダウン方向で繰り返し処理すれば フラグ見るだけで処理の終わりがわかる
676 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 15:03:55 ] コード生成とスタックに積む都合から言うと、スタックに先に積むほうから 評価をしたいわけだ。 それと、可変長引数のことを考えると、Cの引数は右から左の順で積んだ ほうが都合が良い、ということ。
677 名前:デフォルトの名無しさん [2008/06/20(金) 18:12:47 ] やり方は、複数あるが後々都合が良い ってことですね。ありがとうございます。
678 名前:デフォルトの名無しさん [2008/06/20(金) 18:21:36 ] 富の目キモすぎ。バケモン。身障。DQN男。死ね 富の目キモすぎ。バケモン。身障。DQN男。死ね 富の目キモすぎ。バケモン。身障。DQN男。死ね 富の目キモすぎ。バケモン。身障。DQN男。死ね 富の目キモすぎ。バケモン。身障。DQN男。死ね 富の目キモすぎ。バケモン。身障。DQN男。死ね 富の目キモすぎ。バケモン。身障。DQN男。死ね 富の目キモすぎ。バケモン。身障。DQN男。死ね 富の目キモすぎ。バケモン。身障。DQN男。死ね 富の目キモすぎ。バケモン。身障。DQN男。死ね 富の目キモすぎ。バケモン。身障。DQN男。死ね 富の目キモすぎ。バケモン。身障。DQN男。死ね 富の目キモすぎ。バケモン。身障。DQN男。死ね 富の目キモすぎ。バケモン。身障。DQN男。死ね 富の目キモすぎ。バケモン。身障。DQN男。死ね 富の目キモすぎ。バケモン。身障。DQN男。死ね
679 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 18:45:53 ] 呼出し規約とかは関係してこないの?
680 名前:ヽ・´∀`・,,)っ━━━━━━┓ mailto:sage [2008/06/20(金) 18:47:45 ] push/pop命令の動きはABI云々じゃなくてCPUの動作仕様だからな
681 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 20:23:35 ] VC++ に限って言うなら、 普通の関数は右から左、 普通のメンバ関数は左から右、 可変長引数を持つメンバ関数は右から左、だな。
682 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 20:25:17 ] Cっていうか、WindowsAPIの仕様に引っ張られてるんじゃね?
683 名前:ヽ・´∀`・,,)っ━━━━━━┓ mailto:sage [2008/06/20(金) 20:28:54 ] thisポインタ=ecxは何とかならんかったのかと思う まあ、他に無いっちゃないが
684 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 20:29:03 ] PASCALキーワード!!!
685 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 20:57:03 ] VC++のメンバはthisをecxに積んで右からスタックだったはずだが
686 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 22:39:15 ] なんか、引数をスタックに積む順序と引数の評価順序の区別が付いてない 奴がいるな。
687 名前:デフォルトの名無しさん [2008/06/20(金) 22:48:48 ] ↑どういうこと?
688 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 22:49:28 ] >>685 ごめん。まちがえてた。
689 名前:デフォルトの名無しさん mailto:sage [2008/06/21(土) 00:59:53 ] 引数の評価順序って決まってたっけ
690 名前:デフォルトの名無しさん mailto:sage [2008/06/21(土) 01:07:38 ] 68000での質問です。 cmpi.w #$1234, D0 や cmpi.l #$12345678, D0 と同等な事をA0に対しても行いたく思い、 cmpaを使ってみましたが上手くいきません。 なぜでしょうか?
691 名前:デフォルトの名無しさん mailto:sage [2008/06/21(土) 08:33:30 ] >>687 左から評価して、右から積んでも規約に違反はしてない。 評価した順にスタックに積んで行くほうが楽。 という「都合」が引数の評価とスタックに積む順序に影響しているってこと。
692 名前:デフォルトの名無しさん mailto:sage [2008/06/21(土) 09:13:13 ] >>690 エスパーはいないぞ! もっと詳しく書け。
693 名前:デフォルトの名無しさん mailto:sage [2008/06/21(土) 16:40:04 ] >>687 スタックに積まれた引き数の配置は処理系で決まっている。 順番に詰まれるかどうかは分からない。 評価順序も決まっていない。 >>690 > 上手くいきません。 何をやって、どうなることを期待してて、どうなったかを書け。
694 名前:690 mailto:sage [2008/06/21(土) 17:07:42 ] 解決しました。 理由もなんとなくわかりました。 ありがとうございました。
695 名前:690 mailto:sage [2008/06/21(土) 17:15:55 ] お前らの役立たずっぷりに呆れました。 もう二度と来ません。
696 名前:690 mailto:sage [2008/06/21(土) 17:18:51 ] >>695 まあそれが本音ですけどね。 もはや揚げ足取りですし。 ありがとうございます。
697 名前:デフォルトの名無しさん mailto:sage [2008/06/21(土) 17:23:01 ] なんかね、どこからが釣りだったのかね、もうね
698 名前:690 mailto:sage [2008/06/21(土) 18:27:33 ] 詰まらない偽者がスレ汚ししてすみません。 最終レスは>>695 です。 ありがとうございました。
699 名前:デフォルトの名無しさん mailto:sage [2008/06/21(土) 18:48:48 ] いいから消えろよクズ
700 名前:デフォルトの名無しさん mailto:sage [2008/06/21(土) 18:57:46 ] ほっとけ 構うな
701 名前:690 mailto:sage [2008/06/21(土) 19:16:46 ] >>700 まったく同意
702 名前:690 mailto:sage [2008/06/21(土) 20:47:38 ] 誰だお前
703 名前:デフォルトの名無しさん mailto:sage [2008/06/21(土) 22:33:55 ] もう誰が誰だかわやくちゃなんだけど、休日にわざわざこんなスレにまできて... なんかかわいそうだな。
704 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 20:35:43 ] Re:> お前はなにを言っているのか
705 名前:デフォルトの名無しさん mailto:sage [2008/06/24(火) 00:44:09 ] king、コテ付け忘れてるぞ
706 名前:1stVirtue mailto:sage [2008/06/24(火) 21:10:58 ] Reply:>>705 お前に何がわかるというのか。
707 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 01:47:33 ] キングさんって、スクリプトですか。??
708 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 10:58:32 ] ん 数学板のking?
709 名前:デフォルトの名無しさん mailto:sage [2008/06/26(木) 21:27:12 ] いきなりkingネタかよ 数学板以外にもたまーに顔出してるよ、奴は
710 名前:デフォルトの名無しさん [2008/06/30(月) 16:29:09 ] MASM MSからダウンロードしたけど、VC++ Express 2005が必要だと・・・ VC++ Express 2008じゃだめ?なの?
711 名前:デフォルトの名無しさん mailto:sage [2008/06/30(月) 16:53:44 ] >>710 強制解凍してけば長いファイル名のが出てくるからそれを拡張子exeにリネーム
712 名前:ヽ・´∀`・,,)っ━━━━━━┓ mailto:sage [2008/06/30(月) 17:07:48 ] もうNASMでえーやん
713 名前:デフォルトの名無しさん [2008/06/30(月) 17:32:54 ] >>711 thnx・・・thnx...... 冷静に考えて そうだ、ここは俊足なレスポンスを期待しちゃいけない、 と思い、 無い頭で考えて、 オーソドックスにプロンプトの指示に従い、 アンインストールをしたところで、 >>711 発見 orz あうぅぅぅ
714 名前:デフォルトの名無しさん mailto:sage [2008/06/30(月) 17:35:23 ] JWasmってどうなんだろ?
715 名前:デフォルトの名無しさん mailto:sage [2008/06/30(月) 17:41:44 ] >>712 YASMどうよ?
716 名前:デフォルトの名無しさん mailto:sage [2008/06/30(月) 19:20:57 ] Yasm www.tortall.net/projects/yasm/ NASM/GAS互換 64bit対応 修正BSDライセンス JWasm www.japheth.de/JWasm.html MASM v6/WASM互換 Open Watcomライセンス
717 名前:デフォルトの名無しさん mailto:sage [2008/07/01(火) 08:54:17 ] ちょっと使ってみた個人的な感想など: Jwasm: コマンドラインの引数など使い勝手がいいとは言い難い。 特にリンカは最悪で、設定ファイルが必要だとか訳が判らん。 結局、リンカだけ alink alink.sf.net/download.html と そこにある win32.lib を使うことでバイナリ作成した。 その後に使った fasm flatassembler.net/ なら、 単体で実行バイナリまで生成することが判った。 記法も独特ではあるけども、ヘルパのインクルードが充実していて あるAPIの挙動を確かめるようなテスト・ルーチンなんかをスクラッチするには いい感じだと思った。
718 名前:デフォルトの名無しさん mailto:sage [2008/07/01(火) 17:48:04 ] いや、互換物はオリジナルと比較しないと意味ないでしょ。 あと、wlinkはなんでもできる強力なリンカだよ。libだけ用意すれば(.aでも.libでも食べてくれる) jwasm .\samples\windows1 wlink FORM Windows NT runtime CON F windows1 L kernel32.lib みたいな感じでいける筈。 たしかwatcom本体の方にMSのlink互換の奴(ラッパー?)が入ってる筈だから それの差し替え用なのかもね?
719 名前:デフォルトの名無しさん mailto:sage [2008/07/01(火) 19:23:34 ] masm32のinc参照してるやつも導入pathを調整すれば同様に jwasm .\samples\windows3 wlink FORM Windows NT F windows3 L kernel32.lib,user32.lib でバイナリは出来るんだけと、これって豆腐窓が出れば成功なのかな? 窓プログラムはソース見てもいまいちわからないorz
720 名前:デフォルトの名無しさん mailto:sage [2008/07/02(水) 19:58:28 ] lzasmってTASMのideal文法サポートだけで、MASM互換部分はごっそり抜けてるのかな? それとも元々こんなもんなの? 共通ソースってどうやったら書けるんだろうこれ?
721 名前:デフォルトの名無しさん mailto:sage [2008/07/02(水) 21:02:44 ] masm support なんて書いてないけど
722 名前:デフォルトの名無しさん mailto:sage [2008/07/02(水) 21:30:44 ] っていうかTASMとMASMの共通ソースってことね。 ローカルラベルとか使わなきゃ出来るんだと思ってた。
723 名前:デフォルトの名無しさん mailto:sage [2008/07/02(水) 22:30:47 ] TASM,MASM両用にしたい場合 TASMのMASM5.1互換モードだかなんだかを使っていた記憶がある
724 名前:デフォルトの名無しさん [2008/07/05(土) 04:50:49 ] ゲームの解析をしているのですが MOV EDX,exe.00666666 00666666 は XOR AL,31 となっています 近くに1〜31範囲外の定数ビットシフトというコメントが多く使われているのですが どのような処理をしているのかわかりますでしょうか?
725 名前:デフォルトの名無しさん mailto:sage [2008/07/05(土) 05:19:48 ] 単なるデータじゃないってなんでわかったの?
726 名前:ヽ・´∀`・,,)っ━━━━━━┓ mailto:sage [2008/07/05(土) 15:53:04 ] つかDSに命令書くとDEPに殺されるだろJK萌え〜 その命令らしきものの後にretなりjmpがある?
727 名前:724 [2008/07/06(日) 02:01:18 ] >>725 00666666 はrdataセクションでしたorz MOV EDX,exe.00666666のASCII"41C6tvejeNiWj・・・・"の中身が格納されてるだけでした >>726 MOV EDX,exe.00666666 SUB EDX,EAX CMP EDX,ESI JNB SHORT exe.0050175C 0050175C TEST EDI,EDI 0050175E JNZ SHORT exe.00501764 00501769 MOV EAX,66666667 0050176E IMUL EDX この↓にもジャンプ命令がたくさんあります。リターンはずっと後にでてきます。
728 名前:デフォルトの名無しさん mailto:sage [2008/07/10(木) 07:03:07 ] うんこい質問で申し訳ないですが、 00401239 |. B9 64000000 MOV ECX,64 0040123E |. F7E1 MUL ECX 00401240 |. 83F8 00 CMP EAX,0 00401243 |. 75 06 JNZ SHORT xxx.0040124B 00401245 |. B8 01000000 MOV EAX,1 0040124A |. C3 RETN 0040124B |> 33C0 XOR EAX,EAX 0040124D \. C3 RETN 関数の末尾のコピペなんですが、 アドレス0x00401239時点でのEAXが0以外で、この関数が1を返す事はあり得ますか? ECX(=0x64)を掛けている理由がよく分からないので、そういう可能性があるのかと思いまして。
729 名前:デフォルトの名無しさん mailto:sage [2008/07/10(木) 10:26:35 ] eaxの値が0x04000000〜0xf4000000の範囲なら1
730 名前:デフォルトの名無しさん mailto:sage [2008/07/10(木) 16:44:24 ] >>724 単なる難読化だろw
731 名前:デフォルトの名無しさん mailto:sage [2008/07/11(金) 04:23:03 ] 初歩的な質問ですが教えてください MOV DWORD PTR DS:[ESI],00400000 例えば、00400000にはアドレスが入っています。この場合、00400000を移動するのか 格納されているアドレスを移動するのか、どちらでしょうか?
732 名前:デフォルトの名無しさん mailto:sage [2008/07/11(金) 19:34:23 ] // ESIはポインタ *ESI = 400000;
733 名前:デフォルトの名無しさん mailto:sage [2008/07/11(金) 23:41:52 ] それだと誤解を招きそうなので // ESIはポインタ TYPE_T *ESI; ESI = 0x400000; って書いた方が
734 名前:デフォルトの名無しさん mailto:sage [2008/07/11(金) 23:48:37 ] ポインタじゃなくて、ただのレジスタとメモリ領域。 ポインタって言ってると、わかり辛い。
735 名前:デフォルトの名無しさん mailto:sage [2008/07/12(土) 00:19:54 ] >>731 セグメントアドレスがDSの値でオフセットアドレスがESIの値なメモリ領域に十進数の400000を入れているように見える
736 名前:デフォルトの名無しさん mailto:sage [2008/07/12(土) 10:02:54 ] // DSの説明ははしょるけど DWORD PTRなんだから DWORD* ESI; *ESI = 0x400000; // でええんでないか?
737 名前:デフォルトの名無しさん mailto:sage [2008/07/12(土) 10:42:06 ] 皆さんありがとうです ESIにデータセグメントのアドレス00400000を示しているということですね ではそのままなら[ESI+8]は00400008でよいのですか?
738 名前:デフォルトの名無しさん mailto:sage [2008/07/12(土) 11:28:25 ] >>737 だめ
739 名前:デフォルトの名無しさん mailto:sage [2008/07/12(土) 11:47:50 ] ddebでも落として飽きるまで実験しろ
740 名前:デフォルトの名無しさん [2008/07/13(日) 07:45:00 ] だめだこりゃ
741 名前:デフォルトの名無しさん mailto:sage [2008/07/14(月) 18:39:18 ] キャリーフラグの反転ができる CPU では、 コイツも使ってやってね(Z80 表記)。 CP 0AH CCF ADC 30H DAA
742 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 13:12:01 ] www.computerworld.jp/topics/vs/115629.html
743 名前:デフォルトの名無しさん [2008/07/18(金) 00:00:59 ] 質問:アセンブラの除算 質問です。アセンブラの除算は、具体的に どのような処理をしているのでしょうか。 「ビット レベルの計算」のイメージができません。 また、除算は ほかの計算と比較して、クロック数を消費するとインターネットに書いてありました。 それが なぜなのか、理解できていません。 おそらく、どのような計算をしているかを把握できれば、理解できるとおもうのですが。 インターネットで「除算 アセンブラ div 」などで検索しましたが、求めている情報が入手できませんでした。 そのため、質問させていただきます。 また、読むべきサイト、書籍などがあれば、教えていただければ幸いです。 よろしく お願い致します。
744 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 00:06:58 ] 除算器で検索
745 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 00:10:28 ] >>743 つ journal.mycom.co.jp/column/architecture/ ここを読んでまるっきり理解できなきゃ筋がないと見なす。
746 名前:デフォルトの名無しさん [2008/07/18(金) 00:40:01 ] ありがとうございます。よんで勉強します。 論理回路の基礎は知っているので、何とか理解できそうです。
747 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 05:25:03 ] ビットレベルの計算って、要するに2進数で筆算してるだけの話じゃないか?
748 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 07:05:38 ] それ前にアセンブラの除算もCの除算もみな一緒だと思うが
749 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 09:00:46 ] >>747 筆算ってこたーない。。
750 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 09:51:37 ] >>749 マジなんか面白く上げ足とっただけか知らんが、イメージは筆算だ。 掛け算も同じ。
751 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 09:56:38 ] その人がどういうモデルで筆算というものを把握してるかに依るだろJK
752 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 10:30:08 ] >>745 の84回で、モロに筆算の図が載っているわけだが
753 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 11:23:14 ] >>751 筆算にモデルもクソもあるか JC
754 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 11:40:04 ] 夕食ってどうやって作るんですか->一例を回答->それは調理だな
755 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 16:51:24 ] CASLの問題のこと聞いてもおk?
756 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 18:43:28 ] レスがどんなアセンブラでも構わないならいいんじゃね? っていうか専門スレないの?
757 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 18:51:47 ] 情報処理試験のあれか、1バイトが16ビットだっけか。
758 名前:デフォルトの名無しさん [2008/07/18(金) 19:26:11 ] おいおい 1バイトは8ビットだろ・・・。
759 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 19:32:52 ] 情報処理技術者試験出題範囲を見る限りでは、1語16ビットとは書いてあるが「バイト」という単語は出てこないっぽい。
760 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 19:38:38 ] >>758 決まってるわけじゃないよ。多いだけ。
761 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 22:23:51 ] >>760 このスレの住人ならそんなこと百も承知だろう
762 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 22:36:07 ] ワードアドレッシングマシンなんだよな確か
763 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 22:54:27 ] CASL でシフトによる割り算がまったく思いつきません。どなたかお手本をみせていただけませんか?
764 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 23:21:16 ] >>763 とりあえず1ビット右シフトを考えてみて。
765 名前:デフォルトの名無しさん mailto:sage [2008/07/19(土) 02:29:36 ] 昔々あるところに、1byteが6bitや9bitのコンピュータがあってだな…
766 名前:デフォルトの名無しさん mailto:sage [2008/07/19(土) 04:10:28 ] >>765 自作?
767 名前:デフォルトの名無しさん mailto:sage [2008/07/19(土) 06:11:10 ] 基本的に1byteは8bitだけど8bitじゃない場合もあるんだっけ? マスタリングTCP/IPでは明確にするためにoctetを使う、みたいなのが書いてあった ちなみに1hydeは156cmで固定 学生の知識だから合ってるか分かんないけど
768 名前:デフォルトの名無しさん mailto:sage [2008/07/19(土) 09:59:51 ] PDP-10とかだな
769 名前:デフォルトの名無しさん mailto:sage [2008/07/19(土) 12:53:32 ] > 学生の知識だから合ってるか分かんないけど 156cmをどこで習うんだよ!
770 名前:デフォルトの名無しさん mailto:sage [2008/07/19(土) 13:36:10 ] >>763 34÷10 =0x22/0x0a =100010b/1010b 011 ──── 1010)100010 1010 ─── 01110 1010 ── 0100 =11bあまり100b =3あまり4
771 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 10:47:02 ] 以下はメモリ上に格納された数値の合計を計算して持ち帰るサブルーチンSUMである。 www.dotup.org/uploda/www.dotup.org2018.txt これを元にメモリ上に格納された数値の最大値を見つけるサブルーチンMAXを作れ。見つけた最大値はメモリ上のANSの番地へ格納すること。 どなたかボスケテ
772 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 10:55:43 ] ここは宿題スレじゃありません。
773 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 10:58:50 ] ww
774 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 11:06:58 ] CASLはほとんど忘れてるよ。 算術系の命令がなくてアドレスの計算命令で代用するのが ポイントだったのがよみがえった。
775 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 12:53:42 ] なんすかその8086のLEAみたいな小技は
776 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 13:29:09 ] 内部レジスタをけちってるんですよ。たしかCOMETを後付けで内部解説する教科書があったような気が。
777 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 13:53:14 ] >>774 即値の加減算命令がないからLEAでなんとかすれ。 という話ですか。 つうか即値扱えるのってLEAだけしかないんだっけ? >>776 内部レジスタつうか命令デコーダがものすげーシンプルになる命令セット。 だった気がする。 その割にGRが5個とか半端なのがよくわからん。
778 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 15:36:31 ] CASL命令の基本がレジスタとメモリ間の演算で、加算減算もレジスタとメモリ。 そなものでレジスタ間の演算がわりとめんどい。 LAD GR1,0,GR0 // MOV R1, R0 LAD GR0,1,GR0 // ADD R0, 1 LD GR1,0,GR0 // MOV R1, [R0] 比較演算は代替手段がないので片方を必ずメモリに落とす必要がある。
779 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 16:04:32 ] 6809を考えれば‥‥。
780 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 16:36:25 ] 09は掛け算が意外にもレジスタ間なんだよな。
781 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 20:25:29 ] どこが意外なんだか。
782 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 20:35:59 ] あのニーモックの中では特異に思えたんだけど、他のCPUじゃ当たり前かな?
783 名前:デフォルトの名無しさん mailto:sage [2008/07/21(月) 00:20:30 ] Addressを取れるOP codeが余ってなかったから必然 しかし遡るなら6809なんて中途半端なんじゃなくて PDP-8とかHITAC-10とかもっと昔の制御用コンピュータだろ
784 名前:デフォルトの名無しさん mailto:sage [2008/07/21(月) 01:00:46 ] 63C09は・・・忘れた(w
785 名前:デフォルトの名無しさん [2008/07/22(火) 01:06:43 ] ジャンプ命令について質問です。 いま、以下のような命令があるとします。 BRA _main この命令ではmainの前に_(アンダーバー)が付いています。 この命令と、次の命令 BRA main では、どのような違いがあるのでしょうか?
786 名前:デフォルトの名無しさん mailto:sage [2008/07/22(火) 01:13:10 ] ラベルが違う。
787 名前:デフォルトの名無しさん mailto:sage [2008/07/22(火) 02:26:35 ] もしC言語のソースをコンパイルした結果を見ての質問ならこう。 「キミの使っているCコンパイラが扱うオブジェクトフォーマットの仕様は 関数名の前にアンダースコア(_)を付ける仕様だった。」 C言語なら必ず付くわけでもなく、アセンブリ言語だから必ず_から始まらなければ ならないわけでもなく、何か特殊な効果を狙って_を付けた表記にしているわけでも ない。
788 名前:デフォルトの名無しさん mailto:sage [2008/07/22(火) 12:59:27 ] ついでに言うと、C言語のソースで A という名前の関数を作ったとして BRA A ってコードを吐くと、BRA命令のオペランドにAレジスタは指定出来ないとか、ラベルAは不正な名前、とかのエラーになるかもしれん。 なので、なにかしら法則を決めてアセンブラの予約語とぶつからないようにしてあげる必要が有る。 ということで _ をつける規則を採用したコンパイラがそこにある、ってわけだ。
789 名前:デフォルトの名無しさん mailto:sage [2008/07/23(水) 01:31:36 ] ホスト(z/OS)下でアセンブラを触ることになりました。 が、ソースを見てもさっぱりです。 命令とかを解説しているサイトや参考書ってありません?
790 名前:デフォルトの名無しさん mailto:sage [2008/07/23(水) 08:46:31 ] >>789 z/OSだったらIBMに聞けよ :-)
791 名前:デフォルトの名無しさん mailto:sage [2008/07/25(金) 12:18:08 ] いったいどこをいじるんだろう・・・
792 名前:デフォルトの名無しさん mailto:sage [2008/07/25(金) 21:14:48 ] JWasm、バージョン上がってたんで何か少し本格的なものをアセンブルしたくなって CDSD-STDで試してみたんだけど、妙なところでエラーが出た。 これなんでだか誰かわかります? 他にMWSAでも試そうかと思ったけど、あれコマンドラインじゃシンボル使えなかったんだな。
793 名前:デフォルトの名無しさん mailto:sage [2008/07/27(日) 17:39:27 ] BYTE PTR DS:[EAX+8]の意味を教えていただけませんでしょうか? BYTE PTR [EAX+8]なら分かるのですが。 何故セグメントレジスタが出てくるのか分かりません。 また、MASMの良書も教えていただければ幸いです。 よろしくお願いいたします。
794 名前:デフォルトの名無しさん mailto:sage [2008/07/27(日) 17:42:02 ] 結果を比較してみればいいのに
795 名前:デフォルトの名無しさん mailto:sage [2008/07/27(日) 18:15:30 ] >BYTE PTR [EAX+8] これを本当に理解していれば、DS:も理解出来るはず。
796 名前:デフォルトの名無しさん mailto:sage [2008/07/27(日) 18:47:30 ] >>793 リニアアドレスを算出するには セグメント + オフセット だけど、どの『セグメント』を使うのかはCPUが暗黙の内に決めてる。 例えば、マシン語命令はCSで示すセグメントからフェッチしてくる・・とか。 でも>>793 の上の命令のように、『セグメント:オフセット』と明示的に セグメントを指定すると、暗黙のセグメント指定をそのセグメントで『上書き』出来る。 「セグメント オーバライド」辺りでググれ。
797 名前:デフォルトの名無しさん mailto:sage [2008/07/27(日) 19:03:29 ] まずCPUの名前を書かなきゃわからんだろう。 86とレジスタ名前が似ているだけかもしれんぞ。
798 名前:デフォルトの名無しさん mailto:sage [2008/07/27(日) 20:38:45 ] 個人的には動作モードのほうが気になる
799 名前:デフォルトの名無しさん mailto:sage [2008/07/27(日) 21:17:23 ] ありがとうございました。 なんとなく分かった気がします。 根本的なことが分かっていない気がするのではじめからきちんと勉強したいのですが なにか良いサイト、書籍などありませんでしょうか?
800 名前:デフォルトの名無しさん mailto:sage [2008/07/27(日) 21:45:55 ] >>799 Intel限定で良いなら「はじめて読む486」はどうよ?
801 名前:デフォルトの名無しさん mailto:sage [2008/07/27(日) 21:47:48 ] >>800 いや、これはプロテクトモード入門でしょうね。リアルモードでの経験+Cの経験があればOKですが。
802 名前:デフォルトの名無しさん mailto:sage [2008/07/27(日) 22:07:58 ] >>800 図解コンピュータシリーズの「図解 32ビットマイクロコンピュータ80386の使い方」とかも良いね。
803 名前:デフォルトの名無しさん mailto:sage [2008/07/28(月) 05:47:39 ] 教えられた書籍を買ってみます。 皆さんどうもありがとうございました。
804 名前:デフォルトの名無しさん mailto:sage [2008/07/28(月) 13:47:50 ] 便乗質問ですがx86_64用で上記みたいな感じの書籍はありますか? 最悪英語でもいいです。
805 名前:デフォルトの名無しさん mailto:sage [2008/07/28(月) 14:26:59 ] インテルが公開してる技術資料はどう? www.intel.co.jp/jp/download/index.htm
806 名前:デフォルトの名無しさん mailto:sage [2008/07/28(月) 16:11:58 ] 86系だったら特権モードのことをがっちりやりたいか、 ユーザーモードだけでいいかでアプローチは変わってくる。 ユーザーモードだけなら、cl /FA でコンパイルして、 そのソースを読んだり変更してアセンブルするといいかも。 生っぽい機械語がいいならリアルモードがわかりやすいが今更DOSもないよな。
807 名前:デフォルトの名無しさん mailto:sage [2008/07/29(火) 20:48:31 ] アセンブリの学習をしたいと考えていますが、以下の条件でお勧めの アセンブラ(GAS/NASM/MASMなど)をご教授いただければ幸いです。 ・開発も実行もx86環境。 ・WindowsとLinux環境、両方を利用しており、WindowsにはCygwinが導入されている。 ・出来るだけ両方の環境で学習したく、特定環境に依存するアセンブラ本体・文法は避けたい。 早い話、「これから始めれば無難」というものをお願いします。 ちなみに、手元にはMASMベースで解説してある以下の書籍があります。 『高級言語プログラマのためのアセンブラ入門 林晴比古著 ソフトバンククリエイティブ刊』
808 名前:デフォルトの名無しさん mailto:sage [2008/07/29(火) 21:14:26 ] そういえばJWasmにlinux向けのサンプルが増えてたけど、 MASM互換のアセンブラで一体なにするつもりなんだろう?
809 名前:デフォルトの名無しさん mailto:sage [2008/07/29(火) 21:39:33 ] >>807 アセンブラってのはどうせバイナリと紙一重なんだから あまり特定の処理系に依存してどうこう、というのは少ない。 (まぁ技巧的なマクロはそれなりに違うけどね) むしろ、Linux ならシステムコールとか、gccの関数インタフェースとか そこらへんがわかる資料をネットで見つけることが大事じゃないかと思う。 Cygwinでいい本は知らない。 GAS は gcc に -S オプションを付けて出力させたものが参考になる。 NASM は付属のドキュメントを読んで参考にできるのなら使える。
810 名前:デフォルトの名無しさん mailto:sage [2008/07/29(火) 22:15:45 ] 細かい記法がわからない時は、逆汗使ってみた事があったな。
811 名前:デフォルトの名無しさん mailto:sage [2008/07/29(火) 22:28:17 ] www.ibm.com/developerworks/jp/linux/library/l-gas-nasm.html このあたりの比較を見ていたら、オペランドの書き方などアセンブラ依存の文法がありそうだったので、 どれから覚えた方がいいかな、という意図の質問でした。 >>809 さんのレスを見ると、Cなどの他の上級言語の一部にアセンブリを使い 特定OS上で動作するアプリケーション開発レベルの話だと思いましたが、 IPL開発などのレベルではあまり関係ないような気もしました。 >>807 にてWindowsやLinuxと書いたのは、あくまでも開発環境としてのOSということで 理解頂ければ幸いです。分かりづらい質問を失礼しました。 「GAS、NASM、MASM、入門者に勧めるとしたらどれ?」ということでひとつ・・・
812 名前:デフォルトの名無しさん mailto:sage [2008/07/29(火) 22:33:35 ] Windowsメインならmasmかnasm、Linux or GCCメインならgas。 別にどっちでもいいが、たまにコンパイラの出力読むときによく使うコンパイラが吐くアセンブリソース読めたほうがいい程度の話で。
813 名前:デフォルトの名無しさん mailto:sage [2008/07/29(火) 22:35:36 ] >>812 なるほど、専らgcc環境なのでgasを使ってみようと思います。 的確なご指摘、ありがとうございました。
814 名前:デフォルトの名無しさん mailto:sage [2008/07/29(火) 22:43:45 ] そういえばYASMってgasの代替にはなるの? それとも只似た記法が使えるだけ?
815 名前:デフォルトの名無しさん mailto:sage [2008/07/29(火) 22:59:42 ] nasmと比べた事はあるんだけと、org周りのよくわからない挙動がなんかすっきりしてたのは覚えてるんだよな。
816 名前:デフォルトの名無しさん mailto:sage [2008/07/31(木) 19:45:12 ] masmとnasmってどう違うのですか?
817 名前:デフォルトの名無しさん mailto:sage [2008/07/31(木) 19:49:47 ] 見た目からして違うんじゃないか?
818 名前:デフォルトの名無しさん mailto:sage [2008/08/02(土) 00:15:08 ] あっそ
819 名前:デフォルトの名無しさん mailto:sage [2008/08/02(土) 00:42:19 ] さすがにmasm/nasm共通ソースなんてのは観たことないぞ。 プリプロセッサ駆使すれば出来るんだろうか?
820 名前:デフォルトの名無しさん mailto:sage [2008/08/02(土) 04:34:23 ] そんなんマクロ定義でどうにでもなるべ。 実際にやろうとは思わんが。
821 名前:デフォルトの名無しさん mailto:sage [2008/08/02(土) 08:47:29 ] 逆汗の作成に挑戦してるんだけど、 jmp命令とか出てきたらその都度、jmp先アドレスに飛びながらバイナリ読んでいかなきゃだめ? 試しに某exeを頭から順番に読み込んでみたら、jmp先アドレスが命令の先頭じゃなくて途中をさしちゃってるんだけども・・ 別の逆汗でも同じ結果になるんだけど、難読化かなにか?
822 名前:デフォルトの名無しさん mailto:sage [2008/08/02(土) 09:31:32 ] >>821 命令の途中にデータ埋め込んでるだけだろ。 jmp main msg db 'hello world', 0dh, 0ah, '$' main: mov dx, offset msg
823 名前:デフォルトの名無しさん mailto:sage [2008/08/02(土) 09:52:43 ] >>821 やってみておかしかったら、JMP 先の整合を付けてみる、でよい。たいていは
824 名前:デフォルトの名無しさん mailto:sage [2008/08/02(土) 10:59:49 ] その方向でとりあえずやってみる。ありがとう
825 名前:デフォルトの名無しさん mailto:sage [2008/08/02(土) 20:15:55 ] NASMの構造体がうまく使えません、教えてください! WIN32N.INCを使ってAPIの時間を取得しようとして section .text global start start: move eax,my_time push eax call GetLocalTimeA section .data my_time: ISTRUC SYSTEMTIME at SYSTEMTIME.wYear,dw 0 at SYSTEMTIME.wMonth,dw 0 at SYSTEMTIME.wDayOfWeek,dw 0 at SYSTEMTIME.wDay,dw 0 at SYSTEMTIME.wHour,dw 0 at SYSTEMTIME.wMinute,dw 0 at SYSTEMTIME.wSecond,dw 0 at SYSTEMTIME.wMilliseconds,dw 0 IEND みたいな感じで書いたのですが、 mov eax,my_time のところが error: parser: instruction expected となってしまいました。 何が問題で、どうすれば解決できるのでしょうか?
826 名前:デフォルトの名無しさん mailto:sage [2008/08/02(土) 20:23:23 ] moveってなってない?
827 名前:デフォルトの名無しさん mailto:sage [2008/08/02(土) 23:10:10 ] >>826 ありがとうございます 私って馬鹿ですね
828 名前:デフォルトの名無しさん mailto:sage [2008/08/02(土) 23:47:58 ] >>821 命令の途中? 俺はIDAでしてる
829 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 12:04:28 ] アセンブラの勉強するのならやはり、はじめて読む8086を買って勉強するのがベストなんでしょうか? それとも、独習アセンブラや>>68 の本のほうが良いのでしょうか?
830 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 12:20:56 ] 8086の勉強をするなら、俺ならはじめて読む8086を勧めるけど。
831 名前:829 mailto:sage [2008/09/09(火) 12:33:16 ] 8086にも興味はありますが、アセンブラの文法について学びたいと思ってます。
832 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 13:05:58 ] マクロとか型とかはアセンブラ毎に違うので、一般的に学ぶ方法はない。 いい教科書も無いと思う。
833 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 13:07:07 ] 文法はアセンブラによって異なる C言語のような決まりがあるわけではない MASM/NASM/TASM/GASなど色々あるからそれに合う本を探せ
834 名前:829 mailto:sage [2008/09/09(火) 13:19:39 ] >>832-833 有難うございます。実際に見て理解しやすそうな本を購入することにします。
835 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 13:42:15 ] アセンブラで実際組むわけじゃなくどんな動作してるのか 見たいって程度ならCASLで十分じゃないか? 資料も豊富だし
836 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 14:20:41 ] いまどきワードアドレッシングなアーキテクチャはおすすめしがたい
837 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 14:29:48 ] なんで?
838 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 23:45:31 ] >>831 文法って、 > 命令 レジスタ,メモリ; ぐらいじゃない? 命令のこと?
839 名前:デフォルトの名無しさん mailto:sage [2008/09/10(水) 02:09:47 ] >>838 正直セグメント絡みの方言が色々あってわけわからなくね?
840 名前:デフォルトの名無しさん mailto:sage [2008/09/10(水) 08:18:25 ] 疑似命令のバリエーションとか、 即値やレジスタ名の記法とか、 いろいろ違うけど? ソースとデスティネーションの順序が違うというのもあるか。
841 名前:デフォルトの名無しさん mailto:sage [2008/09/10(水) 08:44:36 ] キャッシュとか絡んでくると・・・
842 名前:デフォルトの名無しさん mailto:sage [2008/09/10(水) 09:03:59 ] アキュムレータ丸出し、暗黙のレジスタ参照、直交性の無いアドレッシングですね、wkrms
843 名前:デフォルトの名無しさん mailto:sage [2008/09/10(水) 16:31:58 ] >>839 全然
844 名前:デフォルトの名無しさん mailto:sage [2008/09/10(水) 17:03:23 ] >>843 一体いくつのアセンブラ使えるのさ?
845 名前:デフォルトの名無しさん mailto:sage [2008/09/11(木) 05:55:11 ] >>839 セグメントなんてもう10年近く意識したことないが。 もうDOSの.EXEなんて作れねえな。 >>840 違うCPUだと思えば別に問題ない。
846 名前:デフォルトの名無しさん mailto:sage [2008/09/11(木) 09:38:50 ] ASSUMEの具体的な効果とかもう覚えてない
847 名前:デフォルトの名無しさん mailto:sage [2008/09/11(木) 13:44:13 ] USINGは覚えてる?
848 名前:デフォルトの名無しさん [2008/09/17(水) 02:06:26 ] バイトでアセンブラやるんだけど アセンブラて何
849 名前:デフォルトの名無しさん mailto:sage [2008/09/17(水) 05:09:10 ] 馬鹿たれ、たとえバイトでもそんな質問がでてくるようなレベルの人間雇ったりしねえよ。
850 名前:デフォルトの名無しさん mailto:sage [2008/09/17(水) 07:44:45 ] 工場のラインに並んで部品を組み立てる仕事じゃない?
851 名前:デフォルトの名無しさん mailto:sage [2008/09/17(水) 10:49:10 ] なるほど確かにアセンブルする人だな。
852 名前:デフォルトの名無しさん mailto:sage [2008/09/17(水) 13:30:16 ] そっちの分野ではアッセンブルって言うけど、ここは黙っておこう。
853 名前:デフォルトの名無しさん mailto:sage [2008/09/17(水) 14:03:39 ] 斡旋ぶるぶる?
854 名前:デフォルトの名無しさん mailto:sage [2008/09/17(水) 21:58:55 ] 汗バイブ
855 名前:デフォルトの名無しさん mailto:sage [2008/09/17(水) 22:45:17 ] 未経験者でも大丈夫! やる気だけでOK! 仕事内容: アセンブラ プログラミング ※コンピュータの命令を並べていくだけの単純なお仕事です。 応募資格: ・経験不問 ・学歴不問 ・未経験者歓迎 ・髪型自由 ・フリーター歓迎 みたいな? でもこれだけ見ると単純にネタ扱いできない現実味がw
856 名前:デフォルトの名無しさん mailto:sage [2008/09/17(水) 23:17:06 ] >>855 海外アウトソーシングとか実はそんなもんだったりしないよね?
857 名前:デフォルトの名無しさん mailto:sage [2008/09/18(木) 01:04:33 ] アセンブラの仕事をバイトでできるなんてすごいよね。 C言語とかをさらに訳の分からん言葉に翻訳する仕事なんでしょ?
858 名前:デフォルトの名無しさん mailto:sage [2008/09/18(木) 01:48:15 ] ある意味Cよりシンプルともいえる
859 名前:デフォルトの名無しさん mailto:sage [2008/09/18(木) 02:20:33 ] フラグを覚えりゃ後はバッチファイルレベルだしな。
860 名前:デフォルトの名無しさん mailto:sage [2008/09/18(木) 07:15:13 ] アセンブラって最適化できるのかな?
861 名前:デフォルトの名無しさん mailto:sage [2008/09/18(木) 07:44:25 ] >>860 Cコンパイラのようにはアセンブラが最適化することは通常無い。 但し、実際には使えないインストラクションを他のインストラクションに置き換えたり 相当するより速いインストラクションに置き換えたりするケースはある。 勿論、プログラマが自身で最適化する余地はいくらでもある。
862 名前:デフォルトの名無しさん mailto:sage [2008/09/18(木) 13:28:40 ] ブランチ命令のオフセットは最適化されるな。
863 名前:,,・´∀`・,,)っ-○●◎ mailto:sage [2008/09/20(土) 02:50:26 ] おれ団子だけどRIP相対アドレッシングのうまい使い道教えれ
864 名前:デフォルトの名無しさん mailto:sage [2008/09/20(土) 13:55:31 ] 今まで通り使えばいいのでは。 命令の近くにデータを置くとか switchので等間隔に処理を並べて分岐とか今までのCPUだって出来るわけで ただの命令長削減以外の何物でもないと思う。
865 名前:デフォルトの名無しさん mailto:sage [2008/09/22(月) 19:01:04 ] アブラカタブラアセンブラ
866 名前:デフォルトの名無しさん mailto:sage [2008/09/22(月) 19:01:35 ] やった j規制かいじょされてるよー
867 名前:デフォルトの名無しさん mailto:sage [2008/09/23(火) 12:08:55 ] >>863 DLL再配置の手間が省けるってことはないの?
868 名前:,,・´∀`・,,)っ-○◎● mailto:sage [2008/09/23(火) 12:42:52 ] いやさ、Xbyakに追加してやったんはいいんだけど あれってもともと動的生成じゃん
869 名前:デフォルトの名無しさん mailto:sage [2008/09/26(金) 22:20:16 ] なんか該当するスレが見つからないのでここで質問させていただきます 単純に与えられた回数分インクリメントして総和を求めるプログラムで時間をみつもろうとしました カウンタのインクリメント分と結果となる値のインクリメント分でADDが2回、ジャンプが1回 どれも最小の1クロックで処理できるとすると1ループで4クロック でこれをathlon64 3000+(2G)のCPUで10^9回まわすとすると 4*10^9 / 2.0*1024^3 = 1.862645149230957と概算を行いました しかし実際にtimeを使って10^9, 10*10^9の場合を計った結果は1.00と1.42 そこから求めるとかかった時間は0.42/9=0.046.. ディスアセンブルしてもADD*2,CMP,JNEの繰り返しになってました どう考えても1クロックの間に1以上の命令が実行されてるわけなんですが こういう動作が前提だとするとどうやって実行時間を見積もればいいんでしょうか?
870 名前:デフォルトの名無しさん mailto:sage [2008/09/26(金) 22:24:33 ] IPCも知らんのか
871 名前:デフォルトの名無しさん mailto:sage [2008/09/26(金) 22:52:15 ] Intelの資料によれば(AMDじゃなくてすまそ)、 ADD命令は0.5クロックで、ALUは2器載ってるらしいから、 1クロックでADDを4つ実行できることになるな
872 名前:,,・´∀`・,,)っ-○◎● mailto:sage [2008/09/26(金) 22:53:59 ] >>871 ニヤニヤ
873 名前:デフォルトの名無しさん mailto:sage [2008/09/26(金) 23:00:06 ] 後は任せた
874 名前:デフォルトの名無しさん mailto:sage [2008/09/26(金) 23:07:29 ] まあ、そもそも命令数とクロックから実行時間を見積もろうとするが大馬鹿なんだが。
875 名前:,,・´∀`・,,)っ-○◎● mailto:sage [2008/09/27(土) 02:01:31 ] っていうかさ、Pentium 4はパイプラインが3 issueなのに、4つ実行なんてどうやるんだよ。 日本語資料じたいが相当旧いし
876 名前:デフォルトの名無しさん mailto:sage [2008/09/27(土) 03:03:13 ] 確かに日本語版のIA-32 インテル アーキテクチャ・ソフトウェア・デベロッパーズ・マニュアルの 本書の対象となるIA-32プロセッサの中にcore2duoとかの文字が無い。 やっぱ最新版は英語じゃないとだめなのか。
877 名前:デフォルトの名無しさん mailto:sage [2008/09/27(土) 07:33:50 ] >>874 いやあでも、こうやって一つ賢くなれるんだからいいんじゃねーの? それより見積もりも出来ないで、処理がハードウェアの能力と釣り合っているかを考えない方が大馬鹿者。 現代のCPUで処理に必要なクロック数を机上で計算するのが難しいとしても プロファイル取ってIPCを見たりはするし、それによって局所的にどの命令が ボトルネックかを考える事もある。 机上という静的な方から攻めるか、プロファイルという動的な方から攻めるかの違いで、たどり着くところは一緒。
878 名前:,,・´∀`・,,)っ-○◎● mailto:sage [2008/09/27(土) 08:43:46 ] Agner.orgを参考にしたらいいと思う
879 名前:デフォルトの名無しさん mailto:sage [2008/10/01(水) 16:50:24 ] VC++でint cx; と変数を宣言して、 インラインアセンブラでcmp eax,cx と書いてエラーになったから助かった。 imul ebx,cx はimul ebx,ecx にコンパイルされてエラーになっておらず、 危うくハマるところだった。
880 名前:,,・´∀`・,,)っ-○◎● mailto:sage [2008/10/02(木) 00:41:47 ] 「goto」というシンボルすら作らせないJavaは徹底してる。
881 名前:デフォルトの名無しさん [2008/10/22(水) 14:04:06 ] オペランドの前に=が付くとどういう意味があるんですか。 教えてください。
882 名前:デフォルトの名無しさん mailto:sage [2008/10/22(水) 14:42:54 ] どの石のなんてアセンブラかわからないと答えようがない
883 名前:デフォルトの名無しさん mailto:sage [2008/10/23(木) 01:42:12 ] gcc asm の制約のことだったりして。
884 名前:デフォルトの名無しさん mailto:sage [2008/10/23(木) 11:41:49 ] たぶん、リテラルのことでしょう。名無しの定数が作られる。昔のメインフレームのASMなんかで LD R0,=F'00F0' とか書くと、フルワードの 000000F0h という定数がどこかに作られて それをアクセスするアドレッシングが命令に組み込まれる。
885 名前:デフォルトの名無しさん mailto:sage [2008/10/24(金) 21:19:28 ] CPU:Intel 8085 (1) [80A1h] ← (B+C)*2-[80A0h]*3 オーバーフローは考慮不要 (2) [80B3h] [80B2h] ←[80B0h] +[80B1h] *2 和を16ビットで求める(分岐命令を使用してもよい) (3) A ← B ・C + H ・L (論理演算) これらを実行するプログラムを教えてください。 よろしくお願いします
886 名前:デフォルトの名無しさん mailto:sage [2008/10/24(金) 23:19:24 ] >>885 (3) 170o 241o 107o 174o 245o 260o
887 名前:デフォルトの名無しさん mailto:sage [2008/10/24(金) 23:29:15 ] >>885 (1) 041o 0a0h 80h 170o 201o 207o 226o 226o 226o 043o 167o
888 名前:デフォルトの名無しさん mailto:sage [2008/10/24(金) 23:35:13 ] >>885 (2) 052o 0b0h 80h 051o 042o 0b2h 80h
889 名前:デフォルトの名無しさん mailto:sage [2008/10/25(土) 00:28:09 ] >>886-888 ありがとうございます。 すごくありがたいのですが、私の知識不足のせいで思っていた結果ではありませんでした。 .8085 ASEG ORG 8000h LDA D1 LXI H,D2 のような形で、もう一度教えてもらえませんか? 頼ってばかりで申し訳ないのですが、よろしくお願いします
890 名前:デフォルトの名無しさん mailto:sage [2008/10/25(土) 01:29:31 ] なんという攻防戦
891 名前:デフォルトの名無しさん mailto:sage [2008/10/25(土) 04:55:46 ] >>889 ほれ。アセンブルリスト。エラーも取れてる CSEG ;(1) [80A1h] ← (B+C)*2-[80A0h]*3 オーバーフローは考慮不要 0000 78 MOV A,B 0001 81 ADD C ; (B+C) 0002 87 ADD A ; *2 0003 F5 PUSH PSW ; を退避 0004 21A080 LXI H,80A0h 0007 7E MOV A,M 0008 86 ADD M 0009 86 ADD M ; *3 000A 6F MOV L,A ; をLに 000B F1 POP PSW ; (B+C)*2を復元 000C 95 SUB L ; 引き算 000D 32A180 STA 80A1h ; 結果をストア
892 名前:デフォルトの名無しさん mailto:sage [2008/10/25(土) 04:57:03 ] ;(2) [80B3h] [80B2h] ←[80B0h] +[80B1h] *2 和を16ビットで求める(分岐命令を使用してもよい) 0010 3AB180 LDA 80B1h 0013 6F MOV L,A 0014 2600 MVI H,0 0016 29 DAD H ; [80B1h] *2 0017 11B080 LXI D,80B0h 001A 1A LDAX D 001B 4F MOV C,A 001C 0600 MVI B,0 ; [80B0h]の内容を16bitに 001E 09 DAD B ; HLに16bitで加算 001F 22B280 SHLD 80B2h ; 結果をストア
893 名前:デフォルトの名無しさん mailto:sage [2008/10/25(土) 04:58:52 ] ;(3) A ← B ・C + H ・L (論理演算) 0022 78 MOV A,B 0023 A1 ANA C 0024 5F MOV E,A ; B・Cを退避 0025 7C MOV A,H 0026 A5 ANA L ; H・L 0027 B3 ORA E ; H・L+B・C 0028 END 最後の行は ADD E かもしらん。論理演算とのことでORAにしといた。
894 名前:デフォルトの名無しさん mailto:sage [2008/10/25(土) 09:48:11 ] なんという親切回答
895 名前:デフォルトの名無しさん mailto:sage [2008/10/25(土) 15:56:43 ] ありがとうございます。 助かりました
896 名前:デフォルトの名無しさん mailto:sage [2008/10/26(日) 16:07:01 ] どういたしまして。実際には、(1)の問題も、8bit加算→9bit、8bit*3→10bitになるので、 (2)のようにHLに結果を保持する手法のほうが一般的です。 最終結果が8bitでいいなら、Lレジスタのほうだけを使えばいいので。
897 名前:デフォルトの名無しさん mailto:sage [2008/10/29(水) 03:16:05 ] >>885 KITの学生のお前にひとつ忠告しておくが、 過去ログくらい見ろwwwwwwwww 特に↓ >>137-167 今更忠告してももう遅いかもしれねぇけどな。レポートの提出は明日だっけ?笑
898 名前:デフォルトの名無しさん mailto:sage [2008/10/29(水) 03:40:04 ] うぁはは、丁度1年なのねw
899 名前:デフォルトの名無しさん mailto:sage [2008/10/29(水) 08:29:19 ] うひょーーーーー いまからレポートやろうと思ったらちょうど良いものみつけたーーーーーーー さんきゅーーーーーーーー
900 名前:デフォルトの名無しさん mailto:sage [2008/10/29(水) 11:02:57 ] KITは8085なのか
901 名前:デフォルトの名無しさん mailto:sage [2008/10/29(水) 20:17:42 ] KITはレベルが低いな さすがFランク
902 名前:デフォルトの名無しさん mailto:sage [2008/10/29(水) 20:22:04 ] ナイトライダーかと思ったらスパルタFランクか
903 名前:デフォルトの名無しさん mailto:sage [2008/10/29(水) 22:15:47 ] おまいら レポート提出はできたのか? 落第しないよう頑張れよwwwwwwwwwwwwwwwww
904 名前: ◆0uxK91AxII mailto:sage [2008/10/30(木) 05:53:46 ] 東洋経済の本当に強い大学ランキング19位。 ( ゚,_J゚)
905 名前:デフォルトの名無しさん mailto:sage [2008/10/30(木) 10:12:17 ] 機械語教育が8085だからってレベル低いとは思えんが お約束のようにこのスレに質問があるのはどうかと思うが
906 名前:896 mailto:sage [2008/10/30(木) 13:29:33 ] とほほ 165-166のレスしたのは俺だったよ。1年前のコードのほうが896の示唆守ってるし・・・
907 名前:デフォルトの名無しさん mailto:sage [2008/10/30(木) 16:28:53 ] Wikipedia「アルベルト・アインシュタイン」より >>簡単な数字や記号を記憶することが苦手だったとされる。ある新聞社のインタビューの中で、光速度の数値を答えられず、記者から揶揄されると「本やノートに書いてあることをどうして憶えておかなければならないのかね?」とやりかえしたという。 KITの学生曰く「ネットで簡単に教えてもらえることをどうして自分で考えなければならないのかね?」ってとこだな。 KITの学生はアインシュタインより進んでるってことだ、多分。
908 名前:デフォルトの名無しさん mailto:sage [2008/10/30(木) 16:38:58 ] 手元にある本やノートはページを開けば数秒〜十数秒ほどで情報を得られるが、 ネットで教えてもらうには数分〜数日かかるわけで、 そのタイムロスが許容範囲かどうかってことだ、多分。
909 名前:デフォルトの名無しさん mailto:sage [2008/10/30(木) 16:46:39 ] 手元にある本やノートに書いてある情報からでは解答を導き出せない、 自力で解こうにも数分〜数日かけても解答を導き出せない、 となるともう誰かに教えを乞うか潔く落第するしかないもんな。