1 名前:デフォルトの名無しさん [2007/08/14(火) 17:18:08 ] アセンブラ全般に関するスレッドです。 【前スレ】 アセンブラ… ( ゚д゚)ウッウー pc11.2ch.net/test/read.cgi/tech/1174825173/
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 ] 手元にある本やノートに書いてある情報からでは解答を導き出せない、 自力で解こうにも数分〜数日かけても解答を導き出せない、 となるともう誰かに教えを乞うか潔く落第するしかないもんな。