[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 2chのread.cgiへ]
Update time : 06/24 11:52 / Filesize : 195 KB / Number-of Response : 910
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

アセンブラ… Part 12



1 名前:デフォルトの名無しさん [2007/08/14(火) 17:18:08 ]

アセンブラ全般に関するスレッドです。

【前スレ】
アセンブラ… ( ゚д゚)ウッウー
pc11.2ch.net/test/read.cgi/tech/1174825173/



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 ]
手元にある本やノートに書いてある情報からでは解答を導き出せない、
自力で解こうにも数分〜数日かけても解答を導き出せない、
となるともう誰かに教えを乞うか潔く落第するしかないもんな。






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<195KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef