アセンブラ☆with C

このエントリーをはてなブックマークに追加
1_outp(0x03f8,0x2ch)
アセンブラ、Cなど。
関連スレ
アセンブラ…
http://pc2.2ch.net/test/read.cgi/tech/1060928704/l50
制御系なら俺に聞いてもいいぞ(4)
http://pc2.2ch.net/test/read.cgi/tech/1068869894/
2トコノイタンハ ◆WfuO0J/v7s :03/12/29 17:18 ID:Jzw7/sUv
2
3名無しさん@お腹いっぱい。:03/12/29 17:22 ID:2Y2JNKTT
>>2
THANKS☆
4狙いはイイんだが:03/12/29 18:05 ID:LlUVL6fY
>>1
0x2ch ってなんだよ


        と逝ってみるテスト
5名無しさん@お腹いっぱい。:03/12/29 20:25 ID:2Y2JNKTT
8bitcodeで2cHex
6名無しさん@お腹いっぱい。:03/12/30 23:30 ID:n5/bE3+R
>>5
それならアセンブラで0xぬいて2chがよかったな。
0xもhも入っているのは妙だぞ
71:03/12/31 11:39 ID:eqJCCHKS
アゲてみよう・・・
8名無しさん@お腹いっぱい。:03/12/31 22:05 ID:Fc/DyVjc
DJNZ
9名無しさん@お腹いっぱい。:03/12/31 23:39 ID:99tcyv4h
DI
EX (SP),HL
XOR A
LD H,A
LD L,A
PUSH HL;PUSH HL;PUSH HL;PUSH HL;PUSH HL;PUSH HL;
PUSH HL;PUSH HL;PUSH HL;PUSH HL;PUSH HL;PUSH HL;
10名無しさん@お腹いっぱい。:04/01/02 11:07 ID:RVXdpCfS
昔と違ってアセンブラ自体の機能が低くて、ほとんどコンパイラの
バックエンドと化してしまった今、withC(++)で使うしかないのか?

GCCのasmは便利だけど、変更リストに載せるレジスタを間違うと、
デバッグ困難なバグが出るんだよな。

あと、最近のコンパイラは同じ変数でもレジスタを渡り歩いたりす
るので関数の途中から飛び出して適当なところに飛び込んだりする
のが難しかったりする。トラップ処理ができないじゃないか!

といった話をするスレか?
11名無しさん@お腹いっぱい。:04/01/03 14:24 ID:jIveU4i/
>>9
Z80で一番高速なゼロクリアプログラムだねぇ。
メモリへの書き込みは、Pushが一番速いんだよな。
129:04/01/03 23:57 ID:Rd9faeO2
>>11

>メモリへの書き込みは、Pushが一番速いんだよな。
そうだったね。 昔のZ80のゲームで多用されたやりかた。

しかし自分で書いといて言うのもなんだが、

EX (SP),HL  じゃ意味無いし

XOR A
LD H,A
LD L,A は

LD HL,0 のほうがちょっと速いし

まあ、大晦日の飲んだくれカキコだから勘弁して。
13名無しさん@お腹いっぱい。:04/01/04 17:10 ID:7TP2fPKE
8・16ビットマイコンのデファクトってNECだと思ってたんだけど、
最近はH8とかSHなのかな。
14名無しさん@お腹いっぱい。:04/01/04 18:58 ID:FtsuTWhb
>>13
NECつうと78Kあたりですか?
漏れはV850とかVRしか聞かないなあ。
1513:04/01/04 19:04 ID:7TP2fPKE
>>14
78K0あたりがデファクトだと信じてたんですけど。
16名無しさん@お腹いっぱい。:04/01/04 21:50 ID:RYAM8Jaa
nasmとかmasm32とかTASM32とかRadASMとか
いろいろありすぎてどれ使ったらいいかよく分からん
17名無しさん@お腹いっぱい。:04/01/06 21:35 ID:LBodGd9m
なんでもいいよ。
ていうか、この板だと86系でアセンブラ組む奴は少数派な気がするな。
18名無しさん@お腹いっぱい。:04/01/06 23:53 ID:6kVXge8u
>>13
今は間違いなくH8->SH系だな。携帯電話での採用実績にはじまって、
ホビー用でもダントツ。トラ技の巻末の広告ページ見てみ。
H8/SH系のボード販売がどれだけ多いか。
で実際、picなんか使うぐらいならH8の方がよほど使いやすいよ。
ライターなんかなくても使えるし。ポートの数は多いし。
まともなOS載せられるし。
19名無しさん@お腹いっぱい。:04/01/06 23:58 ID:qSm1Imp9
>>18
うちはNECしかつかってないよ。
20名無しさん@お腹いっぱい。:04/01/07 20:22 ID:CdmwLwqH
19みたいなお客さんが居て、ソフトの費用がかさむのだよな。
H8はコンパイラのポリシーを理解し・かつ生かした良い石だとおもうよ。
21名無しさん@お腹いっぱい。:04/01/07 20:27 ID:r/H/fpCI
新しいCPUにすると開発環境に金かかるわけで。
現状で困っていないならそれでいいんでは?

