
アセンブリ言語レベルでの話です。
データ転送命令は、どのプロセッサでも必須の命令ですが、これにはld系とmov系があります。
この二つの違いを教えてください。
とりあえず、私が考えたのは、
1. メーカーによる違いでもなさそう。
インテルは8ビットCPUでld命令、16ビット以降でmov命令ですね。
最悪なのはATMELのAVR。同じプロセッサでldとmovがある。
2. データ転送の向きによる区別でもなさそう。
インテルは「mov dst,src」だし、日立は「mov src,dst」
の2つですが、両方とも反例がありました。
A 回答 (5件)
- 最新から表示
- 回答順に表示
No.5
- 回答日時:
データ転送命令は各社バラバラで特に決まっているルールはないと考えて良いでしょう。
統一した命令系を作らないようにすることによって、CPU命令の互換性を無くすようにした結果と考えて良いです。たとえば、Z80の命令系ではデータ転送はLDでしょうが、MC6809の命令系ではデータ転送はLDとSTがあります。他に、EXG、PUSH、POPなどもデータ転送を伴う命令です。
同様に、86系の命令系ではデータ転送はLD、ST、MOV、XCHG、PUSH、POPなどとなります。
レジスタ間でのデータ転送に限れば、MOV、XCHGだけでしょうが、データ転送命令を1つだけに限るのは混同や誤解を招くので、分類されて命名されている例が多いようです。
No.4
- 回答日時:
#1 です.
8080 でも「ロード」の語を使った命令はあります.
うろ覚えですが LHLD という,
HLレジスタ(16bit)に,メモリからの16bit値をロードする
即ち Load HL Direct ... そんな意味だったと思います.
逆方向は Store で, SHLD というニーモニックでした.
そうそう,8bit では Aレジスタを使う LDA, STA というのもありました.
8080 の頃は,ベンダ側が作るアセンブラやコンパイラへの配慮もあるように思います.
CPUを売る為にはなるべく同時期にリリースしたいので
短期間で作れて,構造がなるべくシンプルでバグが出にくい、
そんな体系なのではないかと思います.
8080 の MOV, MVI, LHLD, SHLD, PCHL などは,
Z80では全て LD です.
(ニーモニックを書く際に Z80 では何でも LD で済むので
楽といえばそうですがうっかり存在しない命令も書けてしまうのが難点)
生成する命令コードがニーモニックだけでは決定できず
続くオペランド等も参照し、なおかつ IX,IYレジスタが出てくるとまた違ってくる...
という複雑な構造になります.
Z80 の命令コード体系は, 8080 のそれの空きコードを使って拡張した格好だし,
(それゆえ 8080 マシンコードのプログラムがそのまま走れる)
Z80 開発時は 8080の開発に関わった人間がスピンアウトして参加していた(中心人物?)
という話もあり,あえて同様のニーモニックにはしたくなかったのかも知れません.
勉強し始め知り合いから、「MOVってmove だから
転送元データは消えるのかと思ってた」と聞かされました.
無理もないですね.いっそ COPY なんてニーモニックが
いいかも?
MOV dst,src の記述位置関係については,
数値を含んだ命令コードだとその数値はコードの後ろの方に置かれるのが普通でしょうから、
MOV dst,src が素直な気がします.
色々なお話をありがとうございます。
8080側が、アセンブラを作る方を向いていたと言うことですね。
Z80では、8080の転送命令をまとめてldにしたのでニーモニックがシンプルになったけど、ありえないレジスタとの組み合わせが面倒になった。
なる程です。
私は、Z80形式の方が好きだなぁ。
そういえば、Z80では加算命令は、
add A,B ; Reg.A = Reg.A + Reg.B の場合。
と記述するのに、減算命令は、
sub B ; Reg.A = Reg.A - Reg.B の場合。
と、加算のときにAレジスタしか使えないのに「A,」を省略できないんですよね。
16ビット加算命令があるから?
でも16ビット減算命令もあるよね。
これは、凄く使いにくい!
> MOV dst,src の記述位置関係については,
> 数値を含んだ命令コードだとその数値はコードの後ろの方に置かれるのが普通でしょうから、
> MOV dst,src が素直な気がします.
これは、今まで気が付かなかった考え方です。
No.3
- 回答日時:
8080 z80で言えば視点の違い、かもしれません。
CPUを外から操作するイメージでMOV、自分がCPUになった
イメージでLD。
CP/M付属のアセンブラは8080用なのでインテル表記でしたが、自分が何をしているか明確でバグが出にくかった気がしますね。
LD表記だとだんだん混乱してくる気がします。
回答ありがとうございます。
> CPUを外から操作するイメージでMOV、自分がCPUになったイメージでLD。
ここら辺がちょっとわからないので、もう少し詳しく教えてください。
また、
> LD表記だとだんだん混乱してくる気がします。
どのような経験があるか教えていただければ幸いです。
No.2
- 回答日時:
こんなの、メーカーの好き勝手。
ついでに言うと、それよりちょっと前に作られた大型機、他社マイコンとかのニモニックを参考に、「ワタシは、MOVの方が好きだ」、「ロードで良いや」と決めているようです。
intelで8080のニモニックを作る際に、movだったけど、zilogでZ80を作るときに「movって移動だよね。元のデータがレジスタ内にあるんだから、ロードだろ」とか言ったのかもしれませんね。
データ転送の向きもA→Bか、B←Aか、それも、ニモニック作者の好み。
で、私が昔使っていたのは、下記の様に数式で書けるアセンブラ。Baseっていう、キャリーラボのアセンブラをキャリーDOS上で使っていました。
CLR(A)
(X+)=A
XOR(A)
(HL+)=A
だって、もう、いちいち転送の方向とか、movなのか、LDなのかなんて覚えていられないじゃない?。
あと、これとは話は違いますが、昔、8ビット某ゲームメーカーに遊びに行ったとき、シフトの方向と、それにキャリーが含まれるのか、含まれないのかを一覧表にしたものが壁に貼ってありました。
> こんなの、メーカーの好き勝手。
やっぱり、そうなのですね。
> intelで8080のニモニックを作る際に、movだったけど、zilogでZ80を作るときに「movって移動だよね。元のデータがレジスタ内にあるんだから、ロードだろ」とか言ったのかもしれませんね。
そんな様子が想像できます。
> で、私が昔使っていたのは、下記の様に数式で書けるアセンブラ。Baseっていう、キャリーラボのアセンブラをキャリーDOS上で使っていました。
この様な、マクロっぽいアセンブリ言語(?)だと便利ですね。
No.1
- 回答日時:
メーカが違えば、というか仕様決定者が違えば
考え方も違うわけで、そんなに深い意味はないと思いますが。
なので、ご質問のポイント
> これにはld系とmov系があります。
> この二つの違いを教えてください。
は、複数メーカに亘る的確な回答はないと思います。
あえて言えば、(私は知りませんでしたが)1プロセッサで
両命令があるというAVR。
これこそ別の名称を使っているのですから違いがあるのでは?
私もここ10年くらいのCPUは知りませんが、
25年以上前の インテルの8ビットCPU 8080 や8085 は MOV でした.
インテルのは転送だけではフラグは変化しませんが、
モトローラのは転送だけで動くフラグがありました。
各社各様のニーモニックで、技術者の負担が多く
公的な技量を測りにくかったので、
情報処理技術者の資格試験用に仮想CPUが規定され
これのニーモニックを使い出題されたこともありました。
> メーカが違えば、というか仕様決定者が違えば
> 考え方も違うわけで、そんなに深い意味はないと思いますが。
結局、こうなるんですね。
> 25年以上前の インテルの8ビットCPU 8080 や8085 は MOV でした.
私は、Z80がld命令だからか8080Aはld命令だと勘違いしてました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# Cのオブジェクトファイルの逆アセンブル 5 2023/05/13 01:51
- ノートパソコン 拡張子の変換 6 2023/05/07 20:43
- その他(プログラミング・Web制作) x86_32のGASの擬似命令 3 2023/06/07 19:55
- CGI htmlからパラメータで、cgiに渡したい。 1 2023/02/06 16:15
- Mac OS MacのFinderでmovファイルのサムネイルが表示されないのと、クイックルックが出来ません。 こ 3 2023/07/24 18:40
- その他(動画サービス) YMM4 で MOV ファイルが読み込まれているがプレビューされない 2 2022/07/25 18:36
- その他(パソコン・周辺機器) iPhone→ PC取り込んだHDR動画が白くなってる 1 2023/07/24 22:55
- その他(悩み相談・人生相談) 「はぁ…」とか言わずに中身教えてくあげればいいのに。 って提案の意味で伝えたら 相手は、命令するなと 2 2022/07/11 15:27
- その他(AV機器・カメラ) ピアノ演奏の録画録音 3 2022/10/28 14:01
- CPU・メモリ・マザーボード CPUがメモリ上に書かれている命令を実行した後の流れについての質問です。 1 2023/05/05 01:18
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
有無、要否、賛否、是非、可否...
-
どちらが正しい?「~して行き...
-
目上の方に、メールの語尾「以...
-
YouTubeに動画を「あげる」の表...
-
「あらむ」の文法的意味は?
-
ひらがなを数字で表す方法教え...
-
佐賀弁だと思うのですが意味を...
-
郷に入らずんば郷に従えという...
-
真に 誠に どちらが正しい漢字?
-
日本語の意味
-
不等号の使い方について
-
키야 これどういう意味ですか?
-
「ガキの使いやないんやから」...
-
頃とはどの範囲をさす言葉ですか?
-
“ in situ ” とはどういう意味...
-
「蓋然性」と「可能性」の違い
-
方と法、、、
-
ドMとMの違いを教えてください
-
呆然と茫然 なんで呆然自失...
-
PCの累積使用時間の確認
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
有無、要否、賛否、是非、可否...
-
目上の方に、メールの語尾「以...
-
どちらが正しい?「~して行き...
-
ひらがなを数字で表す方法教え...
-
YouTubeに動画を「あげる」の表...
-
「あらむ」の文法的意味は?
-
不等号の使い方について
-
頃とはどの範囲をさす言葉ですか?
-
何と読み、どういう意味でしょ...
-
真に 誠に どちらが正しい漢字?
-
日本語の意味
-
読み方
-
厚待遇 好待遇 高待遇
-
「スタートが切れる」はどうい...
-
方と法、、、
-
利用と活用の違いや、「利活用...
-
郷に入らずんば郷に従えという...
-
ドMとMの違いを教えてください
-
“ in situ ” とはどういう意味...
-
x64 ベースプロセッサとはどう...
おすすめ情報