2ちゃんねる ■掲示板に戻る■ 全部 1- 最新50    

■ このスレッドは過去ログ倉庫に格納されています

8086 vs. Z80 vs. 6809 vs. 6502 その11

1 :ナイコンさん:2016/05/05(木) 14:06:04.03 .net
8086(8088)・Z80・6809・6502のうち、どのCPU(MPU)が優れているか議論するスレッドです。
CPU(MPU)アーキテクチャや周辺デバイス制御など
基本的に「石」に関連する議論なら、ほぼ何でもアリです。

■過去スレ
8086 vs. Z80 vs. 6809 vs. 6502 その10
http://hanabi.2ch.net/test/read.cgi/i4004/1407651926/
8086 vs. Z80 vs. 6809 vs. 6502 その9 (再び)
http://hello.2ch.net/test/read.cgi/i4004/1365951318/
8086 vs. Z80 vs. 6809 vs. 6502 その9 (短命)
http://ikura.2ch.net/test/read.cgi/i4004/1362833400/
8086 vs. Z80 vs. 6809 vs. 6502 その8
http://ikura.2ch.net/test/read.cgi/i4004/1333965297/
8086 vs. Z80 vs. 6809 vs. 6502 その7
http://ikura.2ch.net/test/read.cgi/i4004/1319314159/
8086 vs. Z80 vs. 6809 vs. 6502 その6
http://toki.2ch.net/test/read.cgi/i4004/1286766300/
8086 vs. Z80 vs. 6809 vs. 6502 その5
http://toki.2ch.net/test/read.cgi/i4004/1280380374/
8086 vs. Z80 vs. 6809 vs. 6502 その4
http://gimpo.2ch.net/test/read.cgi/i4004/1252639237/
8086 vs. Z80 vs. 6809 vs. 6502 その3
http://gimpo.2ch.net/test/read.cgi/i4004/1235851359/
8086 vs. Z80 vs. 6809 vs. 6502 その2
http://gimpo.2ch.net/test/read.cgi/i4004/1213527504/
8086 vs. Z80 vs. 6809 vs. 6502
http://bubble6.2ch.net/test/read.cgi/i4004/1165801265/
6809とZ80 part 2
http://bubble4.2ch.net/test/read.cgi/i4004/1093190685/
6809とZ80
http://bubble2.2ch.net/test/read.cgi/i4004/1008496410/

670 :ナイコンさん:2016/07/09(土) 06:21:02.56 .net
RPGかADVかシューティングかパズルかオセロや将棋、チェス、碁か。
そうやって考えていくと幅広いからなんとも・・・

個人的には碁は無理だろうと思う。

671 :ナイコンさん:2016/07/09(土) 07:26:34.53 .net
>>669
今世紀最高にワラタ

672 :ナイコンさん:2016/07/09(土) 09:49:10.99 .net
>>666
コード効率は6809が一番良いと思う。
バンクメモリであっても、1バンク内により多くのコードを入れられるメリットは大きい、
バンクまたがりのコール、ジャンプは手間がかかる上に、1バンク32KB程度の空間は結構窮屈。

673 :ナイコンさん:2016/07/09(土) 10:02:57.10 .net
窮屈と思うならFCではなくSFCで開発すればいい。

674 :ナイコンさん:2016/07/09(土) 10:46:56.76 .net
どうせならMDの方がいいんじゃね?

675 :ナイコンさん:2016/07/09(土) 11:48:58.23 .net
>>667,668
う〜ん、そうなのか

>>669,672
さすがにバンク切り替えとかはなしで
64KBオンメモリでどこまで詰め込めるか

データを入れたのは圧縮率と展開速度のバランスを取ったコードを書けることもコード効率にいれたかったから

6809かー
機能が多そう(妄想)だからあんまりよさそうには見えなかったんだよねぇ

>>670
おっしゃるとおりで

……もう常識的な展開速度でより圧縮率の高い圧縮方法を採用できるCPUでいいきがしてきた
対象データはRPGの絵と音以外かなぁ