NECのはフラッシュの書き込み回数少な過ぎなので
漏れは使いたくない。


2219:04/01/07 20:55 ID:MuHXWh9z
でも、トラ技の「実装技術館」(市販品の分解写真)
なんかを見ると、デジカメとかはNECのCPUが多いよ。
(消費電流の関係か?)
フラッシュ書き込み回数が少ないのは同意。
2319:04/01/09 01:26 ID:4M6G7WxB
違うスレに貼ってあったやつだけど、
ttp://www.assoc.tron.org/jpn/research/data/survey2002J.pdf
これを見るとやっぱり日立&32・16ビットがデファクトということになるのか。
2419:04/01/09 23:33 ID:xFzgbOXj
まぁ、いずれにせよソフト屋にCPUの選択権など無いのだが。
この前ハード屋に日立のCPUの方がいいと言ったら聞いてもらえなかった。
連続カキコスマソ。
25名無しさん@お腹いっぱい。:04/01/10 18:14 ID:YrdDEezm
>>24
じゃあ代わりにコストダウンしてくれよ。
2619:04/01/10 21:48 ID:FLQs3JCj
>>25
コストダウンしようとしてハードを
ソフトに置き換えるのってほんと大変なんだよ。
ハード屋さんは簡単に考えているようだけど。
27名無しさん@お腹いっぱい。:04/01/11 16:21 ID:XzGRXtGe
ただ単に「こっちのCPUの方がいい」とか言われてもなぁ。って感じなんじゃないの。
いくら使いやすいCPUでも、納期、価格、商社とのつきあいの都合、サポート、在庫管理の都合、
過去に開発した製品のしがらみ、購入済みの開発ツールの償却、社員が既に持っている
ノウハウ、その他諸々・・・。説得するにはいろんなものをひっくり返さないと。
やるとしたら、購買や資材や開発部門全体を含めた話し合いになるんじゃないの?
でもソフト屋ってそういう根回し自分でやらないんだよなぁ・・・。
28名無しさん@お腹いっぱい。:04/01/11 20:18 ID:uHLh5Apa
そうだね。
・商社とのつきあい
・購入済みの開発ツール
こういう、純粋に工学的でない要因もかなりのウェイトを占めてるね。
あと、設計者の好みっていうのもあるけど。
29名無しさん@お腹いっぱい。:04/01/13 11:02 ID:wPqxAEh/
>>28
入手性、廃品種にされやすいメーカーか(何年現行でいられるか)などのファクターもあるしね。
Z80が何年も現役で居たことを考えると、ある意味すごいと思う。今では純粋なZ80はなくなったけど、FPGAのipで生き残っていたりする。

コストダウンは、ソフトも判るハード屋とハードも判るソフト屋がいないとぜってー無理。
ハード屋は自分の作ったハード用のソフトを書いてみて、ソフト屋は秋月なんかのキットを買ってきて組み立てながら、ハードの勉強をすべき。

アセンブラは68系の方が綺麗だけど、Z80は直交性にかける部分があったし
30名無しさん@お腹いっぱい。:04/01/13 11:32 ID:jC3uGcWu
>>29
ザイログから未だに売っているんだけど。シルクが黄色いやつ。
使い道はパチスロのサブ基板。でも、このサブ基板も川鉄KC80とか、H8とかに
移行しているから、マジ無くなるのは時間の問題。
31名無しさん@お腹いっぱい。:04/01/13 11:54 ID:wPqxAEh/
>>30
罪ログって一度倒産してるよね。まだ存続してるんだ。びっくり。
パチスロのメイン基板の設計はしていたよ、6年位前。LEテックのしか使えなかったからなあ・・・
32名無しさん@お腹いっぱい。:04/01/13 14:28 ID:jC3uGcWu
>>31
有名どころのスロは、LE2080とかが使えるけど、日電協非加盟のスロは、
今でもZ80を使ってるよ。
予断だけどLE2080高すぎ。3社の合弁会社ぼり過ぎ。ああいう
天下り会社は根絶して欲しい。
33名無しさん@お腹いっぱい。:04/01/13 15:30 ID:wPqxAEh/
>>31
勤めていた会社は業界最大手なので、LEしか使ってませんでした。やきとりね。
NDKよりSECTA(保通協)の顔色伺いの方が大変だった記憶しかありませんねえ。
(まあ、子会社でいろいろいろ悪さしたしなあ。)

