1 名前:デフォルトの名無しさん [2006/05/24(水) 01:43:34 ] アセンブラ全般に関するスレッドです。 【前スレ】 アセンブラ… ヽ(゚∀゚)ノフォーウ! pc8.2ch.net/test/read.cgi/tech/1132761638/ 過去ログは>>2 辺り
968 名前:デフォルトの名無しさん mailto:sage [2007/02/20(火) 23:42:56 ] インラインasm使う必要すらないじゃん
969 名前:デフォルトの名無しさん mailto:sage [2007/02/21(水) 02:43:28 ] >>964 ,>>966 ,>>967 ,>>968 みなさん、貴重なアドバイスをありがとうございます。 .asmファイルを見てみると、インラインアセンブラに対応するコードは 下のようになっていました。 余分な処理はないようなので、一応問題なくレジスタの内容を ストア(?)できているようです。 mov DWORD PTR _eaxv$[ebp], eax mov DWORD PTR _ebxv$[ebp], ebx mov DWORD PTR _ecxv$[ebp], ecx mov DWORD PTR _edxv$[ebp], edx mov DWORD PTR _esiv$[ebp], esi mov DWORD PTR _ediv$[ebp], edi mov DWORD PTR _ebpv$[ebp], ebp mov DWORD PTR _espv$[ebp], esp mov WORD PTR _csv$[ebp], cs mov WORD PTR _dsv$[ebp], ds mov WORD PTR _ssv$[ebp], ss mov WORD PTR _esv$[ebp], es mov WORD PTR _fsv$[ebp], fs mov WORD PTR _gsv$[ebp], gs
970 名前:デフォルトの名無しさん mailto:sage [2007/02/21(水) 14:15:18 ] WindowsだったらGetThreadContextで一発というオチ。
971 名前:デフォルトの名無しさん mailto:sage [2007/02/21(水) 14:40:27 ] GetThreadContextを自スレッドに呼び出すと呼び出しは成功するけど中身の保証は無し
972 名前:デフォルトの名無しさん mailto:sage [2007/02/23(金) 00:05:17 ] 最近勉強中でちょっと悩みがあります。 メモリのアドレスを特定のルーチンだけで利用するんですが、 スタックに入れてpush,popするべきなのか、 メモリから読んでまた書き戻すべきなのか、 どっちがいいんでしょう? 値を更新するので所謂Cのポインタなのですが。 やはりスタックの方が若干速そうなのですがその内バグりそうです。 慣れるまではメモリを使うべきでしょうか?
973 名前:デフォルトの名無しさん mailto:sage [2007/02/23(金) 00:10:01 ] >>972 レジスタ
974 名前:デフォルトの名無しさん mailto:sage [2007/02/23(金) 01:12:27 ] 65816アセンブラの勉強中で詰まってしまいました。 例えば AD E0 11 LDA で11E0の値が260以上ならXにジャンプ 260以下ならYにジャンプという命令はどのようにしたらいいですか? AD E0 11 CD 60 02 F0 04 5C XX XX XX 5c YY YY YY とやりましたがゼロフラグを使っての分岐なので 260だったときでした。 「260以上はXにジャンプ、260以下はYにジャンプ」の分岐の方法を 何方かご教授下さい。
975 名前:デフォルトの名無しさん mailto:sage [2007/02/23(金) 01:34:34 ] >>974 65816は知らんが、ニモニック表をよく見てみ。 条件分岐命令にゼロフラグチェック以外にもキャリーフラグチェックのがあるはずだから。
976 名前:デフォルトの名無しさん mailto:sage [2007/02/23(金) 03:01:21 ] >>974 おまい、OKWaveでも同じこときいてたな。>>975 の説明でも 理解できなさそうだ。 なあ、206以下と260以上で分けるていってるけどさ、「260」のときは どっちに分岐させんだいw
977 名前:デフォルトの名無しさん mailto:sage [2007/02/23(金) 08:47:17 ] >>975 65816ではこうやって覚えとけばいい。 同じ(A = CMP xxxx):BEQ F0 以外(A ≠ CMP xxxx):BNE D0 未満(A < CMP xxxx):BCC(BLT) 90 以上(A ≧ CMP xxxx):BCS(BGE) B0 あと、CD 60 02だとCMP $260、つまり$260番地の内容との比較になる。 即値と比較がしたかったらC9 60 02とやるべき。
978 名前:デフォルトの名無しさん mailto:sage [2007/02/23(金) 09:25:36 ] >>975 フラグの意味がわかってませんでした。 >>976 260以下と260未満でした。 すみません。 >>977 ありがとうございます! 無事260以上の命令が出来ました。 皆様お忙しい中有難うございました。
979 名前:デフォルトの名無しさん mailto:sage [2007/02/28(水) 00:03:34 ] > 260以下と260未満
980 名前:デフォルトの名無しさん [2007/03/17(土) 23:56:27 ] あげ
981 名前:デフォルトの名無しさん [2007/03/21(水) 00:07:46 ] age
982 名前:デフォルトの名無しさん [2007/03/21(水) 17:34:48 ] NASMでSSE3やそれ以上は使えるのですか。
983 名前:デフォルトの名無しさん mailto:sage [2007/03/21(水) 17:52:27 ] マクロアセンブラならどんなニモニックだろうと(自分で追加すれば)使える。
984 名前:デフォルトの名無しさん mailto:sage [2007/03/21(水) 20:25:57 ] まず勉強