8080もインテルがOSを出していたりするわけだが 6809の命令のバイト数もサイクル数も違う見かけだけの直交性に騙されている奴は今でもいるんだな どうせマイコンしか知らないくせに何がコンピュータ屋の設計だよw
ハードウェア的な直交性でなければ偽者、なんて俺様定義を振り回されても知らんわ
どちらかと言うと、場の空気を壊す間抜けって感じ。
>>875 で、御説のいうところの真の『直交性』があるというCPUは何でしょうか?
是非ご高説を賜りたい。
見かけだけは直交している、と書いたはずだけどねえ 偽物だなんて誰が言い出したのやら 「真の」直交性なんてのも同じ より直交性の高いものは?という質問なら受け付けるよ
直腸性交に似ている
直交性が高いって言うと、下記だと思うけど 1)命令によって使えるレジスタの制限が無い(or少ない) 2)命令によって使えるアドレッシングモードの制限が無い(or少ない) 直交性が高い=優れたアーキテクチャなのかな? 実際は制限のある命令は削除してるだけに見えるんだけど コンパイラに最適化されているんだろうけど "コンパイラに最適化=優れたアーキテクチャ"ってのは決定事項 なんだろうか
ハーバードじじい参上
>>879 ごちゃごちゃ言わずにさっさと具体例を出せよ、ハゲ。
>>883 のような人間が揚げ足をとろうとしているのが明らかなので
質問が明確になってから答える
>
>>883 のような人間が揚げ足をとろうとしているのが明らかなので
>質問が明確になってから答える
↑これを意訳すると・・・
「ボクは何の知識も無いので答えられません。
でも見栄っ張りなボクはノラリクラリと思わせぶりな反応してかわすぜ。
うかつに技術的っぽい回答したら、本当に知識持っている人たちに
ボコボコにされるからな。そんな馬脚を現すほどボクはマヌケじゃないよ。」
直交性なんてジャーゴンの一種だから正確な定義なんてないでしょ。
要するに、
>>875 がやっているように誰でも「俺だけの正しい直交性の定義」
を下すことが出来るといえば出来る。
それに意味があるかどうかは別として。
>>886 直交性に正確な定義がないとしても、共通の理解というのは当然あるわな
本当に知識のある人は、揚げ足なんか取られないような 一分の隙もない完璧な発言をするものなんだが。 要するに自信がないんだろ。 白状しろよ。「ボクは何の知識もありません」と。
何にせよ、レジスタに限っても ニモニックレベルや命令エンコードレベルでの対称性や、実行サイクル数の違い、特定の役割(スタックとか)などがあるわけよ 真とか偽の直交性とか言われても話はできんね
話ができないなら黙っていれば?
オレが嫌がる最大のことは、君が理路整然とオレを論破すること。 さぁ、やってくれ。
直交性っていうのは普通は命令セットの話だから、クロック数とか実装の話は関係ないだろ。
すまん、言い方が悪かった。オレが最大に嫌なのは、 君が具体的な例を出すこと。誤るから具体的な例を出してくれ。
誤字:誤る→謝る
>>894 考え方の一つとしてはそういうのもあってもよいかとは思うが、
レジスタやアドレッシングモードの直交性の利点として、コンパイラの作成の容易さがあげられることが多い
アドレッシングモードは仕方がないとしても、レジスタによって実行サイクル数が異なるとコンパイラは作りにくくなるよな
だから、実行サイクルなども直交性に含める方が自然
>>898 考え方のひとつって・・・
頑固なんだねw
実装系が変わればコンパイラの最適化が変わるのは当然だが、直交性とは関係ないぞ。
直交性って一番抽象度を上げて言えば、要するにパラメータとパラメータの独立性のことだよね。
片方を変えずにもう片方を変えられること。
その意味で
>>890 の言っていることはややトンチンカンだね。
実行サイクルはともかく、「ニモニックレベルや命令エンコードレベルでの対称性」
って何のこと言ってるんだろう。
そのアドレッシングと実行サイクルの間の関係にしたって、普通はそれを
直交性が高いとか低いとか言わない気がするけどね。
まあ俺様定義だなこんなもの。
>>900 > 「ニモニックレベルや命令エンコードレベルでの対称性」
>>894 > 直交性っていうのは普通は命令セットの話だから、
これとだいたい同じという理解
8ビットCPU(少なくとも世に広く知られたCPU)で
直交性が高いのは8080だな。
Z80も6809も80806も変なプリフィックスつけて命令増設しているから、
ニモニック上では直交しているように見えても実際には直交性は高くない。
直交性に関しては8080の方が勝っているんだが、8080は寂れた。
さて、
>>898 の言う、「直交性の高い」クラシックCPUって何だ?
具体的に挙げてくれ。
>>901 >>894 の言いたいことは
>>881 的な話だろう。
要するに、命令とアドレッシングの間の独立性のこと。
こういう話をするときに、君は
>ニモニックレベルや命令エンコードレベルでの対称性
こんな意味不明な表現をするんですか?w
>>900 > 片方を変えずにもう片方を変えられること。
例えば6809では、XレジスタをYレジスタに変えるとプリバイトがついてサイクル数が変わることがある
CMPXとCMPYとか
>>902 いやいや、AレジスタなんてものがあるCPUを直交性が高いとか言わないでしょw
>>902 まいったな、オレが話していたのはID: f/aDrG4s なんだがw
いや、8080は,少なくともZ80なんかよりは直交性が高いよ。
Z80なんかは直交性を維持していたらパフォーマンスが落ちるのが見えたから
あえて直交性を崩した。
>>907 で、4004は性能が高いの?
つーか、4004用のコンパイラとかあったの?
言い方を変えると、
>>908 は
・4004には直交性がかけている、なぜなら性能が低いしコンパイラもないからだ
と主張しているの?
>6809の命令のバイト数もサイクル数も違う見かけだけの直交性に騙されている奴は今でもいるんだな
>どうせマイコンしか知らないくせに何がコンピュータ屋の設計だよw
これが発端だな。オレは
>>873 とは別人なんだが(信じなければ信じなくても結構)
じゃあ聞こう。
1)「見かけだけの直交性に騙されてい」ない君は、どんなスゴイことやってるの?
2)「どうせマイコンしか知らないクセに」とおっしゃる君は、マイコン以外のどんなCPUを知っているの?
>・4004には直交性がかけている、なぜなら性能が低いしコンパイラもないからだ そんな主張はしていないが。
>>908 は
>>898 >レジスタやアドレッシングモードの直交性の利点として、コンパイラの作成の容易さがあげられることが多い
への反論。
>>911 6809のプリバイトが消えてなくなるというのなら答えてもいいけど
>レジスタやアドレッシングモードの直交性の利点として、コンパイラの作成の容易さがあげられることが多い と君が言うなら、君は4004なんて出すべきではなかった。
>6809のプリバイトが消えてなくなるというのなら答えてもいいけど それを言うならポストバイトだな。 で、君の言う「プリバイト」が無くて、6809より優れているクラシックCPUって何? (言っておくが、ここはクラシックCPUのスレだからな。core2とかarmとか持ち出してもダメだぞ。)
なんでトータルの優劣の話になるのかなあ…
つーか君、ぜんぜん具体的なこと言っていないよね。 早くオレの嫌がる、具体的なことでオレを論破してくれ。 オレの嫌がることは何でもするんだろ。
6502,6809とかはレジスタが少なくて、コンパイラ作りにくかっただけじゃねえの? LSI-C80ってのあったけど、一時的にメモリ使ってた 80年代後期、6502系でCコンパイラ作ろうとしてた人がいたけど、その後どうなったんだろう?
老人ホームって喧嘩が多いらしいね。
922 :
919 :2012/06/02(土) 00:10:18.50 ID:BdpbpTCH
オレは旧ID:mAtQ72+o。 日付が変わったのでIDのテスト。
923 :
919 :2012/06/02(土) 00:12:03.76 ID:BdpbpTCH
>>921 そうだな。君の言うとおり。
>6809の命令のバイト数もサイクル数も違う見かけだけの直交性に騙されている奴は今でもいるんだな
<>どうせマイコンしか知らないくせに何がコンピュータ屋の設計だよw
↑これこそまさに他人に喧嘩売ってるセリフだよな。
924 :
919 :2012/06/02(土) 00:20:10.90 ID:BdpbpTCH
OR A, A を NOP と呼ぶのは直交性が低いでしょうか
その手のネタは逝ってる系が得意でしょ
フラグが変わる不思議なNOPです
直交性は歴史的概念ではないのでクラッシックにこだわる理由がわからないが、COSMACとかSC/MPとかMN1610とかどうですかね 4004の評価も聞いていない
MN1610はCPUとして認識されていません。
NS32032はどうよ
>>930 そんな新しい石はクラシックと呼べません。
DECのJ11はどうよ
コスマックやスキャンプはどうよ
Cu はどうよ
首の下はどうよ
金、銀、と来たら次は、 パールよ
>>931 16032はNSによれば68000より早かったらしい
TRONチップ辺りは、そろそろクラシックに入れて良い頃かな?
OSもろともtronはレガシー系にしたほうがいいような
パールが抜けてね?
金銀バールプレゼントっ!
あれ、当った人いるんか?
金銀バールのようなものプレゼントっ! だと、金なのか銀なのかバールなのかはっきりしなくなるな
バールが届いた…
最近はヘクトパスカルって言うんだよ。
ロッカーこじ開けんじゃねぇのか?
今でもやってるのかな。NHKの気象通報。小学校のとき夏休みの自由研究で毎日付けていたなぁ。
どうでもいいがPL/Mコンパイラは4004ターゲットもあるらしいぞ
952 :
774ワット発電中さん :2012/07/28(土) 14:45:10.94 ID:Bp19gHBm
いまだに、TLCS12Aで生産してる装置がある。
PL/M 懐かしいなあ。 4004 ってスタック3段とからしいのですぐにオーバーフローしそうだが… そもそもローカル変数とか使えるんか?
ローカル変数?何それ美味いの?って世界かと。
ローカル変数はCPU関係ないだろ
変態 CPU とか触ったことないでしょ。 4004 は、ハードウェアスタックで PC の退避専用だから、ローカル変数サポートしようと したらスタックとは別にそういう仕組みを用意しないといけない。 そもそも世の中には、汎用機のように (ハードウェアとしての) スタック持ってないマシン もあったりするし。
なんでメインフレームってそんな設計にしたんだろうな。 360の時にはしょうがなかったにしても。
普通に 360 を引きずってるだけだと思うが…
>>956 お馬鹿はお前だ。
ローカル変数をスタックフレームに置くかどうかは実装の問題であってハードアーキテクチャとは独立だろ。
>>960 再帰を考えなければスタックで実装する必要はないが再帰呼び出しもできないような「何か」なら
その中で使われる一時変数をローカル変数とは普通は言わない。
スタックも論理的には別にHWで実装されている必要はないが、push、popの操作が
アトミックになるように書かなければならず、実用的とは思えん。
まあとにかく、馬鹿が知ったような口を利くなと。
その実装の話をしてるんだが… 話についてこれないなら、絡んでくるなよ。
じゃあHWスタック使わずにどうやってローカル変数を実現するか言ってみろ馬鹿が
>>960 本当の馬鹿だったんだな。
リカーシブに使うからってスタックフレームに置く必然性はないし、仮にそうだとしてもHWの用意したスタックメカニズムを使わなければならないということも無い。
実用的云々はもう笑うしかない。
4004で高級言語の話を始めた時点で実用性は棚に上げた話だということもわからないのか。
おのれの知っている実装方法だけが全てと信じて知ったかぶり全開とはね。
>>964 グダグダ言ってねえでスタックを使わずにローカル変数を実装する方法を述べてください。
まあ無理しなくてもいいよ
>>965 ?
簡単じゃないか。
ソフトウェアでなんでもいいからスタック的なものを作れば。
>>962 は
>>960 宛ね
>>961 > 再帰を考えなければスタックで実装する必要はないが再帰呼び出しもできないような「何か」なら
> その中で使われる一時変数をローカル変数とは普通は言わない。
昔の COBOL や FORTRAN の手続きや関数内で宣言されている変数はなんて言うんだ?
> push、popの操作がアトミックになるように書かなければならず
大抵のマシンの push/pop 操作はアトミックじゃないけど?
馬鹿に突っ込むなら、もう少し勉強してからの方がいいと思うぞ。
push/popがアトミックじゃないCPUが一つでもあったら教えて欲しいわw 論外過ぎる
夏だなぁーと思わせる進行だ。 落ち着けよ。 火病を起こすな。
ARMってpush/popはSTRM/LDRMでやってるんじゃなかったっけ?
>>969 例えば 6809 で複数レジスタを push/pop したら、メモリーサイクル間に他の CPU やデバイス
(DMA とか) が割り込んでくる。
そもそもローカル変数の確保/解放がアトミックである必然性もないし、今時の CPU でローカル
変数の確保に push/pop なんて使ってる間抜けなコンパイラなんてそうそうないし。
大抵スタックポインタを操作するだけだよ。
何か知らんが久し振りにレスがあったと思ったらいきなり荒れまくりとはね。 そもそもさすがに4004じゃスタック以外にも限界ありまくりなんだから。 限界や実用性を無視しなきゃ何も話できないし、限界や実用性を無視していいのなら何でもできると言えばできる。 目くじら立てても仕方ないよ。
4004 だから、実用性無視はみんな合意してると思うよ。 その上でハードスタックとして戻りアドレス専用のスタックしか持たない 4004 でローカル変数実装 しようとしたら、今時の CPU に比べて面倒だから本当に実装してるのか? っていうなかに、 「CPU 関係ないとか」言い出す馬鹿がでてきただけの事。 まあ、荒れてると言っても夏休みだし、ネトウヨがいるわけでもないから、こんなもんでしょ。
ちょっと話題が違うよって言えばいいところでいきなり馬鹿とかいうから荒れるんだよ。 ここにいるのは必然的にいい歳した大人のはずなのにな。
2ch の全盛期を知ってる「いい歳した大人」から見て、とても荒れてるとは思えないんだが…
いい歳した大人って全共闘世代だろ むしろ荒れるのが自然だ
おれもpush/popしたい
先入れ中出し、後入れ外出し
4004ってアドレッシングも特殊だし(ROMはともかく、RAMが電卓用の 仮数と指数みたいな変な構成だったはず)さすがに例としてどうかと 思うぞ。
PUSH, POP各々の命令単位ではアトミックだけど、PUSH〜POPの命令ペアが アトミックな動作になるアーキテクチャは、世の中にはないのでは? ローカル変数の確保は、スタックポインタの演算ないし、x86系みたいに 専用のENTER/LEAVE命令がある。 DMAに関しては、1命令実行中のインストラクションフェッチや、メモリ バスサイクルの途中に割り込む可能性があるけど、CPUアーキテクチャと いうより、システムの設計依存な気が。
>>982 めちゃ久しぶりに、改めて見るが古臭いながらよく出来たデバイスだね。
>>981 >PUSH, POP各々の命令単位ではアトミックだけど
だから違うって
>>972 に書いてあるんだが。
ひょっとして、割り込みが入らない = アトミック とか言う、シングルコア脳の人なのか?
>DMAに関しては、1命令実行中のインストラクションフェッチや、メモリ
>バスサイクルの途中に割り込む可能性があるけど、CPUアーキテクチャと
>いうより、システムの設計依存な気が。
システム設計にももちろん依存するが、CPU アーキテクチャも必要。
詳しくは compare and swap atomic あたりでググって見てくれ。
>>965 アトミックという言葉を覚えて嬉しいことはわかるがもう少し勉強したほうがいいよ
//スタックを使わないローカル変数の実装(main関数その他は省略)
*void alloc_pointer=XXXX; //XXXXはハードウェア固有のアドレス値
//ポインタル変数 x,y,z が事実上のローカル変数として使用できる
void local_func(){
static int *x;
static short *y;
static char *z;
x = xmalloc(sizeof(int));
y = xmalloc(sizeof(short));
z = xmalloc(sizeof(char));
//(実際の処理)
z = xmfree(sizeof(char));
y = xmfree(sizeof(short));
x = xmfree(sizeof(int));
}
//メモリ割り当て
void* xmalloc(int x){
static void* t;
t = alloc_pointer;
alioc_pointer += x;
return t;
}
//メモリ開放
void xmfree(int x){
alloc_pointer -= x;
}
986 :
985 :2012/07/29(日) 16:50:31.83 ID:m58oaPdY
誤字、脱字はご容赦ください
良く見たら文法エラーorz、ゴメン今はこれが精一杯 >z = xmfree(sizeof(char)); >y = xmfree(sizeof(short)); >x = xmfree(sizeof(int)); ↓ xmfree(sizeof(char)); xmfree(sizeof(short)); xmfree(sizeof(int));
既に
>>967 に答え書いてあるし、
*void alloc_pointer=XXXX; とか、
z = xmfree(sizeof(char)); で、void の関数から値取得するとか、馬鹿すぎ。
「アトミックという言葉を覚えて嬉しいことはわかるが」なんて煽り入れるなら、
もう少しちゃんとやれや。
ソース修正後に「馬鹿すぎ」とか突っ込まれても困りますなw
>>985 ポインタのビット幅 = アドレスバスのビット幅とコアがネイティブに扱えるデータの
最大幅た一致しないCPUでは
alioc_pointer += x;
はアトミックじゃないから問題がある。
985の処理にアトミックとか言ってるところが 例題としては×
いやそもそも割り込みもない4004でアトミックとか言ってる時点でもう
993 :
.985 :2012/07/29(日) 20:39:35.60 ID:m58oaPdY
実際にはアセンブラで書くべきなんだろうね。
とりあえず
>>985 のソースは参考程度にしておいてください。
>alioc_pointer += x;
>はアトミックじゃないから問題がある。
一応コンパイラも作った経験者ですがその程度ならどうとでもなりますので・・・
なんだか、アトミックを理解していない、自称マルチプロセッサ搭載ゆとり脳が 混じっているな。
誰か知らんが早く埋めてスレ終了にしたがってる奴が居るな
>>985 atmic性云々は、無関係。
その記述だと、まったくリエントラントにならない。
なぜなら、func を実行中にもう一個funcのイスンタンスを呼び出そうとしても、
アドレスを保持している x,y,z の実体が一個しかないから。
正しい実装は、
static int *sp; // スタック用メモリーを指すように初期化しておくこと。
void local_func(){
static int x;
static short y;
static char z;
*--sp = x;
*--sp = y;
*--sp = z;
// 実際の処理
z = *sp++;
y = *sp++;
z = *sp++;
}
x = xmalloc(sizeof(int));
y = xmalloc(sizeof(short));
z = xmalloc(sizeof(char));
//(実際の処理)
z = xmfree(sizeof(char));
y = xmfree(sizeof(short));
x = xmfree(sizeof(int));
}
すまん、書き込みミス。 最後から2番目の}以降は不要。 マルチタスク対応するには、一連のpush/popをatomicにする必要がある。
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。