昔は6802とか色々使えたんだけど、最近はつまらないですなあ。

高いのもあるけど、アーキテクチャが微妙に気色悪いLE系チップ(詳細は契約上ここでは言えないけど)。


34名無しさん@お腹いっぱい。:04/01/13 15:32 ID:wPqxAEh/
>>33
(まあ、子会社(沖スロ)がいろいろいろ悪さしたしなあ。)
でつ。わたしはやっていないーけっぱーくだー♪。
35名無しさん@お腹いっぱい。:04/01/13 18:04 ID:NO6m/6EV
アセンブラ勉強するのにいいHPない?
hello,worldレベルから教えてくれる所キボン
36名無しさん@お腹いっぱい。:04/01/13 18:09 ID:j6MaT2vk
37名無しさん@お腹いっぱい。:04/01/14 23:09 ID:0aKndqJt
MSXって、使うのにライセンス料とかいるんですか?
38名無しさん@お腹いっぱい。:04/01/15 08:45 ID:bgvbOdIX
>>37
秋月C基板サイズのMSXって売らないかなあ・・・
39名無しさん@お腹いっぱい。:04/01/15 10:50 ID:DUbfeMMC
>>37
市販のMSXはメーカーが製造時にライセンス料(名称利用料とMSX-BASIC利用料かな?)を払っています。
>>38
1chipMSX開発してる人居るので可能性はあり。
40名無しさん@お腹いっぱい。:04/01/25 22:11 ID:zHfhJf4O
状態遷移処理って、関数テーブルでやってます?
それとも、switch〜caseでやってます?
41774ワット発電中さん:04/01/26 07:35 ID:Dw2GpjUw
>>40
ケースバイケースでしょう。
状態数が少なければswitchでもいいけど、漏れはテーブルかなぁ。
テーブルの方が保守性がよいし。
42774ワット発電中さん:04/01/26 09:32 ID:aoPfhFKY
漏れはswitchかな。
あらぬ値でテーブル引いてとんでもないところに飛ぶ
危険性がないのと・・・・・昔のCコンパイラは結構バグが
多くて、そういう出現頻度の少ない記述をすると間違え
られたりしたのがトラウマになってる。

ビットフィールドもバグの巣窟だったなぁ。
M$-Cは式が複雑になると途中で勝手にやめてエラーも
出さずに「ちゃんとコンパイルした振り」をしていたのも
印象的。
4340:04/01/27 20:22 ID:Hcqb8kh3
>>41そういえば私もケースバイケースですね。
状態遷移のマトリックスが小さいときはswitch〜case、
イベントが多くなってきたらテーブルとか。
確かにテーブルの方が各処理が小さくなって保守しやすいという面はありますね。手間はかかるけど。
テーブル使うときは>>42が言うように、dでもないところに飛ばないように、
テーブルを呼ぶ前に範囲チェックしたりしてましたね。
最近は、やらなくなったけど。