676 :ナイコンさん:2016/07/09(土) 12:06:26.49 .net
6502のゲーム機、PCで64KBメモリなんてまず積んでないけど。

677 :ナイコンさん:2016/07/09(土) 13:47:24.84 .net
テープ全盛時代だから64KB積んでもロードに30分以上かかるぞw

678 :ナイコンさん:2016/07/09(土) 14:48:07.53 .net
>>676
コモドール64とかは?

679 :ナイコンさん:2016/07/09(土) 21:01:13.48 .net
>676
IIe以降のアップルとかは?

680 :ナイコンさん:2016/07/09(土) 21:09:56.05 .net
>>676
BBC Microの後期製品とかは?

681 :ナイコンさん:2016/07/09(土) 21:12:18.80 .net
>>676
アタリLynxは?

682 :ナイコンさん:2016/07/09(土) 21:34:41.89 .net
どれも6502じゃねーじゃん、無能め。

683 :ナイコンさん:2016/07/09(土) 22:18:20.89 .net
XYレジスタもSレジスタも8bitだからな。元々大容量メモリでの処理を想定していない格安低スペック向けMPU。

684 :ナイコンさん:2016/07/09(土) 22:34:55.17 .net
今でいう激安ライセンスのARMみたいなものか。

685 :ナイコンさん:2016/07/09(土) 23:27:56.43 .net
メモリマップドI/O方式を採用しているから、70年代当時は
メモリだけで64KBの空間すべて使うとは考えて無かったのかもな。

686 :ナイコンさん:2016/07/10(日) 02:26:48.61 .net
>>682

687 :ナイコンさん:2016/07/10(日) 03:44:47.95 .net
youtube見てると6502はスプライトとかハード支援ないと恐ろしいほどショボイゲームばかりだな。
ゲーム機としては手頃だけどPCとしてはなんか残念な構成だな。日本の8bitPCでは採用されなかった理由はその辺りかな。

688 :ナイコンさん:2016/07/10(日) 03:53:12.15 .net
インデクスレジスタが2本ないCPUはゴミ
シューティングゲーム作ると6502の優秀さとZ80のゴミさがよくわかる

689 :ナイコンさん:2016/07/10(日) 04:19:09.95 .net
Z80にインデックスレジスタにつかえるのは2本以上あるだろwww
ある無いだけでいうならゴミでは無いぞwww

690 :名無しさん@そうだ選挙に行こう! Go to vote!:2016/07/10(日) 09:03:08.77 .net
Z80採用のTandy TRS-80 は米国本国のユーザからでさえ、trash 80 と呼ばれていたけどな。

ゴミ。

691 :名無しさん@そうだ選挙に行こう! Go to vote!:2016/07/10(日) 09:24:39.51 .net
CP/M使うために、Z80ボードなんてもの指してたゴミPCのくせに。