ところで、単体デバッグとか、どの程度真面目にやってますか?
私は動けばOK程度のデバッグしかやってないですけど、
ちゃんと入出力決めて記録残して系統立ててやってますか?
44ココ:04/06/08 15:41 ID:2+x/gTXD
カレン
45電鍵4種:04/06/10 11:40 ID:OYatlf5A
>>43
まず仕様書ってのがあるでしょ。
最低これは満足させなきゃならんでしょうね。
しかしこれで充分ではないっす。
よいコーディングの条件の一つは、頑丈なことですな。
仕様書以外の使われ方をしてもフリーズとかの異常動作に陥らないことが大切ですな。
そういう条件をまず洗い出す。大変だけどね。
それをやっとけば現場で混乱を起こすことがすくないっていうもんだにゃ。
まあ、他にもあるけどにゃ。
46774ワット発電中さん:04/06/13 21:06 ID:o4YBnvko
>>40
switch-caseで可読性が悪くなったらStateパターンに移行するってのは無しですか?
47774ワット発電中さん:04/06/13 21:15 ID:lNDfOMvy
>>40
switch-caseよりelseifのオンパレードの方が好きだな。
融通が利くし、break要らないし。
48774ワット発電中さん:04/06/25 02:05 ID:0zbbbtSc
SYSTEM-C SpecCのスレはここ?
誘導してくんろ、ここの人たちだったら誘導してくれると・・・
49774ワット発電中さん:04/06/25 02:08 ID:VsbotbNA
>>48
SystemC、SpecCについてのスレ
http://science3.2ch.net/test/read.cgi/denki/1072282085/
50774ワット発電中さん:04/06/25 03:40 ID:0zbbbtSc
まじであったんだ。
感動したありがと。2chってすごすぎ
明日も仕事だ、お互いがんばりましょ^^>49
51774ワット発電中さん:04/06/26 14:10 ID:wy2ZBpNS
>>47
インテルコンパイラforX86だとif-elseの方がほーーーーーーーーーーーんのちょぴっとだけ早いんだよな。
52774ワット発電中さん:04/06/26 16:12 ID:krqpEQHB
>>51
intのサイズとCPUの扱えるサイズが一致してればcaseいいが、
8bitなCPUだとcaseが16bit扱いとなりでかく遅いコード吐くものがあった
53774ワット発電中さん:04/10/26 08:21:58 ID:cH+THBLC
hosyu
54テヌト&rlo;(^^)&lrl;:04/11/01 19:51:32 ID:/EXBP7qI
テヌト
55テヌト&rlo;(^^)&lro;:04/11/01 19:55:45 ID:/EXBP7qI
テヌト
56774ワット発電中さん:04/12/03 13:39:16 ID:xrvj4nWe
age
57774ワット発電中さん:05/03/18 01:58:16 ID:taw/j0pz
 ホシュ
58774ワット発電中さん:2005/04/25(月) 22:57:12 ID:T/q17Fe9
H8のGCCってビット操作命令吐かないんだな。
知らなかった。もっとかしこいと思ってた。
59774ワット発電中さん:2005/04/26(火) 01:03:25 ID:JTCfgpDO
H8 のビット操作命令って 8bitレジスタ縛りのBSET 1, R0 みたいな命令セットだっけ、
たしか H8 -> SH-3 にアセンブラレベルで移植してたときに
SH ってビット操作命令 (BSET/BCLRタイプ)がなくて愕然としたことがある。
まあH8の場合16bit/32bitのビット操作のときどうするかという一貫性の無さあたりで
採用してないんじゃないかと思います。
ビット操作命令がないCPUもあるからいっそのこと不採用ということじゃないかな。
嫌なら改造しろって感じかな
そういえば最近のGCCが吐くARMのコード見てるけどちょっとおバカさんと
おもいますね。かといって70万もするARM C(RealView)は買ってもらえないし、、
60774ワット発電中さん:2005/04/26(火) 10:51:52 ID:PEtTS7Zp
3.4あたりから吐いてくれるはず。
どういう条件だったかな。
61774ワット発電中さん:2005/04/26(火) 13:05:39 ID:Uhacskkt
i
62774ワット発電中さん:2005/04/26(火) 13:08:45 ID:wzAJpFPs
SH ってビット操作命令 (BSET/BCLRタイプ)がなくて