692 :名無しさん@そうだ選挙に行こう! Go to vote!:2016/07/10(日) 09:29:47.99 .net
TRS-80がゴミ扱いされる理由が「インデックスレジスタの本数」なのか、へぇ〜(嘲笑

おれはてっきり全体的にお粗末過ぎるハードやOSのせいだと思ってたぜ。

693 :名無しさん@そうだ選挙に行こう! Go to vote!:2016/07/10(日) 11:28:57.62 .net
ただのダジャレだろw

694 :名無しさん@そうだ選挙に行こう! Go to vote!:2016/07/10(日) 12:03:06.88 .net
同じインデックスレジスタでも
Z80だと
LD IX,TABLE
LD A,(IX+1)

6502だと
LDX #1
LDA TABLE,X

である意味正反対の別物なんだよな。

6809だと16ビットレジスタ+5,8,16ビットオフセットなので
LDX #TABLE
LDA 1,X

LDX #1
LDA TABLE,X
のどっちも行けるけど、普通は
LEAX TABLE,PCR
LDA 1,X
と書くかな。

695 :名無しさん@そうだ選挙に行こう! Go to vote!:2016/07/10(日) 13:47:37.89 .net
ゴミ-80は駄洒落だけど、モデルIのデキが酷かったってのもあるだろ。

696 :名無しさん@そうだ選挙に行こう! Go to vote!:2016/07/10(日) 13:48:35.68 .net
可哀相なキチガイには、駄洒落はまったく理解できないんだよwww

697 :名無しさん@そうだ選挙に行こう! Go to vote!:2016/07/10(日) 17:43:28.20 .net
シミュレーション系は6502よりZ80のほうが向いてんじゃね?

698 :名無しさん@そうだ選挙に行こう! Go to vote!:2016/07/10(日) 17:57:38.95 .net
6809人気ねーな。

699 :名無しさん@そうだ選挙に行こう! Go to vote!:2016/07/10(日) 18:36:07.29 .net
>>698
86 もそうだけど工夫しがいがないからな

700 :ナイコンさん:2016/07/10(日) 21:34:08.14 .net
工夫し甲斐がないというか、6809だしたらそれで他のCPUの出番が無いからだろ。

701 :ナイコンさん:2016/07/11(月) 00:41:08.23 .net
>>683
6800の子孫HCS08も6809の子孫STM8もインデックスレジスタは8bitだから8bitが正解
16bitレジスタ持っていてもメモリにアドレス入れる6502より圧倒的に遅い6800はいらない子

702 :ナイコンさん:2016/07/11(月) 02:16:56.11 .net
> 6800の子孫HCS08も6809の子孫STM8もインデックスレジスタは8bitだから8bitが正解

ニワカw

703 :ナイコンさん:2016/07/11(月) 03:26:53.08 .net
http://www.nxp.com/files/microcontrollers/doc/ref_manual/HCS08RMV1.pdf
> 6.2.2 Index Register (H:X)
> This 16-bit index register is actually two separate 8-bit registers
> (H and X). The indexed addressing modes use H:X as a 16-bit base
> reference pointer and variations of indexed addressing allow an
> instruction-supplied 16-bit offset, 8-bit offset, or no offset.
> Other variations of indexed addressing automatically increment
> the 16-bit index register after the index is used to access a
> memory operand.

https://en.wikipedia.org/wiki/Freescale_68HC08
> HC08's are fully code-compatible with their predecessors,
> the Motorola 68HC05. Like all Motorola processors that share
> lineage from the 6800, they use the von Neumann architecture
> as well as memory-mapped I/O. This family has five CPU registers
> that are not part of the memory. One 8-bit accumulator A,
> a 16-bit index register H:X, a 16-bit stack pointer SP,
> a 16-bit program counter PC, and an 8-bit condition code register
> CCR. Some instructions refer to the different bytes in the
> H:X index register independently.

704 :ナイコンさん:2016/07/11(月) 03:32:26.37 .net
http://www.st.com/content/ccc/resource/technical/document/programming_manual/43/24/13/9a/89/df/45/ed/CD00161709.pdf/files/CD00161709.pdf/jcr:content/translations/en.CD00161709.pdf
> Index registers (X and Y)
> These 16-bit registers are used to create effective addresses
> or as temporary storage area for data manipulations.
> In most of the cases, the cross assembler generates a PRECODE
> instruction (PRE) to indicate that the following instruction
> refers to the Y register. Both X and Y are automatically
> saved on interrupt routine branch.

https://en.wikipedia.org/wiki/STM8
> Architecture
> The STM8 has some similarities to the earlier ST7, but is
> better suited as a target for C due to its stack pointer-relative
> addressing mode. There is an 8-bit accumulator A and
> 16-bit registers X and Y, which are mostly used as index registers.

705 :ナイコンさん:2016/07/11(月) 07:02:52.53 .net
>>694
> LD IX,TABLE
> LD A,(IX+1)

> LDX #TABLE
> LDA 1,X

インデックスと言うよりベースレジスタとかポインターだな

706 :ナイコンさん:2016/07/11(月) 10:43:00.55 .net
IX/IYはあんま使わなかったな
たいがい裏レジスタでどうにかなったし

707 :ナイコンさん:2016/07/11(月) 11:21:14.75 .net
とりあいず裏って言っとけばカッコいいと思ってる小学生

708 :ナイコンさん:2016/07/11(月) 12:05:27.11 .net
レジスタ足りなくなってどうしてもって時でもなければIX/IY使わないっしょ。

709 :ナイコンさん:2016/07/11(月) 13:45:12.99 .net
> レジスタ足りなくなってどうしてもって時でもなければIX/IY使わないっしょ。

「データ構造」という概念を理解してない奴が言いそう↑

710 :ナイコンさん:2016/07/11(月) 14:40:47.81 .net
IX/IYは使いこなすのが難しいよね、
大抵は使わないほうが速い、さらには小さいコードになったりするから…

711 :ナイコンさん:2016/07/11(月) 16:58:19.65 .net
LD IX, DATATOP ; 4byte 14clk
LD A, (IX + DATA1) ; 3byte 19clk

LD A,(DATATOP + DATA1) ;3byte 13clk

うーむ……

712 :ナイコンさん:2016/07/11(月) 17:11:08.25 .net
IX/IY使うのはバカ。
根拠なく言われてないよね。

713 :ナイコンさん:2016/07/11(月) 17:52:51.83 .net
LD IX, DATATOP
LD DE, DATASIZE
LD B, 100
LOOP: PUSH BC
LD A, (IX + DATA1)
LD B, (IX + DATA2)
LD C, (IX + DATA3)
CALL HOGERA
ADD IX, DE
POP BC
DJNZ LOOP

LD HL, DATATOP
LD B, 100
LOOP: PUSH BC
LD DE, DATA1
ADD HL, DE
LD A, (HL)
LD DE, DATA2 - DATA1
ADD HL, DE
LD B, (HL)
LD DE, DATA3 - DATA2
ADD HL, DE
LD C, (HL)
CALL HOGERA
LD DE, DATASIZE - DATA3
ADD HL, DE
POP BC
DJNZ LOOP

714 :ナイコンさん:2016/07/11(月) 18:22:56.33 .net
トップアドレスがころころ変わるor複数点在する&データサイズすら可変&でもデータ位置が飛び飛び&それでもデータの相対位置は固定
設計悪すぎじゃね?

715 :ナイコンさん:2016/07/11(月) 18:44:17.08 .net
挙げられた例がプログラム全体とも限らないのに変な決めつけをしてでもなんか言いたいというのはわかったw

716 :ナイコンさん:2016/07/11(月) 19:06:12.45 .net
IX馬鹿にゃ分からんのかもな
お前のことはHと読んでやろう
○の中に9で、読み方は

717 :ナイコンさん:2016/07/11(月) 19:16:24.76 .net
8ビットに限らんが、アッセンブラ前提なら変な構造化したデータなんぞメモリにおかないしね。
単純に複数のテーブルに展開しておく。
そのほうがロジック見通し良くなるし、速度も速くなる。

718 :ナイコンさん:2016/07/11(月) 19:21:09.37 .net
> 8ビットに限らんが、アッセンブラ前提なら変な構造化したデータなんぞメモリにおかないしね。

アセンブラで書くことが目的になってる素人の発想だね。

719 :ナイコンさん:2016/07/11(月) 19:27:51.64 .net
> そのほうがロジック見通し良くなるし、速度も速くなる。

プログラムの部分部分による処理時間の評価ができない馬鹿は近視眼的な
最適化に拘る傾向があるな。

720 :ナイコンさん:2016/07/11(月) 19:28:25.98 .net
自称玄人乙。
無駄に複雑で遅くてバグリーなコード書いて俺すげーしててね。

721 :ナイコンさん:2016/07/11(月) 19:29:37.42 .net
>>717
じゃあそういう前提で>>713のプログラム書き直してみ?

722 :ナイコンさん:2016/07/11(月) 19:30:27.62 .net
そもそもIX/IYに拘る辺りに既に馬鹿丸出しでございますからw

723 :ナイコンさん:2016/07/11(月) 19:30:56.26 .net
実務経験ないんだろうね。

724 :ナイコンさん:2016/07/11(月) 19:33:24.71 .net
>>720
有益に単純で速くて信頼性の高いコードの例はやく書いて見せてちょw

725 :ナイコンさん:2016/07/11(月) 19:36:21.72 .net
具体的な例挙げてる人に喚いてるだけの人が絡んでる格好w

726 :ナイコンさん:2016/07/11(月) 19:38:09.87 .net
>喚いてるだけの人が絡んでる格好

プログラム書ける人に対してなんか変なコンプレクスでもあるんだろう。

727 :ナイコンさん:2016/07/11(月) 19:42:38.65 .net
まぁCでも使ってればいいんじゃない?
効率も速度も度外視で目的の動作を実現出来ればいいだけの実務さんはw

728 :ナイコンさん:2016/07/11(月) 19:45:54.08 .net
IXを使ったほうがソースが読みやすくなる
しかし使うか使わないかで明らかにスピードに差がある

最初は「たかが数クロックの違いだろー」と思ってたが
わずかなスピード差が気になる「ゲーム」って特殊なシステムだと
使った場合、使ってない場合、両方でプログラム組んで比べると
「IXを使っている方が明らかに遅い」って体感できるくらいなんだよな

729 :ナイコンさん:2016/07/11(月) 19:47:29.89 .net
処理の大半はCで、負荷の大きい部分はアセンブラでというのは
開発効率と実行効率の両方のバランスを考えれば普通に出てくる
発想だが、実務経験のない奴はその辺のトレードオフとか理解の
外なのかも。

730 :ナイコンさん:2016/07/11(月) 19:48:05.03 .net
昔の知識のまま固まってる爺だろ
https://msdn.microsoft.com/ja-jp/library/tydf8khh.aspx

731 :ナイコンさん:2016/07/11(月) 19:49:40.01 .net
>>728
>>719で既に言われてるよ。

732 :ナイコンさん:2016/07/11(月) 19:52:27.51 .net
実務経験のない奴は「要求仕様」という概念がないから
「速ければ速いほど良い」みたいな馬鹿な発想をするのだろう。

733 :ナイコンさん:2016/07/11(月) 19:54:41.06 .net
IX/IYは使わない派による>>713への具体的な反論が見たいw

つかそれがない限りは口だけ番長だわ。

734 :ナイコンさん:2016/07/11(月) 20:02:39.22 .net
z80アセンブラ書いてた頃はまだ中一でした。実務経験ある方はもう70過ぎてんじゃないでしょうか。

735 :ナイコンさん:2016/07/11(月) 20:31:54.49 .net
>>711
これはいくらなんでも例が悪すぎw インデックスドアドレッシングはローカル変数のアクセスとか、
動的に確保したデータ領域へのアクセスとか、大抵そういうときに使うもんじゃないかと。

何にせよ、Z80でインデックスドアドレッシングは辛いわな
LD r,(IX+d) 4CLKx2+3CLK+5CLK+3CLK=19CLK
2バイトコードだから4CLKも食うM1サイクルを2回、ディスプレースメントを読み込むのに3CLK、
次いでアドレス計算(16bit加算)に5CLKw、やっとこさ最後にデータ読み込み3CLK。
命令のフェッチですでに相当酷いことになってる上に、4bitALUがトドメを刺すというね。

736 :ナイコンさん:2016/07/11(月) 20:57:38.30 .net
>>734
まだ現役で使ってて新規開発もある業界もあるみたいだし年齢なんてわからんだろ

737 :ナイコンさん:2016/07/11(月) 21:01:25.08 .net
ケチつけるだけで、自身が理想とする模範解答たるべきソースコードは絶対に出さないよなwww

738 :ナイコンさん:2016/07/11(月) 21:24:23.69 .net
Z80の新規案件ってパチ屋が圧倒的(偏見)だろwww
現役を御勇退あそばされて天下りしました、な元公務員のわからんちんを相手にするオシゴトwww

下っ端のプログラマがあいてにすることはまず無いけどさwww

739 :ナイコンさん:2016/07/11(月) 21:24:45.60 .net
>>737
教条的に「IX/IYは遅い」と妄信してるだけだからだろwww

740 :ナイコンさん:2016/07/11(月) 21:25:20.60 .net
>>737
毎度のことだろ。

741 :ナイコンさん:2016/07/11(月) 21:25:41.32 .net
ぶっちゃけZ80にIX/IYは要らない。

742 :ナイコンさん:2016/07/11(月) 21:26:28.68 .net
>>713
無駄すぎて何をしたいのかわからない

743 :ナイコンさん:2016/07/11(月) 21:28:09.70 .net
>>738
> 下っ端のプログラマがあいてにすることはまず無いけどさwww

ツイッターで検索すると新人(=下っ端)にZ80てのは現代でもあるみたいだぞ。
https://twitter.com/search?q=z80%20%E6%96%B0%E4%BA%BA&src=typd

もちろんパチ屋も含まれてはいるだろうがそれだけではないようだ。

744 :ナイコンさん:2016/07/11(月) 21:28:58.65 .net
>>742
はいはい馬鹿はひっこんでてね

745 :ナイコンさん:2016/07/11(月) 21:30:05.48 .net
よっぽど馬鹿がコード書けば別だけど、普通はIX/IYは使わんよなぁ。
クロック浪費がすくなきゃ使ってもいいけど、使っただけで足引っ張るし。

746 :ナイコンさん:2016/07/11(月) 21:31:29.49 .net
「何をしたいのかわからない」くせに「無駄すぎ」と言える不思議w

747 :ナイコンさん:2016/07/11(月) 21:32:42.52 .net
> よっぽど馬鹿がコード書けば別だけど、普通はIX/IYは使わんよなぁ。
> クロック浪費がすくなきゃ使ってもいいけど、使っただけで足引っ張るし。

プログラム組んだことないことは分かったw

748 :ナイコンさん:2016/07/11(月) 21:49:10.98 .net
>>713
まずCALL HOGERAが無駄

749 :ナイコンさん:2016/07/11(月) 21:52:59.40 .net
> まずCALL HOGERAが無駄

展開しろとでも言うんだろうか?
HOGERA の内容もわからんところで「無駄」と言い切れる辺りそうとうの馬鹿と見た。

750 :ナイコンさん:2016/07/11(月) 21:55:21.93 .net
> まずCALL HOGERAが無駄

これだけでコイツに実務経験がないのは想像がつく。
他所が作成したモジュールでサブルーチン呼び出しせざるを得ない場合なんて当たり前にあるのにね。

751 :ナイコンさん:2016/07/11(月) 21:57:40.20 .net
実際のコードだと使うデータが順番に並んでいて直前に読み出したアドレスに書き戻すことが多いから
(HL)でアクセスしてINCやEXXでちまちまやる方が速いんだよな

752 :ナイコンさん:2016/07/11(月) 21:57:43.93 .net
>>748
> まずCALL HOGERAが無駄

えっ!どうして?!

753 :ナイコンさん:2016/07/11(月) 21:59:15.92 .net
>実際のコードだと使うデータが順番に並んでいて直前に読み出したアドレスに書き戻すことが多いから

簡単なプログラムしか組んだことない奴のセリフだなあ。

754 :ナイコンさん:2016/07/11(月) 22:00:58.54 .net
HOGERA:
RET

755 :ナイコンさん:2016/07/11(月) 22:23:01.43 .net
DATA1,DATA2,DATA3を連続して配置すれば
LD HL, DATATOP

LD DE, DATA1
ADD HL, DE
LD DE, DATASIZE-2
LD B,100
LOOP: PUSH BC
LD A,(HL)
INC HL
LD B,(HL)
INC HL
LD C,(HL)
CALL HOGERA
ADD HL,DE
POP BC
DJNZ LOOP
で行けるんじゃね?

756 :ナイコンさん:2016/07/11(月) 22:28:00.04 .net
>>745
それなりに便利だぞ
HLが空くしコードも読み易いし遅いといっても大してかわらん

757 :ナイコンさん:2016/07/11(月) 22:34:06.96 .net
>>755
仕様変更が入ったんで対応宜しく。HOGERA が Z 返したら PIYOPIYO 呼べだって。

LD IX, DATATOP
LD DE, DATASIZE
LD B, 100
LOOP: PUSH BC
LD A, (IX + DATA1)
LD B, (IX + DATA2)
LD C, (IX + DATA3)
CALL HOGERA
JR NZ, SKIP
LD A, (IX + DATA1)
LD C, (IX + WDATA4+0)
LD B, (IX + WDATA4+1)
CALL PIYOPIYO
SKIP:ADD IX, DE
POP BC
DJNZ LOOP

758 :ナイコンさん:2016/07/11(月) 22:36:12.75 .net
>>755
> DATA1,DATA2,DATA3を連続して配置すれば

ROMに配置されてるから変更できないんだ。アクセスの際にはオフセットで宜しく。

759 :ナイコンさん:2016/07/11(月) 22:40:34.13 .net
> DATA1,DATA2,DATA3を連続して配置すれば

こういう保守性悪いプログラムは却下。お前が一生担当するつもりか?

760 :ナイコンさん:2016/07/11(月) 22:48:47.29 .net
DATA1,DATA2,DATA3,WDATA4を連続して配置
HOGERAはH,Lの他にA,D,Eレジも保存
PIYOPIYOへの引数はA,D,Eレジ渡しで

LD DE, DATA1
ADD HL, DE
LD B,100
LOOP: PUSH BC
LD A,(HL)
INC HL
LD B,(HL)
INC HL
LD C,(HL)
INC HL
LD E,(HL)
INC HL
LD D,(HL)
CALL HOGERA
CALL Z,PIYOPIYO
LD DE, DATASIZE-4
ADD HL,DE
POP BC
DJNZ LOOP
でいいんじゃね?

761 :ナイコンさん:2016/07/11(月) 22:51:14.38 .net
>>758
はじめから連続配置して焼けマヌケ

762 :ナイコンさん:2016/07/11(月) 22:56:28.90 .net
> DATA1,DATA2,DATA3を連続して配置すれば

> DATA1,DATA2,DATA3,WDATA4を連続して配置
> HOGERAはH,Lの他にA,D,Eレジも保存
> PIYOPIYOへの引数はA,D,Eレジ渡しで

なんか都合よく条件を書き換えて最適化とか抜かしてるのは分かったw

763 :ナイコンさん:2016/07/11(月) 22:58:39.05 .net
都合悪く書き換える最適化なんて無いからなあ

764 :ナイコンさん:2016/07/11(月) 22:58:43.40 .net
>>760
HOGERAがZ返さなかった場合、PIYOPIYOの引数予め読んでおくのって無駄じゃね?

765 :ナイコンさん:2016/07/11(月) 23:01:08.05 .net
プログラムの構造がデータ構造にべったり沿ってるのってやっぱ保守性が悪いという結論にしかならんな

766 :ナイコンさん:2016/07/11(月) 23:09:15.07 .net
> HOGERAはH,Lの他にA,D,Eレジも保存
> PIYOPIYOへの引数はA,D,Eレジ渡しで

↑を実現するために↓みたいなの書いて、HOGERAとPIYOPIYOの代わりに呼び出すとかだったらなんかもう本末転倒な感じね。

_HOGERA:
PUSH AF
PUSH DE
CALL HOGERA
POP DE
POP AF
RET

_PIYOPIYO:
LD C, E
LD B, D
JP PIYOPIYO

767 :ナイコンさん:2016/07/11(月) 23:11:20.98 .net
むしろデータ構造自体に他からアクセスできるほうが保守性は悪いよ、
用意されたコードを介したアクセスで隠蔽できた方が良い、オブジェクト指向のアクセサみたいな。

768 :ナイコンさん:2016/07/11(月) 23:14:01.91 .net
>>766
POP AF
でZフラグの情報が消えちゃうんでバグりますね。

769 :ナイコンさん:2016/07/11(月) 23:16:07.79 .net
>>767
具体的なコードPLZ

770 :ナイコンさん:2016/07/11(月) 23:17:34.95 .net
>>769
メンドクサイggrks

総レス数 1002
237 KB
新着レスの表示

掲示板に戻る 全部 前100 次100 最新50
read.cgi ver.24052200