AND/ORで代用できてしまうからでは?
63774ワット発電中さん:2005/04/26(火) 13:24:09 ID:KOnC2Det
>>59
どのメモリ・IOレジスタに適応できるかは機種依存
→どうせ機種依存ならインラインアセンブラでも使えよ
ってことかな。
64774ワット発電中さん:2005/07/11(月) 01:28:08 ID:RBc48nts
むかし外注で某大手のソフト屋に仕事やらせたら、
こいつビット演算知らなくてif文の嵐になったことがあった。
一画面のルーチン漏れが書き直したら2行になった。
アンナ香具師でもソフト屋やってられるんだなぁ・・・と
思ったのどした。
65774ワット発電中さん:2005/07/11(月) 11:20:38 ID:EiazQauA
大手にひどいのはいっぱいいる
66774ワット発電中さん:2005/07/12(火) 01:24:15 ID:7p5K8Wr/
アセンブラで条件分岐しないプログラムで
16進文字('0'〜'9'、’A'〜’F''/'a'〜'f')からバイナリへの
変換をやってのけるというのにはちょっと感動したっけ(遠い目)
67774ワット発電中さん:2005/07/12(火) 08:16:44 ID:ffDHrjUr
10進補正かなんか使うやつ?
68774ワット発電中さん:2005/07/24(日) 22:18:53 ID:NR4v1/Xu
俺も、どうすればこんなトリッキーなコードを思いつくんだよと悩んだことある。
20年くらい前か。草の根BBSで意味を教えてくれた偉い人ありがとう。
69774ワット発電中さん:2005/08/20(土) 18:19:43 ID:lq8Pd+k7
出来ればそのコード晒してくんろ。
70774ワット発電中さん:2005/08/20(土) 22:46:39 ID:G+/ioXer
>>66
俺が見たのは逆だった。バイナリから16進文字。
確か、トラ技Special(Z80のなんとか…)だったような。
71774ワット発電中さん:2005/08/21(日) 00:41:54 ID:QRhQGSvx
AND A,0FH
ADD A,90H
DAA
ADC A,30H

これで合ってるかな?
72774ワット発電中さん:2005/08/31(水) 00:21:09 ID:4WJ2sZGh
xorでmovするのもあったな。
73774ワット発電中さん:2005/10/22(土) 11:40:06 ID:EBtvgNBQ
#asm
#endasm

アセンブラでプログラム組んでやったぞ。ほめろ。
74774ワット発電中さん:2005/11/07(月) 01:17:30 ID:EoikqVge
86系のアセンブリ言語とH8系のものとの違いが分からない
75774ワット発電中さん:2005/11/07(月) 17:37:32 ID:vJnlw3nG
その二つだけを比べてもだめだ。
もっと色々知ってれば分かるよ。
76774ワット発電中さん:2005/11/26(土) 23:00:05 ID:riOKdcq9
>>74
ソースとディスティネーションの順序が逆
■86系
mov dst,src
■H8系(モトローラ系)
mov src,dst
CELLのアセンブラ仕様書見たけどさっぱり分からなかった。
77774ワット発電中さん:2005/11/27(日) 01:35:43 ID:5Mn3mFfI
ときどき表見ながらアセンブラ使います。
命令表をでっかく印刷して壁に貼ろうかな。
左手に持ってると邪魔。
78774ワット発電中さん:2005/11/27(日) 03:15:04 ID:LTbbQSF6
↑ブゲラ
79774ワット発電中さん:2005/11/28(月) 05:32:01 ID:e3u+HS9V
アセンブラやC言語は 独学で勉強できますか? おすすめの参考書とかありますか?
80774ワット発電中さん:2005/11/28(月) 05:35:16 ID:cMmIEPd7
独学出来ますが、言語だけじゃなくハードウェアや
コンピュータサイエンスのバックグラウンド的知識を
同時に増やすことが言語を覚えることより重要です。

とにかくたくさん実際に使われているソース読むのがいいよ。
81774ワット発電中さん:2005/11/28(月) 07:34:33 ID:e3u+HS9V
つまりは 電気・電子工学(ハードウェア)+アセンブラ・C言語 コンピューター(ソフトウェア) を勉強したほうがいいと ハードウェアの独学勉強は難しそうですね 専門学校等に行くのがいいですかね できたら
82774ワット発電中さん:2005/12/12(月) 01:23:06 ID:J1XmkRSs
話豚切るけど、アセンブリ言語でプログラムしたたくさんいると思うけど、
その「アセンブラ」自身を作ったことある人いる?
83774ワット発電中さん:2005/12/12(月) 01:30:22 ID:+nPISruN
ディスアセンブラとデバッガなら作ったことあるす。
84774ワット発電中さん:2005/12/12(月) 01:34:40 ID:J1XmkRSs
>>83
即レスサンクス。
頼もしいですね。漏れも逆アセンブラはZ80用を作ったことあるよ。
モニタROMに入れたもので、わずか2Kだけど、ちゃんとラベル付き
だった。
デバッガは、まあ、「モニタ」と呼べるものなら作ったかな。ブレーク
ポイントとかシングルステップとか、そんな機能を作るのも楽しかった。
マルチタスクモニタでもそれを出来るようにしたこともあったっけ。

んで、アセンブラ作ったことある人、さらに募集!
85774ワット発電中さん:2005/12/12(月) 01:35:35 ID:9nMX3NKz
>>82
クロスアセンブラなら作ったことある。
プログラムの構造はさほど難しくないけど、
全命令に対応しようとすると、単純コーティングの繰り返しで飽きてくる.w
8682:2005/12/12(月) 01:41:57 ID:J1XmkRSs
>>85
おおっ、こちらさんも即レスサンクス。
そうですね、アセンブラは、作ったことのない人から見ると、ちょっと難しいように
感じるかもしれないけど、一度そのやり方(パス1とかパス2とかの分担)が分かれば、
比較的簡単ですものね。
私も、Z80用、6502用、Z8用など、いくつか作りました。もう二十年以上も昔
の話です。当時は、開発ソフトそのものにも事欠くことが多かったので、アセンブラ
をまず作ってから、それを元にして開発するということもありました。
初めて作ったときは二、三週間かかったのですが、2回目以降は手慣れてきて、
早いときは二、三日で出来たりしてましたね。
一番面白かったのは、被演算子の処理で、逆ポーランド記法に変換して数式を
使えるようにするような処理でしたね。あれは勉強になりました。
8783:2005/12/12(月) 01:47:15 ID:+nPISruN
>>86
動作する機種は?やっぱりPC-9801かな。

おいらはZ-80と6502のエミュレータも作ったす。
MSXエミュとファミコンエミュなんすけどネ。
88774ワット発電中さん:2005/12/12(月) 02:51:50 ID:LMZPxCUK
逆ポーランド・・・・高齢者スレですか。(w
89774ワット発電中さん:2005/12/12(月) 03:10:20 ID:dKiaIKDO
私も20年ほど前、高校に入った頃にMZ上でZ80用のアセンブラを作ったな。

私も、最初にBASICで多用する命令だけに対応したアセンブラを作り、
それを使って、アセンブリ言語で書いた一部の命令だけに対応した
アセンブラをアセンブル。
今度はそれを使って対応する命令を増やしたものをアセンブル・・・・
という風に次第に対応命令を増やしていった。
もちろんOSなんて持ってないからソースはBASIC自身のエディタで
入力してASCIIセーブ。

なにしろ最初のBASICで書いたものはその次の一部命令にしか対応していないものを
アセンブルするのにも20分も30分もかかっていたのでデバッグが大変だった。
次にアセンブリ言語で書いたものは自身を1分かからずにアセンブルしてくれたので
一気に作成がはかどるようになったっけ。

ついでに、作るのに使った資料が何かの雑誌に載ってた数ページの
インストラクションセット表だけ。
これからコードマップ作ってビットパターン抽出して・・・と
まっとうな資料さえ手に入っていたら必要ない手間までかけてでも
作れたのも若かったからでしょう。

その後はオリジナル言語のコンパイラを作ったりもしましたが、
最終的に行き着いた先はゲームのプロテクト解析とかエロゲの
CGフォーマット解析とか.....orz
90774ワット発電中さん:2005/12/12(月) 04:53:00 ID:5HVRx2Mp
おまいらお取り込み中のところ申し訳ないが禿しく板違いだ

以降はこちらで
http://pc8.2ch.net/test/read.cgi/tech/1132761638/
91774ワット発電中さん:2005/12/12(月) 23:52:32 ID:yAPsHkcz
>>88
なんか勘違いしてんでない? 逆ポーランド記法への変換は
現在の進化したコンパイラでも必ず採用されているんだけど……。
92774ワット発電中さん:2005/12/13(火) 02:07:56 ID:33CFOkJE
今時は二分木ですね。
逆ポーランドと等価だから変換されてると言えなくは無いが違う。
93774ワット発電中さん:2005/12/13(火) 03:14:49 ID:VEFSYcx+
>>92
?? 
二分木は逆ポーランド記法に変換するための手段のひとつとして使われる
が、逆ポーランドが使われないというのはおかしいと思うが?
94774ワット発電中さん:2005/12/13(火) 21:12:52 ID:33CFOkJE
二分木は逆ポーランド記法に変換するための手段のひとつとして使われる
ことには同意しますが、逆ポーランド記法が使われている訳ではないでしょ
95774ワット発電中さん:2005/12/13(火) 21:51:40 ID:aX0G4snX
コンパイラ言語は、一旦、中間言語であるアセンブリ言語に変換され、それを
さらにアセンブラにて機械語に変換します。
アセンブリ言語に変換される前段階として、一時的に逆ポーランド記法に変換
されるのが普通です。その変換の手段としては、二分木もあれば、他の方法も
あります。
96774ワット発電中さん:2005/12/14(水) 10:48:27 ID:/1S1QnJ+
それを中間言語というのは抵抗ありますなあ。
97774ワット発電中さん:2005/12/14(水) 15:32:44 ID:sFTtc1zm
>>96
考え方次第でしょ。
あなたは、インタプリタがご専門かな? だとすると、ワード数の少ない中間言語に
変換するというのが普通ですから、それがあなたにとっての「中間言語」なのかもしれ
ませんね。
コンパイラ作ってる会社は少ないので、事業所毎に呼び名は変わりますから。
98774ワット発電中さん:2005/12/14(水) 21:04:18 ID:jfEKGvw2
4つ組みたいなのを逆ポーランドって言ってる?
(+ op1 op2 result) <- こういうの
99774ワット発電中さん:2005/12/15(木) 00:03:30 ID:DomJKVjC
op1 op2 + .

↑こういうのですよ
100774ワット発電中さん:2005/12/15(木) 04:57:42 ID:mbshYXnx
Forthナツカシ
101774ワット発電中さん:2005/12/15(木) 20:36:54 ID:IRZlGeYQ
>>99
そんな逆ポーランド中間語でどんな処理をするの?
出てくる状況が分からない…
102774ワット発電中さん:2005/12/16(金) 14:02:35 ID:MS1wPxSL
>>101
コンパイラが扱う式
c = a + b;
をアセンブラに展開するときに
b a + c (Forth忘れたので記述違ってたらごめんなさい)
というように逆ポーランド記法に直すと
記述の順番にアセンブラ命令で書いていけばいいということ。

つまりコンパイラの内部処理で使われているだけなので
中間語なんていうと誤解しやすいかも。
103774ワット発電中さん:2005/12/16(金) 22:59:13 ID:gdGBOovU
最適化用の中間語からアセンブラコードを吐くのに大した苦労も要らない
が、いちいち逆ポーランドに直すとそれよりいいことがあるのか?
現代の進化したコンパイラというのは分からんなあ。
104774ワット発電中さん:2005/12/17(土) 11:56:18 ID:g5Xbr1jK
もしかして FORTH が中間言語だと勘違いしてるアフォ (== >>102) がいる?
105774ワット発電中さん:2005/12/17(土) 23:19:41 ID:63NvgCgF
>>104
>>102のどこをどう読んだらそんな解釈になるんだ?

とりあえず>>88から一通り読んで理解できてない奴は勉強不足だ。もっと本読め。
課題図書はコレだ。
ttp://www.iwanami.co.jp/.BOOKS/01/5/010341+.html
106774ワット発電中さん:2005/12/18(日) 17:09:04 ID:8NqL84aE
>>105
全部読むのは面倒だから、逆ポーランドに変換するとどんな利点があるのか
書いてよ。必ず採用されているような一般的な処理なんでしょ。
107102:2005/12/18(日) 18:04:11 ID:XdB135b8
>>106
(逆)ポーランド記法 > http://ja.wikipedia.org/wiki/%E5%89%8D%E7%BD%AE%E8%A8%98%E6%B3%95
なにもむずかしく考える必要はない。
一般的な数式を、機械語に直す手前の段階に変換したときの状態をあらわす記法が
逆ポーランド記法というだけのこと。
コンパイラはどんどん進化しているから逆ポーランド記法が厳密にコンパイラの処理状態を
表しているわけでもないが、教科書的にその状態を表現するなら逆ポーランド記法、ってことかな。

ちなみに

中間言語 > http://ja.wikipedia.org/wiki/%E4%B8%AD%E9%96%93%E8%A8%80%E8%AA%9E
もとは言語学分野の専門語でありコンピュータ分野ではあいまいな意味で使われているので
この言葉に条件反射的に反応すると突っ込まれやすいから注意。

Forth > http://www2.airnet.ne.jp/sardine/langs/Forth.html
逆ポーランド記法をベースにした文法のコンパイラ。
実装が簡単なことからコンパイラの黎明期に有名だったが今は殆ど死滅している。
ただし文法がユニークなのでHPの逆ポーランド記法電卓と同様根強いファンがいる模様。

言葉足らずだったが こんなところで理解してもらえるかな >>105
108102:2005/12/18(日) 18:07:27 ID:XdB135b8
失礼、最後は
言葉足らずだったが こんなところで理解してもらえるかな >>104
の間違いでした。
109774ワット発電中さん:2005/12/18(日) 19:30:21 ID:8NqL84aE
>>107
ドラゴンブックの頃の知識しかないのだが、数式などは構文解析後に直接
中間語(仮想マシン命令みたいな物)に落ちる。その間に逆ポーランドは
でてこない。
その中間語をいじくって最適化した後に対象マシンのアセンブリ言語命令
列などを出力するわけだが、手間などほとんどない(そのように中間語を
設計する)。

進化したコンパイラで逆ポーランドが必ず出てくるのはなぜ?
なにか利点があるからなんだろう。利点を説明してよ。
110774ワット発電中さん:2005/12/18(日) 20:20:16 ID:4RjKmAne
>>109
うはwwwおkwww把握

うむ数式なら構文解析の時点で優先順位を判定するからなぁ。
逆ポーランド記法ってどの時点で使うんだろう?
まぁ解析完了時のスタック状態は逆ポーランド記法的な状態になってるわけだが。

数式以外は知らん。実装してみようとしたこと無いからな。
111774ワット発電中さん:2005/12/18(日) 21:28:17 ID:aCXqF+ap
> まぁ解析完了時のスタック状態は逆ポーランド記法的な状態になってるわけだが。

ようするにそういう状態を表現するために逆ポーランド記法って言葉が使われるだけですね
コンパイラは作ったことないけどプログラム中で数式解析をするときもYacc&Lexを使うから
逆ポーランド記法なんて意識することないしな。
112774ワット発電中さん:2006/08/22(火) 04:34:12 ID:erjNAnxn
age
113774ワット発電中さん:2006/08/23(水) 19:17:08 ID:GyPUvUPL
>>111
言ってることわからん
114774ワット発電中さん:2007/03/01(木) 13:27:07 ID:V3QVw0/I
逆ポーランドの利点は書かれた順番に実行すればよいという単純さで条件分岐が必要ないので
現在のCPUのパイプラインにもやさしい、つまり高速化に貢献できるってことじゃねえ?
115774ワット発電中さん:2007/03/04(日) 23:23:46 ID:FqC3H6RA
ヒント:2年前
116774ワット発電中さん:2007/11/23(金) 15:17:20 ID:IyWGSytf
アセンブラ言語でスイッチの二度押し、長押しを判定する入力を考えているんだけど
フローチャート(概念)でやるのが一般的なんでしょうか?
趣味レベルの電子工作なので、改めてC言語を覚えようとは考えてません。
pic、H8はなんとか使えます。

普通に考えると
スイッチ入力→タイマー500msec以内→スイッチ入力→二度押し
スイッチ入力→タイマー500msec以上→スイッチ入力が続く→長押し
とかでなく、バックグランドでカウントさせるようなのを考えてます。
117116:2007/11/23(金) 15:18:39 ID:IyWGSytf
訂正

フローチャート(概念)でやるのが一般的なんでしょうか?

どのようなフローチャート(概念)でやるのが一般的なんでしょうか?

判りにくい文章ですみませんm(_ _)m
118774ワット発電中さん:2007/12/08(土) 07:52:19 ID:1RMGtqGS
>>116
忘れた頃にレス。

他のこともしなきゃいけないから、インターバル割り込みで、数を数えさせる。
それで一定数数えたら、状態遷移させる。
キーのイベントで割り込みかけると、想像以上に面倒。
概念の整理に、フローチャートは、あまりお勧めしない。

趣味なら、アセンブリ言語でガリガリプログラムしても、あまりメリットがない。
プロなら1ランク下のCPU 使ってコストダウンとか、銭金の賭かった話だが、
アマなら、C言語で楽した方が良い。特に癖のあるPICやH8は、ミスしやすい
ので、設備と腕のないアマチュアだと、デバッグで地獄を見るかも。

Cで書くと、フローチャートなんか書かなくていいし、コード生成も、実際には
ズブの素人の書くアセンブリ言語のコードよりコンパクトで高速のことが多い。
119774ワット発電中さん:2008/01/26(土) 01:41:50 ID:l0nrnG90
アセンブラで
0b00000001→0b00100000
0b00000100→0b00001000
のように6bitのbitの入れ替えでスマートな書き方ありませんか?
120774ワット発電中さん:2008/01/27(日) 17:40:06 ID:ZH3zYf7d
CPU次第(というか使える命令セット次第)
121774ワット発電中さん:2008/01/27(日) 17:45:18 ID:ZH3zYf7d
32ビットの乗算と剰余算が使えるなら

  mul acc, 0x0008 2082 ; 0x0008 2082を掛ける
  and acc, 0x0112 2408 ; 0x0112 2408のbitwise-and
  rem acc, 0x0000 00ff ; 0xffの剰余

の3命令で、accの下6ビットのビット順を反転できるらしい。
もし8ビットマイコンレベルでやるなら、6ビット程度なら素直にテーブル引いたほうが
いいと思うが。
122119
>>120-121
PICです、無い頭使っても思いつかなかったのも
無かったということですね、ありがとうございました