アセンブラ… (°Д°)ハァ?

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
アセンブラ全般に関するスレッドです。

【前スレ】
アセンブラ… (;´Д`) ハァハァ
http://pc5.2ch.net/test/read.cgi/tech/1087897801/
【過去ログ】
アセンブラ… (゚д゚)ウマー
http://pc2.2ch.net/test/read.cgi/tech/1060928704/l50
アセンブラヽ(`Д´)ノモルァ
http://pc2.2ch.net/tech/kako/1040/10402/1040297337.html
アセンブラヽ(`Д´)ノモルァ
http://pc3.2ch.net/tech/kako/1016/10169/1016991911.html
アセンブラ… (・∀・)イイ!
http://pc.2ch.net/tech/kako/1002/10022/1002267809.html
アセンブラ… (*´д`*)アハァ…
http://pc5.2ch.net/test/read.cgi/tech/1076157613/l50

3デフォルトの名無しさん:04/08/26 20:33
終了
−−−−−−−−−− 再開 −−−−−−−−−−−
NASMの日本語マニュアルのサイトは無くなったのですか?
7デフォルトの名無しさん:04/08/26 22:53
>>6
ありがとう
8デフォルトの名無しさん:04/08/27 08:22
新スレきたー!
早杉棚
10デフォルトの名無しさん:04/08/27 09:32
(°Д°)ハァ?
vc++のインラインアセンブラをgcc(AT&T形式)に変換したいのですが,
参考になるHPが本はありませんか?
教えてください.
出力ソースの先頭に
.intel_syntax
の行を入れて、
セグメント指定を変更
ラベルやデータの形式を変更
が楽っぽい。
1311:04/08/27 14:06
>>12
gcc -S ***.cの出力ソースをいじれって事?
付け焼き刃の漏れではできない気がする.
すんません.
とりあえずアセンブラの形式を変換する
下のHPを見て書き直してるんですが,
インラインアセンブラではないので
うまくいく自信がないorz
http://www.codeproject.com/cpp/gccasm.asp

話は違うけど前スレ>>912に -masm=intelオプションを付けると,
書いてあったけど.linux(gcc3.23)のmanに載ってない.
cygwinだけしか使えないのか?

1411:04/08/27 14:17
>>13の続き
上の"インラインアセンブラではない"
という書き方はおかしかった.
HP内の記述を
%eax -> %%eax
に変換しないとcのソースファイルが
コンパイルできない,
と言うことが言いたかっただけです.
gcc 3.3.2なら-masm=intel出来たよ。

つーか、試してみなよ。
gcc 3.xなら、-mintel-syntaxかどっちかが使えるんじゃないかと思うけど。
1611:04/08/27 19:07
>>15
option(-mintel-syntaxなど)は使えているようだけど,
適当なVC++のインラインアセンブラのコード
を持ってきてもエラーがでる.

たぶん自分でどう変えれば良いか分かってない.
>>12>>15さんすまん.
地道にAT&T形式に変えてみる.
17デフォルトの名無しさん:04/08/27 21:35
スレタイの顔文字が怖い
18デフォルトの名無しさん:04/08/27 21:41
(°Д°)ハァ?
( °д °) ポカァァン
ハァ?っていうより

(°Д°)<ひでぶっ

って顔だよな
>>20
そりゃお前の顔だろ。

んなことはどうでもいいんだが、前スレ使い切ってからこっちに移行しろよ。
22デフォルトの名無しさん:04/08/27 23:13
(°Д°)ハァ?
↑ゾンビみたいで怖い
アセンブラのアンチスレだと聞いて来たのですが、
ここで (°Д°)ハァ? (°Д°)ハァ?してもいいでつか?
↑ COBOLER
>>23=Java厨
>>23 == VB房
COBOL世代ならアセンブラも普通に使えるだろ
いや、コボラがアセンブラなんか使えるわけないってことだろ。
コボラってCPUが直接COBOL命令を実行してると思ってるんだからさ。
アセンブラが難しいと思ってるやつって
若い奴だけだろ
(°Д°)ハァ?
(°Д°)ハァハァ?
(;´Д`) ハァ
ん?
(*´д`*)ハァハァハァアハァ
>>28
そういうCPUなかった?
35前スレの名づけ親:04/08/28 22:13
アセンブラ… キタ━(゚∀゚)━!!

で立て直して貰えませんか?
つーか次スレ立てんの早すぎ
37デフォルトの名無しさん:04/08/29 10:17
>>35
でしゃばんな
つか、このスレ立てたのただの荒らしだろ
39デフォルトの名無しさん:04/08/29 13:30
何を今更
一応まともなスレなんだから、このスレは削除依頼スレ。
ちゃんとしたタイトルで建て直ししる。
前スレ、単にアセンブラというスレタイの割にはx86のアセの話題しか出てないような。

Winでしかコード書いたこと無い奴ってこういう「平家にあらずんば人にあらず」
みたいな傲慢さというか井の中の蛙ぶりに気づいてない奴が多いよな。

ていうか、この板の平均年齢って案外低いのかな?
平均がいくらか知らんが、>>41は平均以上だろうな
40ぐらい?
わけのわからん煽り乙。
>>41
>x86のアセの話題しか出てないような
>Winでしかコード書いたこと無い奴って
いやお{犬,馬}様も同じだろう
同じUNIXでも、NetBSDユーザなら68kやMIPS,SPARCと
ユーザはいろいろなんだけど。彼等は殺伐としていて
会話をしないし。
45デフォルトの名無しさん:04/08/29 14:04
そろそろ
アセンブラ総合スレ Part7 キタ━(゚∀゚)━!!

とかって名前で立てませんか?特定のハードウェアに
限定しないスレとして。x86の話題が多いのは、
ユーザ数が多いから当たり前。もし要望があれば、
x86だけで独立してスレ立ててもいいし。

あと関連スレとしてこんなのが既にあります。

【糞】Pentium4最適化への道
http://pc5.2ch.net/test/read.cgi/tech/1026356711/
PowerPCアセンブラに関するスレ
http://pc5.2ch.net/test/read.cgi/tech/1036174059/
制御系なら俺に聞いてもいいぜ(5)
http://pc5.2ch.net/test/read.cgi/tech/1079102543/
アセンブラ言語 CASLUを語るスレ
http://pc5.2ch.net/test/read.cgi/tech/1033876116/
PICアセンブラ統一スレッド
http://pc5.2ch.net/test/read.cgi/tech/1060182978/
これもそうかも
GNU Assembler勉強スレ
http://pc5.2ch.net/test/read.cgi/tech/1036722498/
>>45
たててちょ、オレの所のプロバイダからだと建てられんので。
>>47
前スレがまだ950にもいってないから、
もうちょっとしてから立ててみる。
このスレ系列なら970で適正だと思うが(ぶっちゃけ、990超えてからでも遅くは無い)
(°Д°)ハァ?
やっぱりPICマイコンだろうよ。
BASICとかCとかあるらしいが、メンドクサイので、アセンブラ。
Linuxで使えるアセンブラを書くのに適したエディタってある?
viでもいいんだけどさ。
Vimおすすめ
54デフォルトの名無しさん:04/08/30 10:03
(°Д°)ハァ?
55デフォルトの名無しさん:04/08/30 10:58
>>45
このスレでいいじゃん

スレタイが気に食わないとか、そういうお子様な理由は通らないよ
>>55=1=荒らし
変なタイトル付けると厨房が寄り集まってきて最悪なんじゃボケ 一回死んでこい
>>56
違うよバーカ
>>58
その反応の異様な早さ。やっぱりクズだな
(°Д°)ハァ?
あと2日・・・
62デフォルトの名無しさん:04/08/30 12:39
で夏休みが終わります。┐(゚〜゚ )┌ヤレヤレ
V800 カモーン!щ(゚ε゚щ)
V800って使ってみてどう?
PC-FXのCPUか?<V810
今はもうV850じゃないの?
NECの石なんぞ久しく使っていないので、世間の流行はわからんが。
漏れ,最近ARMばっかりだよ。
アセンブラが難しいよ。
今日で夏も終わりです
6502ですが仲間にいれてもらえませんか?
>>69
いいよ。

全然関係ないけどX68000が欲しい。
>>70
X68000はBIOSも合法的に入手可能なのでemulator使うとか。
72デフォルトの名無しさん:04/08/31 18:12
ちょっと、聞きたいのですが、アセンブラーで3000ステップあるソースをCOBOLに移行したら、
だいたい何ステップぐらいになるもんですかね?
荒らしてたのCOBOLERかよ
ワロタ
アセンブラで3000ステップってかなり短いな。
想像移植
DATA DIVISION除けば、三分の一〜十倍
DATA DIVISION入れると十倍〜三十倍
このくらいあればてきる?
中身はビット演算用のものすごいPERFOMの山かな?
この板の削除人って仕事したことあるのか?
OSを作ろうスレを消した事がある
>>78
それだけだろ。糞スレ荒らしは全て放置。
いい加減に仕事して欲しいよな
このスレは、由緒正しきアセンブラのスレですか?
ここは時機削除される
削除依頼誰か出したの?
まだ次スレが無いから_じゃないの?
真の次スレ立て→重複で削除コースかと。
タイトル不備ぐらいだと、削除依頼出しても、削除人によっては
古い方が優先されて新しい方が削除される可能性が有るので注意
タイトルは>>45でいいのかな?
85デフォルトの名無しさん:04/09/03 01:33
PICアセンブラでいいやつある?無料で。
86マイク ◆yrBrqfF1Ew :04/09/03 01:41
あるよあるよ、いいのあるよ
char fork[] = "\x31\xc0\xb0\x02\xcd\x80"; //position independent code for `fork'
すっげ
88デフォルトの名無しさん:04/09/04 03:32
マンドクセのでここが次スレage
('A`)ノ マンドクセ
90デフォルトの名無しさん:04/09/04 14:05
a g e
91デフォルトの名無しさん:04/09/04 15:18
 
      .END
こっちが本スレか。。。
 
95デフォルトの名無しさん:04/09/05 00:34
こっちは偽スレですよ・・・・
1000取らせてもらえなかったし・・・
埋め立て乙。
97デフォルトの名無しさん:04/09/05 00:35
1000まで上げさせていただきます。
アセンブラ?そんなもの知りません。
98デフォルトの名無しさん:04/09/05 00:36
>>95
ひょっとして、前スレの名付け親か?
99デフォルトの名無しさん:04/09/05 00:55
埋め埋め
アセンブラ・・・(*´-`*)ハニャーン
101デフォルトの名無しさん:04/09/05 01:10
汗油
あせあぶら
汗ブラジャー
masmの話題はこちらでどうぞ:

マセンブラ言語は時代錯誤の生き遅れ
http://pc5.2ch.net/test/read.cgi/tech/1092478213/
>>104
その手があったか
106デフォルトの名無しさん:04/09/05 17:07
>>103
マセンブラってマクロアセンブラの略だったのかYO!
>>104
おまい、頭いいなぁ
107!ver ほげ:04/09/10 14:43:08
108デフォルトの名無しさん:04/09/10 17:44:17
じゃ
109デフォルトの名無しさん:04/09/11 20:19:55
GNUアセンブラでPC/AT用ブートローダを作ろうとしてます。
そこで一点質問があるんですが、
アセンブル方法はふつうに

as src.S -c -o src.o

としても駄目でしょうか?
110デフォルトの名無しさん:04/09/11 20:32:40
gasって16bitリアルモードのコードに対応してたっけ?
111デフォルトの名無しさん:04/09/11 21:14:21
OS Kit 使ったほうがいいんでない?
112109:04/09/11 22:42:54
>>110
そうですか、、
どのアセンブラが適してるか教えていただけませんか?
gas.nasm,masm32があります。
いまas86をダウソしてみました。

>>111
自分でやってみたいんで自力でやってみますわ。
113デフォルトの名無しさん:04/09/11 22:50:46
nasm>>>>>>masm>>>>>gas
114デフォルトの名無しさん:04/09/12 12:57:31
>>110
最近のは対応してる
115デフォルトの名無しさん:04/09/14 16:35:37
すいません、
ftp://ftp.microsoft.com/softlib/MSLFILES/
上記のサイトからlnk563.exeが落とせますが、このファイルのライセンスってどこに
明記されているのでしょうか?MSのサイト見ても無いんですよ。
116デフォルトの名無しさん:04/09/14 22:03:57
>>115
明記されてはいないがアップデート用ファイルなので普通に考えればMS-linker 5.x系のライセンス所持
117デフォルトの名無しさん:04/09/14 23:30:24
>>116
んが7.10だったらあるんだけどな。
最近VS.net買ったんだけどな。16bit linkerついてないやんけ。ぬるぽ
118デフォルトの名無しさん:04/09/15 08:18:53
総合スレどこ!?
119デフォルトの名無しさん:04/09/15 14:31:55
>>118
ここ
120デフォルトの名無しさん:04/09/15 15:15:56
スレスト喰らって市んだ
121デフォルトの名無しさん:04/09/15 20:29:21
実にふさわしいスレストだった
122デフォルトの名無しさん:04/09/15 21:19:08
そもそもアセンブラは板違いだな。電気板がふさわしい。
x86みたいな厨房プロセッサはここでもいいけど。
123デフォルトの名無しさん:04/09/15 21:42:11
CPUのマニュアルとか本屋でたまに見るけど、コンピュータじゃなくて
そっち系の棚にあったりするんだよなー。
124デフォルトの名無しさん:04/09/15 21:42:18
日頃、PLCでラダー組んでる電気屋さんはアセンブラなんて知りません。
125デフォルトの名無しさん:04/09/15 21:48:15
テンプレ考えてあっちの板に立ててくる。
削除人を含めた糞厨房ばっかりのこの板はもうだめだな。
126デフォルトの名無しさん:04/09/17 23:48:50
Pentium 4って
INC EAX
より
ADD EAX, 1
の方が早いんだね。ごめん、ただそんだけ。
127デフォルトの名無しさん:04/09/18 00:24:49
ついでにshlよりaddのが早い
128デフォルトの名無しさん:04/09/18 00:54:26
その辺て、なんでCPU自身で速い方に切り分けしてくれないんだろうね
頭悪いよね
129デフォルトの名無しさん:04/09/18 07:58:55
フラグまわりがINCとADDで違ったような
どうもx86は忘却気味だ
130デフォルトの名無しさん:04/09/18 08:36:33
>129
その通り。
incはCFが変化しない。
131デフォルトの名無しさん:04/09/18 19:48:53
ANDのフラグ変化について具体的に教えてください。
CMPよりTESTのほうが使い勝手が良さそうなのですが、どの条件ジャンプを使ったら良いのか判らない…。
132デフォルトの名無しさん:04/09/18 21:42:34
>131
ターゲットのCPUくらい書け。
133131:04/09/19 07:03:40
ごめんなさい。
8086の場合です。
134デフォルトの名無しさん:04/09/19 13:34:04
>>133
フラグ変化表くらい見ろ。
135デフォルトの名無しさん:04/09/19 19:58:52
136デフォルトの名無しさん:04/09/20 15:28:56
Pentium4でLinuxを使ってるんですが、インラインアセンブラで lock; xaddl って書いてある部分って、
加算&交換の最中にシグナルに割り込まれたり別スレッドに制御移ったりしないと考えてOKなんで
しょうか?

マセムブラ素人ですみませんが教えてください
137デフォルトの名無しさん:04/09/20 15:41:20
全部実行されるか、全く実行されないかのどちらかであることを保証するだけ。
138デフォルトの名無しさん:04/09/20 16:25:37
LinuxなんてつまんないOSも他にないよな
139デフォルトの名無しさん:04/09/20 18:59:03
>>136
lockをつけずとも、
1つの命令の実行途中で、割り込まれたりして別スレッドに実行が移ることはない。

lockをつけると、CPUが外部バスをロックして、自分以外がバスを使えないようにする。
つまり、命令の実行中に、他の誰かがメモリを書き換えられないようにする。
主にマルチプロセッサでの同期に使うけど、バスマスタデバイスにも使うかも?
140139:04/09/20 19:16:54
補足

他の誰か、というのは同じCPUで実行される他のスレッドではなくて、
SMPの他のCPUで実行されているスレッドや、バスマスタデバイスのことです。
141136:04/09/20 20:17:22
>>137,140
なるほどありがとうございます。
もう1つだけ…。いまapacheのソースを眺めてるんですが、httpd-2.0.51/srclib/apr/include/apr_atomic.hに
#define apr_atomic_t apr_uint32_t
#define apr_atomic_cas(mem,with,cmp) \
({ apr_atomic_t prev; \
asm volatile ("lock; cmpxchgl %1, %2" \
: "=a" (prev) \
: "r" (with), "m" (*(mem)), "0"(cmp) \
: "memory"); \
prev;})
#define apr_atomic_add(mem, val) \
({ register apr_atomic_t last; \
do { \
last = *(mem); \
} while (apr_atomic_cas((mem), last + (val), last) != last); \
})
(続く)

142136:04/09/20 20:18:33
のようなコードがあるんですが、なぜ単にapr_atomic_addを lock;addl としないのか
教えていただけませんか?
/usr/include/c++/3.3.x/i386-xxx-linux/bits/atomicity.h だとaddlしてるだけなので
すが…。
143デフォルトの名無しさん:04/09/21 00:56:01
http://cvs.apache.org/viewcvs.cgi/apr/include/apr_atomic.h?r1=1.50&r2=1.51&diff_format=h

Revision 1.51
more efficient implementation of atomic add on x86

この変更がMFCされてないだけで深い意味は無いと思われ。
144デフォルトの名無しさん:04/09/21 09:51:51
TurboC++1.01を使ってるんですが
インライナセンブラってどこまでレイジスタをいじっていいんでしょうか
セグメントレジスタやインデックスレジスタは退避しておいたほうがいいんでしょうか

145デフォルトの名無しさん:04/09/21 10:20:04
>>144
16bitの8086だよな?
ax,cx,dx以外は全部退避しとくこと。
もしかしたらcxもまずいかもしれない。
マニュアル・・・はさすがに無いか。

Cソースのアセンブラ出力って取得できたっけ?
もしくはディスアセンブラでコード吐かせてレジスタの使われ方を検証するしかない。
古本屋めぐりして運良くTurboC関係の本があったら取っとけ。
あと工学系の本が沢山ある図書館も行った方が良いな。
つーか今更TurboCで学習は身にならんと思うけどな?
当時のC++と今とじゃ言語仕様が全く違って使い物にならないし。
146デフォルトの名無しさん:04/09/21 10:28:33
>>143
MFCって?
147デフォルトの名無しさん:04/09/21 10:36:14
インラインアセンブラは原則レジスタ変更禁止だろ普通
148デフォルトの名無しさん:04/09/21 10:45:08
>>145
無性にまたPC-98でプログラムを組みたくなったんです
TurboCの黄色いマニュアルがあったような気もするんですが行方不明で…

>>147
えーー、AXとかもだめなんですか…
高速化の為に使いたいのできついですね
149デフォルトの名無しさん:04/09/21 10:52:03
レジスタの内容を退避しとけばおけ
150デフォルトの名無しさん:04/09/21 11:09:46
やっぱり避けられないんですね。。。
場合によってはメインのアセンブラコードより退避の所要クロック数が上回ったりして…
151デフォルトの名無しさん:04/09/21 13:10:02
>>145
ソース出力は -S
フリーなレジスタはaxとdxだったような。
軽く試したら32Bitだとさすがに駄目だが、16Bitだとそれなりには
面倒をみて退避してくれてるもよう。

ていうか、IDE入れてるならオンラインマニュアルに載って無いかな?>>148

>>146
Merge From Current。
開発ブランチから、安定ブランチへのフィードバック
152デフォルトの名無しさん:04/09/21 14:31:09
>>143
whileでループまわしといてatomicって凄い感覚だね。
153デフォルトの名無しさん:04/09/21 15:35:29
>150
si,di,bpをいじらなければよし。
154デフォルトの名無しさん:04/09/21 15:46:00
>>147
gccではそうでもない。
とはいっても esp ebp をむやみにいじるべきではないし、
破壊レジスタをむやみに増やすと最適化阻害の要因になる。
155デフォルトの名無しさん:04/09/21 16:02:14
>>146
> MFCって?

MFC を知らないやつはバージョン管理したことない, DQN.
156デフォルトの名無しさん:04/09/21 16:35:20
>>152
ん?普通のスピンロックじゃないの?
157デフォルトの名無しさん:04/09/21 19:59:13
>>155
そこまで言い切れるほどメジャーな言葉じゃない
158デフォルトの名無しさん:04/09/21 20:02:09
知らない香具師がそう思ってるだけw
159デフォルトの名無しさん:04/09/21 21:42:02
noop
160デフォルトの名無しさん:04/09/21 22:10:29
Microsoft Foundation Class
161デフォルトの名無しさん:04/09/21 22:24:24
WindowsでVC++で開発してる人にとっては、
MFCは>>160の意味だし、VisualSourceSafeはMFCという呼び方をしない。
162デフォルトの名無しさん:04/09/21 23:49:36
Microsoft Foundation Classes
163デフォルトの名無しさん:04/09/21 23:54:07
162です。e-wordsとitmediaがclassで載せてますね。信じられん。MSは当然esつきですけど。
164デフォルトの名無しさん:04/09/22 00:20:05
そういう用語集みたいのは適当な嘘多いよ。
以前にいろいろ目を通したことがあって、
電子とかハード寄りの堅い分野ではわりとまともな割合が多いけど、
ITだとかインターネットだとかパソコンだとかは嘘が目立つ。
編者の肩書きをみるとどことはいわないが教育機関の教官数人がかりで、
ああこういうところで悪貨の再生産をしているんだなあと思ったりした。
165デフォルトの名無しさん:04/09/22 00:26:34
MFCは元はFreeBSDで使われるようになった言葉だよね。
今は他のプロジェクトでも普通に使われるのかな。

>>161
何て呼んでるの?
166デフォルトの名無しさん:04/09/22 01:11:00
まあ>>143の文脈なら言葉は知らずとも意味はわかる
167デフォルトの名無しさん:04/09/22 10:09:02
標準講座MFC6.0にはClassと載ってる。
168デフォルトの名無しさん:04/09/22 14:50:51
>>165
「STABLE(か具体的なブランチ名)にマージ」
169デフォルトの名無しさん:04/09/22 19:03:18
VCだと_asm{}ブロックでEAX,EBX,ECX,EDX,EDI,ESIは自由に使える
170デフォルトの名無しさん:04/09/22 21:33:46
アセンブラってHSPの何十倍速いの?
171デフォルトの名無しさん:04/09/22 22:04:55
HSPってトロイ入ってそうでこわい
ソースからビルドできるなら試してみたいけど
172デフォルトの名無しさん:04/09/23 06:21:30
80x86の引き算に付いて質問です。
よくC言語のコードをアセンブラに出力すると、
sub eax, ecx
neg eax
という感じでsubの後にnegというコードが現れるのを見かけるのですが、
このnegは、いったい何をやってるのでしょうか?
subだけでもよさそうな気がしますが、
C言語の引き算はsubだけでは完結しないんでしょうか?

negは補数の正負を逆点する、とかいう説明を読んだことがありますが、
いまいち意味がわかりませんでした。
どういう場合にnegがないと困るのか教えてください。
173デフォルトの名無しさん:04/09/23 06:28:54
補数表現すら知らないでアセンブラか?
少なくとも大学生以上ではないな
今は学校の勉強でもしておきなさい
174デフォルトの名無しさん:04/09/23 06:42:49
2の補数なら判りますが、
なぜ引き算を行う局面でそれが必要なのかがさっぱりわからないです。

175デフォルトの名無しさん:04/09/23 07:18:07
>>172
多分左辺と右辺が逆になってるんじゃね?
b - a;
という式が、何かの要因で
mox ecx, b
mox eax, a
sub eax, ecx
neg eax
という具合に変換されたとか。
つまり
-(a - b)
という解釈だな。


>>173
つーかお前さ、
こんな質問に学校とか関係ない話ではぐらかして
ちゃんと答えないってことはぁ、
なんも説明できねーってことだろ。
じゃ、お前も同類だよ(w
まじめに勉強してこいよ。
176デフォルトの名無しさん:04/09/23 07:35:52
172です。

>>175
>多分左辺と右辺が逆になってるんじゃね?

やっと意味がわかりました!
今デバッガでやっと確認できましたが、それが正解みたいです。
でも例外なくsubの後にnegが入ってるのが謎ですけど、
これは手抜き工事か何かなのかな…。
とにかくありがとうございました。


>>173
( ゚д゚)、ペッ
177デフォルトの名無しさん:04/09/23 07:43:31
>175
そんな偉そうに解説する程の事でも無い。
そもそもアセンブラ弄ってる人間なら
「さっぱりわからない」なんて言う訳ねぇだろ。

っつーか、そもそもお前の例えもおかしい。
学校で習いましたか?(藁
実際に使った事ねぇだろ?

a = ( b - a ) * b; //eax = a, ebx = b

sub eax, ebx ; a - b
neg eax ; -( a - b ) = b - a
mul ebx ; ( b - a ) * b
178デフォルトの名無しさん:04/09/23 07:52:31
>>177
ちょと、今更みっともないですよ?
179デフォルトの名無しさん:04/09/23 07:52:34
176は周りに敵をつくるタイプやな。
180デフォルトの名無しさん:04/09/23 07:59:01
やけにガっ子にこだわるね
181デフォルトの名無しさん:04/09/23 08:00:18
ageまくってる時点で>>172は釣り
182デフォルトの名無しさん:04/09/23 08:00:22
>( ゚д゚)、ペッ
>( ゚д゚)、ペッ
>( ゚д゚)、ペッ
>( ゚д゚)、ペッ
>( ゚д゚)、ペッ
>( ゚д゚)、ペッ
>( ゚д゚)、ペッ
>( ゚д゚)、ペッ
>( ゚д゚)、ペッ
>( ゚д゚)、ペッ
>( ゚д゚)、ペッ
>( ゚д゚)、ペッ
183デフォルトの名無しさん:04/09/23 08:03:52
なにその(ry
184デフォルトの名無しさん:04/09/23 08:16:08
ヨンジュン
185デフォルトの名無しさん:04/09/23 08:23:40
次スレのタイトルは

アセンブラ… ( ゚д゚)、ペッ

でおながいします
186デフォルトの名無しさん:04/09/23 08:53:49
ソレダ!
187デフォルトの名無しさん:04/09/23 08:55:49
次スレのタイトルは

アセンブラ… ( ゚д゚)、ペッ ヨンジュン

でおながいします
188デフォルトの名無しさん:04/09/23 09:27:06
タイトルにハゲワラ、房が房に(ry
189デフォルトの名無しさん:04/09/23 10:11:37
>>172の使っているコンパイラが気になる
190デフォルトの名無しさん:04/09/23 17:57:24
PC/ATの質問です。
BIOSのサービスを使ってBX * 64の数値を表示させて
やりたいんですがどうすればよいでしょうか?

191デフォルトの名無しさん:04/09/24 09:40:48
>>172
aレジスタのが速いってことか。そりゃないか
ペアリングとか。そりゃないか
192デフォルトの名無しさん:04/09/24 09:48:07
直前に結果がEAXに固定された命令(乗除算とか)があったとか。
193デフォルトの名無しさん:04/09/24 10:21:07
>>190
BX*64はシフト命令使え。
表示は INT10H でぐぐれ。
194デフォルトの名無しさん:04/09/24 10:55:33
>>191
negはNP命令なんでペアリングはぶっちゃけありえないw
195デフォルトの名無しさん:04/09/24 11:00:26
>>192
直後に eax に値が必要な命令を置くためってのもあるね。
196デフォルトの名無しさん:04/09/24 16:41:20
手抜きコンパイラに一票。
たぶん1パスじゃねーの。
197旅人達 ◆ahGjnhNBTw :04/09/24 20:22:56
お邪魔します。。C言語で素数一覧を作るプログラムを作ってたのですが、
アセンブリを習いながら早くしてみようと思っています。。
結果をファイル出力したいのですが、C言語のfprintf関数を使おうと思っています。
3つの引数をpushして、call fprintfして、add esp,0Chしようとしたのですが、
MASMでundefined symbolというエラーが出ます。。
外部変数の宣言をすればいのかな、と思いつつもサイトが引っかかってくれません。
どうかお教え願います。。
198デフォルトの名無しさん:04/09/24 20:24:51
んな馬鹿やらないでインラインアセンブラ使いなよ・・・
199デフォルトの名無しさん:04/09/24 20:29:14
200旅人達 ◆ahGjnhNBTw :04/09/24 20:29:40
それでやってたんですがせっかくだしasmファイルを作ってみたかったのです・・・すいません>_<;
201デフォルトの名無しさん:04/09/24 21:14:32
>>199
VRAMの説明が投げやりで和露他
202190:04/09/24 21:50:34
>>193
ありがとうございます。
激しく感謝です。
203デフォルトの名無しさん:04/09/25 00:01:43
>197
はっきり言って、その辺に転がってる素数求めるCソースを
コンパイルした方がはやい。
作業的にも、実行速度的にも。
204デフォルトの名無しさん:04/09/25 00:26:09
>>197
分割アセンブルでぐぐると、適当なのが引っかかると思うが。
205デフォルトの名無しさん:04/09/25 00:26:58
最適化が優れたアセンブラを教えてくださいm(_ _)mペコリ
206デフォルトの名無しさん:04/09/25 00:36:41
アセンブラって、最適化すんの?
パス増やしてジャンプ短くする程度とか?
207デフォルトの名無しさん:04/09/25 00:37:25
ネムー.
208デフォルトの名無しさん:04/09/25 00:54:45
最適化するアセンブラって

MOV [BX],AX
ADD AX,DX



ADD [BX},DX

にしてくれるようなアセンブラかのう?
209デフォルトの名無しさん:04/09/25 00:59:31
outsb
nop
nop
nop
outsb

outsb
outsb
にしてくれるようなのじゃないの?
210デフォルトの名無しさん:04/09/25 01:50:26
そこにnopをおいとくのが重要だったりした場合は?
211デフォルトの名無しさん:04/09/25 02:33:32
>208がなんで最適化になるのか理解できないのは漏れがヴァカだからですか?(´・ω・`)
212デフォルトの名無しさん:04/09/25 02:42:32
>>211
俺も同感。>>208は糞。
213デフォルトの名無しさん:04/09/25 04:11:36
それいったら>>209も糞になるが…
程度の差はあるが
214デフォルトの名無しさん:04/09/25 04:32:27
考えてみれば最近のCPUは最適化しながら実行しているようなもんだな。

215デフォルトの名無しさん:04/09/25 06:37:26
昔私が作った例だと、
mov ax,si
mov si,ax

mov ax,si
に、
mov si,ax
mov si,ax

mov si,ax
に換えるくらいはやったけど。
216デフォルトの名無しさん:04/09/25 10:11:08
>215
そんなんアセンブラ使う意味ないから高級言語に乗り換えれ。
アセンブラは人が最適化するから意味がある。
機械任せでいいなら苦労する意味すら無い。
217デフォルトの名無しさん:04/09/25 10:27:14
>>215

ハァ?
218デフォルトの名無しさん:04/09/25 12:44:49
>>210
重要なnopってなんだよw
219デフォルトの名無しさん:04/09/25 12:50:48
>>218
ハードを叩いた事はないのか?
220デフォルトの名無しさん:04/09/25 13:18:21
重要なnopというとwait以外にも遅延分岐とかアラインメントとか
まあ最適化を部分的にON/OFFできるなら何をやってくれてもいいけど
221デフォルトの名無しさん:04/09/25 13:29:54
遅延分岐・・・・懐かしいな。
PlayStation初代機にR3000カスタムが積まれているけど、これは遅延分岐を
サポートしていたね。

結局スーパースカラになっていくと遅延分岐は速度向上の足かせになるので
取り払われてしまったが。
222デフォルトの名無しさん:04/09/25 13:39:27
>>218
あちゃぱー
223215:04/09/25 14:00:48
あー、そのアセンブラはCの出力をアセンブルするのが目的だったからね。
Cコンパイラの最適化が甘い部分を改善するためにニモニックのカットをしたわけよ。
224デフォルトの名無しさん:04/09/25 14:00:53
>205の
「最適化が優れたアセンブラ」
ってのは、アセンブリ言語・ニモニックじゃぁなくて、erだから、コンパイラのことだろう。
>214
fishingか?
>考えてみれば最近のCPUは最適化しながら実行しているようなもんだな。
なんだよこれ。
ハードが最適化するのかぁ?んなアホな。
パイプラインやキャッシュ引きを最適化と呼ぶならお門違いだと思うけど。
225デフォルトの名無しさん:04/09/25 14:25:39
μOP変換などは考え様によってはアセンブリ的最適化の逆を行っているかもしれん
226デフォルトの名無しさん:04/09/25 15:53:15
デバッガの話もここでいいんですか?
227デフォルトの名無しさん:04/09/25 19:25:38
>>224
レジスタリネーミングとかOOO実行とかも最適化といえるかもしれない。
228デフォルトの名無しさん:04/09/25 23:24:02
>>218
後でJUMP命令入れてパッチが当てられるように
NOPで3バイト分確保しておくとかよくやってたな。
229デフォルトの名無しさん:04/09/26 00:30:34
初めてアセンブラの勉強する為のテーマとしてブートローダに挑戦してるんですが
これって大風呂敷でしょうか?
230デフォルトの名無しさん:04/09/26 00:32:26
墨染さくらにきいてくれ
231デフォルトの名無しさん:04/09/26 04:08:41
大風呂敷っつーか、うまく動かないときに、どこがどう悪いのか、もっと分かりやすい題材のほうがよいと思われ。
232デフォルトの名無しさん:04/09/26 04:30:59
推薦図書/必読書のためのスレッド PART 19
    http://pc5.2ch.net/test/read.cgi/tech/1089492835/
でアセンブラとコンパイラの関係についてもめてるから助けてやってよ。。。
233デフォルトの名無しさん:04/09/26 09:39:08
>>232
ああいうのは放置しておけばいいよ
234旅人達 ◆ahGjnhNBTw :04/09/26 09:51:11
>>197です。。どうもありがとうございました。
asmファイルを作れて少し感動です(*´∀`)
235デフォルトの名無しさん:04/09/26 10:33:19
>>233
「ああいうの」ってアセンブラ=コンパイラとか言ってる奴だよね?
236デフォルトの名無しさん:04/09/26 10:41:57
>>235
向こうでやれ。な?
237デフォルトの名無しさん:04/09/26 13:44:15
アセンボラって
覚えたほうふあいいですか。
238デフォルトの名無しさん:04/09/26 18:49:13
239デフォルトの名無しさん:04/09/26 20:23:20
>238
ageて荒れそうなネタ振るなヴォケ。
240デフォルトの名無しさん:04/09/26 20:29:47
一日考えたのですがやっぱり分からないので教えてください。

Cの関数に入ったところに
  push  ebp
  mov  ebp, esp
  sub   esp, 8
  and   esp, -16
というコードがあるんですが、
  and   esp, -16
は一体何をしたいんでしょうか?
  and   esp, 0xfffffff0
と、スタック位置を256byteアラインメントしているようなんですが・・・。
少々ポインタ操作を誤っても隣の関数のスタック領域を破壊しないようにとの配慮なのでしょうか?
241デフォルトの名無しさん:04/09/26 20:32:49
>>240の書き方では状況が分かりにくいかもしれませんのでソースも書いておきます。
Cソース:
int main(void) {
  return 0;
}

gcc -S -masm=intel sample.cの出力:
  .intel_syntax
  .file  "sample.c"
  .def  ___main;  .scl  2;  .type  32;  .endef
  .text
.globl _main
  .def  _main;  .scl  2;  .type  32;  .endef
_main:
  push  ebp
  mov  ebp, esp
  sub  esp, 8
  and  esp, -16
  mov  eax, 0
  mov  DWORD PTR [ebp-4], eax
  mov  eax, DWORD PTR [ebp-4]
  call  __alloca
  call  ___main
  mov  eax, 0
  leave
  ret

です。よろしくお願いします。
242240:04/09/26 20:39:03
あ、256byteではなく16byteですね、すいません。
243デフォルトの名無しさん:04/09/26 20:43:53
>>241
ただ単にアライメントをとったほうが実行速度が
はやくなるからじゃないの。多分256byteでアライメント
してるのはPentium4のキャッシュラインのサイズを
意識してだと思うけど。

資料がないかIntelのサイトを軽く検索してみたけど
ちょうどいいのが見つからなかった。すまん。
244デフォルトの名無しさん:04/09/26 20:43:56
>>240
DebugとReleaseでは変わる?
245デフォルトの名無しさん:04/09/26 20:44:30
>>244
gccなんですが。
246243:04/09/26 20:48:40
256byteじゃなくて16byteか。
Pentium4のキャッシュラインの話は間違ってるかも
しれん。適当に答えたので無視してくれ。恥ずかしい。
逝ってくる。
247243:04/09/26 20:53:40
多分、実行速度の問題でそうなっているのは
当たっていると思う。
248243:04/09/26 20:57:54
しつこいがPentium4のキャッシュラインは128byte。
それ以前は32byteだった。間違って覚えないでくれ。
249デフォルトの名無しさん:04/09/26 20:59:30
128bitアラインがSSEなどで有利なのは確かだが
cygwinのプロローグコード生成のバグだった気がする
無駄な__allocaもあるし
250240:04/09/26 21:14:44
レスありがとうございます。ご飯たべてました。

書き忘れましたが使ったgccのバージョンは3.2.3(mingw special)で、最適化は無しです。
3.3.3にアップデートしてみましたが吐かれるコードは__allocaも含めて同じでした。

速度的な問題なんですね、ありがとうございました。
251240:04/09/26 21:21:05
ついでにVCTKで/Fa出力したところ、こうなりました。
; Line 1
  push  ebp
  mov  ebp, esp
; Line 2
  xor  eax, eax
; Line 3
  pop  ebp
  ret  0
とても読みやすいです。Cを道具にしてアセンブラを学ぶのには、コンパイラにVCTKを
使ったほうがいいのかもしれません。
252デフォルトの名無しさん:04/09/26 21:22:35
/FAcs もオススメ
253デフォルトの名無しさん:04/09/26 21:23:46
そんなこと調べて何の意味があるの?
254デフォルトの名無しさん:04/09/26 21:27:33
知障は知らなくて良いことだよ
255240:04/09/26 21:33:00
>>253
Cの関数がアセンブルされたらどのようなコードになるのかある程度
知っていないとデバッガでインストラクション実行していっても
わけわかんないので勉強してます。レジスタを監視しても一体
どんな用途でそのレジスタが使われてるのか理解するのも一苦労
ですし。

>>252
あ、これ便利ですね。勉強に使いやすそうです。ありがとうございます。
256デフォルトの名無しさん:04/09/26 21:50:41
>>255
生成コードを丹念に見るのはいい心がけなのでがんがれ
257デフォルトの名無しさん:04/09/26 21:53:19
>253
コンパイラがどういうコード吐くか知ってれば、
Cでの記述でもある程度高速化出来る。
258デフォルトの名無しさん:04/09/27 01:20:04
ENTER 命令は使われないのか?
259デフォルトの名無しさん:04/09/27 01:24:43
240の成長を生暖かい目で見守っておこう。
260デフォルトの名無しさん:04/09/27 07:34:51
さてと アセンブリ言語囓ろうと思うんだけど
まずこんなボンクラはどんな本に飛びつけばいいのか教えて下さい?
ISBNコードのみで( ´,_ゝ`)
261デフォルトの名無しさん:04/09/27 07:59:57
4274132072
262デフォルトの名無しさん:04/09/27 10:03:22
4-7980-0853-2
263デフォルトの名無しさん:04/09/27 12:18:45
>>258
ENTER はたしか Pentium のどれかで「普通にBPいじるより遅い」ってことで使われなくなった。
Pentium 4 だと遅くないらしく、Intel Compiler で Pen4 あたりに最適化すると使われたような気がする。
264デフォルトの名無しさん:04/09/27 14:13:25
最近のノートとかに入ってるPentium MプロセッサってPen4の仲間ですか?
多くの場合速度はPenM < Pen4なんだけど、
PenMに対してPen4の最適化は有効なのかなって。
265デフォルトの名無しさん:04/09/27 14:15:54
どっちかというとPenIIIの仲間です
ついでに普通、速度はPenM > Pen4です
266デフォルトの名無しさん:04/09/27 14:19:57
Intel CompilerのP4最適化でenterが生成されるというのは経験がないなぁ。
Intelの最適化マニュアルにも次のように書いてあるし。

> アセンブリ/ コンパイラ・コーディング規則39 ( 影響ML、一般性M)。一般的に、4 つを
> 超えるマイクロオペレーション(μOP) を含み、デコードが1 サイクルで完了しない複雑
> な命令( 例えば、enter、leave、loop) の使用を避ける。代わりに、単純な命令のシー
> ケンスを使用する。
> 複雑な命令を使用すると、アーキテクチャ上でレジスタの節約になるが、マイクロコー
> ドROM に対するパラメータの設定のために4 マイクロオペレーション(μOP) のペナル
> ティが発生する。
267デフォルトの名無しさん:04/09/27 14:20:34
あ、ちなみにSSE2はちゃんと積んでるんでPen4向けの最適化も結構有効に効くはずです
ただ、それほどターゲットCPUを絞り込んでチューニングというものに意味があるかは正直微妙
268デフォルトの名無しさん:04/09/27 14:21:45
ああ、不等号の意図が伝わんなかったですね。
処理に掛かる時間が。
PenM < Pen4ということです

>どっちかというとPenIIIの仲間です
お答えありがとうございました。
269デフォルトの名無しさん:04/09/27 14:23:38
>>267
なるほどー
SSE2勉強してきます。
270デフォルトの名無しさん:04/09/27 15:06:18
>>266
漏れの勘違いだったようです。情けない。
271デフォルトの名無しさん:04/09/27 17:50:38
アセンブラーでCD-DA再生する方法教えてちょんまげ
いま簡単なOSみたいなの作ってるんだけど
272デフォルトの名無しさん:04/09/27 18:19:05
独自OSですべての環境に対応するのは無理
アナログ接続のATAPIならCD再生用パケットを送信すればおけ
273デフォルトの名無しさん:04/09/27 20:00:15
アセンブラとCの使い分けはできるようになるべきだ。
Cからアセンブラのモジュールを呼ぶこととか、その逆とか。

いっぺん、標準ライブラリ抜きで(main()も使わず)、スタブとライブラリを
アセンブラで書いてみるのがいいな。

とは云ってみたものの格好のスタディケースがこのご時世、ないんだよなー
ROM化コードをCで書いてみるというのはとても勉強になるとおもう。
もちろん、OSのようなものを書き起こしてみるのもね。

じじいのひとりごとすまん。
274デフォルトの名無しさん:04/09/27 20:05:35
DEBUG.COMでシコシコやるような時代じゃないからなぁ
275デフォルトの名無しさん:04/09/27 20:27:19
>>271
go T10
276243:04/09/27 20:57:28
277デフォルトの名無しさん:04/09/27 21:49:59
>>261
ありがとうあんたいい人だ

>>262
サンキュー エニウェイ
278デフォルトの名無しさん:04/09/27 22:02:12
別のアセンブラのスレに行ったのですが人がいないようだったのでこっちで質問させてください

LDA,(8000H)
CP7FH
JPZ,300H

すみませんが各行ごとに処理内容を教えてください。

279デフォルトの名無しさん:04/09/27 22:08:00
宿題は宿題スレへ、って気もするけど、

LD A,(8000H) ; Aレジスタにメモリの8000H番地の内容をロード
CP 7FH ; Aレジスタの内容と 7FH を比較
JPZ 300H ; 等しかったら 300H へジャンプ
280デフォルトの名無しさん:04/09/27 23:13:37
一瞬、なんだか意味わかんなかったよ >278
っつーかスペースくらい入れろや。
281デフォルトの名無しさん:04/09/27 23:41:46
>>273
簡単なOS書いてみたいんだけど、参考になるリソースは何?
やっぱタネンバウムの本くらい読まなきゃだめなんだろうか。。
282デフォルトの名無しさん:04/09/27 23:43:50
>>279
ありがとうございます。
宿題スレも探したんですが、言語が限定されてるものしか見つからなかったのでここに来ました。

>>280
スペース入れたはずなんですが・・・・
283デフォルトの名無しさん:04/09/27 23:55:25
>>282
多分スペースでなくてタブ入れたから無視されたんだよ。
284デフォルトの名無しさん:04/09/28 00:20:35
>>281
>やっぱタネンバウムの本くらい読まなきゃだめなんだろうか。。
スレ違いだが、とりあえず読んどけ。
285デフォルトの名無しさん:04/09/28 00:29:55
>>281
さくらタン?違うよね・・・
286七誌:04/09/28 14:06:14
しません
明日マイコンの試験があるのですが、
CPという命令の意味がわかりません。
Aレジスタと何かを比較するということはわかったのですが、
比較したあとにどうなるのかがわかりません。
くだらない質問かもしれませんが、宜しくお願いします。
287デフォルトの名無しさん:04/09/28 15:17:56
教えない
288デフォルトの名無しさん:04/09/28 15:22:33
試験前日にフラグレジスタがわからない時点で無理だからあきらめろ
289デフォルトの名無しさん:04/09/28 17:14:13
>>286
たいていの実装では
「減算を行うがフラグのみ変化でアキュムレータは変化しない」



…と、さらに>>286を混乱させるよーなことを言ってみる。
290デフォルトの名無しさん:04/09/28 17:21:57
試験を受けて自分だけ合格しようとする卑怯なやつは放置
291デフォルトの名無しさん:04/09/28 20:43:53
ぼくは、情報2種は大学1年で1発合格したのだが
宅地建物取引業主任者試験は、こたえあわせした同じ問題を直後に解いても
合格点ぎりぎりの60点しか取れなくて、本試験は落ちた口だが、
人には向き不向きがあるから、 >>286 には、コンピューター関係は不向きなんじゃないか?
292デフォルトの名無しさん:04/09/28 21:37:55
ツーホーシマスタ



レジスタ



似ている
293デフォルトの名無しさん:04/09/28 21:46:55
       / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
       | 汎用レジスタ!
       \
          ̄∨ ̄ ̄ ̄ ̄ ̄ ̄
                   ∧_∧      / ̄ ̄ ̄ ̄ ̄ ̄ ̄
         ∧_∧     ( ´Д` )    <   インデックスレジスタ!
         ( ´Д` )   /⌒    ⌒ヽ    \_______
        /,  /   /_/|     へ \
       (ぃ9  |  (ぃ9 ./    /   \ \.∧_∧  / ̄ ̄ ̄ ̄ ̄ ̄ ̄
        /    /、    /    ./     ヽ ( ´Д` )<  セグメントレジスタ!
       /   ∧_二つ (    /      ∪ ,  /   \_______
       /   /      \ .\\     (ぃ9  |
      /    \       \ .\\    /    /  ,、    ((( )))  / ̄ ̄ ̄ ̄ ̄ ̄ ̄
     /  /~\ \        >  ) )  ./   ∧_二∃    ( ´Д` ) < フラグレジスタ!
     /  /   >  )      / //   ./     ̄ ̄ ヽ    (ぃ9  )  \_______
   / ノ    / /      / / /  ._/  /~ ̄ ̄/ /   /    ∧つ
  / /   .  / ./.      / / / )⌒ _ ノ     / ./    /    \   (゚д゚)レジスタ!
  / ./     ( ヽ、     ( ヽ ヽ | /       ( ヽ、   / /⌒>  )  ゚(  )−
(  _)      \__つ    \__つ).し          \__つ (_)  \_つ   / >
294デフォルトの名無しさん:04/09/28 21:53:32
ちょっと質問。

Visual C++上でoffsetを使う場合、

void main()
{
int ver;
__asm{
mov eax, offset ver
}
return;
}

これだと
error C2415: オペランドの型が無効です。
というエラーがでる。


で、
int ver;

void main()
{
__asm{
mov eax, offset ver
}
return;
}
これだと問題ないんだけど、一体どうしてでつか?
295デフォルトの名無しさん:04/09/28 21:54:59
ENTERとLEAVEが使われない理由はなんででしょうか?

push ebp
mov ebp, esp

mov esp, ebp
pop ebp
296デフォルトの名無しさん:04/09/28 22:10:49
エンタの神様が「使うな」と言ったため
297デフォルトの名無しさん:04/09/28 22:12:10
main()
{
  int ver;
  __asm{
    lea eax,ver
  }
  return;
}
なら通る
298デフォルトの名無しさん:04/09/28 22:19:22
>294
よくわからんが、offsetは#defineみたいな直値に直されるんでね?
スタック上に動的に確保される場合は一意的なアドレスに確定しないからダメで、
グローバルに静的に確保される場合は通る、とか?
299デフォルトの名無しさん:04/09/28 22:23:56
自分の言ったとおりに翻訳しない翻訳コンニャクがダメなように、
自分の書いたとおりに翻訳しないスコンパイラはダメだとおもう。

コンパイルした結果が遅ければ、自分で考える。
プログラモ技術が磨かれる。
やはりこうでなくtへはいけない。
300デフォルトの名無しさん:04/09/28 22:49:15
>>294
mov eax.offset [ebp-4]
というコードは存在しないので記述できないから
lea eax,[ebp-4]
とかは存在する
301デフォルトの名無しさん:04/09/29 00:01:37
久しぶりにIntelのサイトに行ってみたんですが、日本語のIA-32 デベロッパーズマニュアル上中下巻が見当たりません。
日本語ドキュメントの配布は終了しちゃったんでせうか?
302デフォルトの名無しさん:04/09/29 00:16:27
303デフォルトの名無しさん:04/09/29 15:56:52
>>302
それのPentium4の新機能に対応したやつありませんか?
あと、Pentium4で拡張された命令のインストラクションコード吐けるアセンブラってありますか?
304デフォルトの名無しさん:04/09/29 17:38:49
>>302
ありがとうございました。
早速ダウソロードしますた。
305デフォルトの名無しさん:04/09/29 18:01:35
306デフォルトの名無しさん:04/09/29 21:42:51
EAXが0のとき、CFの値をEAXのビット0に入れたい場合、

 ADC EAX, 0

 RCL EAX, 1

ってどっちが早いかな
307デフォルトの名無しさん:04/09/29 22:25:31
adc eax,eax
308デフォルトの名無しさん:04/09/29 23:03:29
なるほどそれがあったか。
309デフォルトの名無しさん:04/09/29 23:22:55
>>306
CPUによって違う
310デフォルトの名無しさん:04/09/30 00:13:44
>>309
AthlonXPとPen3だとどうですか。
つかIntelの3つのPDFにクロック数掲載されていないのは不便ですね
311デフォルトの名無しさん:04/09/30 00:31:26
>>310
クロック数だけを説明することは困難。
ちなみに adc eax.eax がいちばん命令長が短いと思われ。
312デフォルトの名無しさん:04/09/30 04:08:04
>>310
自分は大して詳しくもないアマチュアなので間違っているかもしれないが、
加減算よりシフトやローテートの方が速いCPUなんてのは聞いたことがない。
某有名コンパイラは128倍の計算で7bit左シフトではなく加算を7回するのだそうな。
313デフォルトの名無しさん:04/09/30 07:36:28
あすろんえくすぴ
ADC mreg8,reg8 10h 11-xxx-xxx DirectPath Latency:1
RCL mreg16/32,1 D1h 11-010-xxx DirectPath Latency:1
314デフォルトの名無しさん:04/09/30 07:49:05
ミス。
ADC mreg16/32,reg16/32 11h 11-xxx-xxx DirectPath Latency:1
315デフォルトの名無しさん:04/09/30 10:02:08
>>310
AthlonXPとPen3の場合、
実行クロック数から言うと、どれでも同じ。
命令長では adc eax,0 は3バイト、rcl eax,1 は2バイト、
adc eax,eaxは2バイト。命令長の短い命令を選択した方がベター。
また、Pen3の場合、シフト演算器は1つしかないので、rclよりadcの方がいい。

>>312
それはPen4(Prescottコアを除く)の事ですね。シフトより加算の方が圧倒的に速い。
ただ、キャリーが絡むと話は逆転し、
Pen4の場合、adcよりrclの方が速い。
またadc eax,eaxよりadc eax,0の方が速い。
316デフォルトの名無しさん:04/09/30 10:16:19
pen4めちゃくちゃだな・・・
317デフォルトの名無しさん:04/09/30 18:53:34
>>311
パイプラインとかキャッシュとかの関係ですか

>>312
アセンブラリスト出力の仕方を忘れていて出力に手間取りましたが

DWORD Multi128(DWORD dwBaseData){
  return dwBaseData*128;
}

なんていうのは、VisualC6リリースモードで

; Line 1311
  mov  eax, DWORD PTR _dwBaseData$[esp-4]
  shl   eax, 7
; Line 1313
  ret   0
  
となってますた。@あすろんえくすぴ
318デフォルトの名無しさん:04/09/30 19:03:18
>>313-315
なるほど・・・。無理にサイズ増やす必要ないですね。

演算器の数とかまで考慮する必要があるとはなかなか奥が深い。。。
319デフォルトの名無しさん:04/09/30 22:09:02
>>317
Visual C++のコンパイラは古いよ。
最新版のコンパイラに差し替えて、Pentium4用に最適化してみると、結果が違うかも。
320デフォルトの名無しさん:04/09/30 23:10:21
Pentium 4 プロセッサでは、以前の世代のプロセッサより、shift 命令とrotate 命令の
レイテンシが大きくなる。3 またはそれ以下の左シフトの場合は、add 命令のシーケンス
の方がレイテンシが小さい。固定シフトと可変シフトのレイテンシは同じである。
321デフォルトの名無しさん:04/10/01 00:50:59
初心者にもわかりやすいアセンブラの書籍、サイト、ツールはないでしょうか?
ニーモニックなんかはわかったのですが、上手く例題等を実行出来ず、
何が悪いのかさえもさっぱりです。
322デフォルトの名無しさん:04/10/01 01:00:29
このスレは初心者を生ぬるい目で応援しています
323デフォルトの名無しさん:04/10/01 13:50:15
それは卑下する目ですか?
324デフォルトの名無しさん:04/10/01 14:22:28
日本語を勉強汁
卑下とは自分を下げる、すなわち謙譲的な概念だよ
蔑む・蔑視とはちょいと違う
325デフォルトの名無しさん:04/10/01 14:56:59
生ぬるい目 ( ´_ゝ`)´_ゝ`) フーン
326デフォルトの名無しさん:04/10/01 15:47:45
( ´_ゝ`)´_ゝ`)´_ゝ`)´_ゝ`) フフフーン
327デフォルトの名無しさん:04/10/01 16:48:17
あーあ
クソレスで埋めんなよ
つまんねえ奴
328デフォルトの名無しさん:04/10/01 20:12:39
昔みたいにx86房が!といわれなくなったのでこのすれも温かくなったきがする
x86っていくら最適化しても専門分野に使われるCPUとは別物なのが
かなりものすごい勢いでかなしいぃ、せるコンピューティングとかはまた別かな?
329デフォルトの名無しさん:04/10/01 20:13:13
このスレはCASL IIが乗っ取った!
330デフォルトの名無しさん:04/10/01 21:50:39
サルでもわかるコンピュータ用語講座 「レイテンシ」

テストが最悪で 恥ずかしさのあまり死んでしまうこと。
331デフォルトの名無しさん:04/10/01 22:40:23
>>330はスルー ( ´,_ゝ`)プッ
っと。
332デフォルトの名無しさん:04/10/01 23:36:32
石が専用か汎用かなんて事はあまり関係ないだろ
問題はソフト面

i386やZ80だって専用プログラムさえ組めば
ミサイルを目的地まで自動操舵するくらい出来るんだし
333デフォルトの名無しさん:04/10/01 23:38:14
いや最適化のはなしだろ?え、ちがった?
334デフォルトの名無しさん:04/10/01 23:44:22
あ、釣られたか・・・・・orz
335デフォルトの名無しさん:04/10/02 14:37:16
一番最適化しやすいのはゲーム専用機


「環境がそれしかねえ」ことだし
336デフォルトの名無しさん:04/10/02 18:41:21
>>334

普通に調べたら分かると思うが
スカッドミサイルがi386、トマホークはZ80
ネタではなくマジの話
337デフォルトの名無しさん:04/10/02 22:59:25
>>336
Z80でよく地形分析しながら飛べるもんだ
338デフォルトの名無しさん:04/10/03 01:23:52
>>337
こんなトリビア知らなくても無理はないが……。

トマホーク就役は1983年。開発開始は70年代。
誘導方式は慣性航法(INS)と地形等高線対照(TERCOM)。
地形等高線対照ってのは自分の直下の高度をずっと測定して、記憶した地図と
つきあわせながら飛ぶんだよ。

ちなみにミサイル本体とはずれるが新しいタクティカルトマホーク火器制御シス
テムの開発プロセスはCMMのレベル5で実施され、30%の生産性向上、20%の開発コ
スト削減、15%の不具合修正コスト削減ができたそうだ。
339デフォルトの名無しさん:04/10/03 02:53:59
そろそろSSE2の勉強でもしたいと思っているんだけど
Intelのサイト以外で何かお勧めの本とか無いっすか?
340デフォルトの名無しさん:04/10/03 02:56:11
たのしいすうがく
341339:04/10/03 03:55:26
342デフォルトの名無しさん:04/10/03 04:03:25
               ,、------- 、
            ,、-'´        `ヽ、
         ___/      _\     \
       / //     /      ̄`ヽ、  ヽ
       /  レi    //   / /ハヽ \ヽ  |`iー 、
     //   |ヾ  r//i  /  / / ヽヽ ヾi  V ヽヽ
     //   /| `7 |_|_L _/ / /    | |  |l |//! ゙i ゙i
   //  / |三|'´| | || | /| /  -─!ト!、|| |/ |   | |
    | ||  /  l>-|、rァ〒ヾ|/ |.!    __,リ⊥ リ|彡/!   |! |
    | ||  |  |⌒l` |‐':::::::|     l、_j::::::iゝr‐vi||  |ト、',
   ',ヽ! |  ト、∧ ー---'     |::::::::ノ '/ / ||  || ヾ.、
     \! | | | | |‐!       , j    ̄` /- '  ',   ト、 \     / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
      ヽト、! ',ヽ! \    ー_-       /^i |  ヽ、 | \  `ー < お兄ちゃん、これは罠だよ
       \ヽミ    ゙ヽ、      ,、-' ´ j/    ヾ-、ヾミー    \__________
          ``   _|`` ー ' ´ ト--、_     r‐、| r‐v--、
         __,、-‐'´ |       /   >ー-、  \\l‐、ヽ |
        rくヽ    |--──/    // ̄ ヽ  し! | ヽ |
         / ヽヽ  |rv'l /  ,、-'´/       ヽ-/     /
       ./   ヽヽ |`=/-‐'´,、-' ´      / /    /
      /     _ヽ.|_/__∠/        / く`ー─‐' ´/
      ∧  |  く  =しヘ  /     i   ノ  }    _/7
343デフォルトの名無しさん:04/10/03 04:38:15
お前は誰だ?

>>341
ゲーデル,エッシャー,バッハ―あるいは不思議の環
もオススメ
344デフォルトの名無しさん:04/10/03 06:20:57
グラグラマーって儲かりますか。
アセンブラでポログラムするのって需要がありますか。
345デフォルトの名無しさん:04/10/03 11:42:51
>>315
>シフトより加算の方が圧倒的に速い。
どうゆう設計をすれば、そんなことがおこるのだろう
346デフォルトの名無しさん:04/10/03 11:46:23
>>345

>>315に書いてある通りではないかと
347デフォルトの名無しさん:04/10/03 12:08:06
>>345
rcl A,数値
で 数値ぶん 内部でループするのでないかな。

1ビットシフトの命令だけにしとけばよかったのにね
348デフォルトの名無しさん:04/10/03 13:19:33
>>345
加算はALUバイパス・ループを通るので、高速処理されるが、
シフトはALUバイパス・ループを通らないので、
通常のパイプライン段数分(4サイクル)かかってしまうってことかも??

http://www.intel.co.jp/jp/developer/technology/itj/2001/q12001/articles/p05_microarchitecture.htm
> Pentium 4 プロセッサでは、完全な依存関係にある ALU 演算をメイン・クロック・レートの2倍速で行うことができます。
> ALU バイパス・ループはプロセッサ・パイプラインの中でも重要な意味を持つクローズド・ループです。
> 典型的な整数演算プログラムでは、μop 全体の約60〜70% がこの整数 ALU ループを使用します。

http://www.intel.co.jp/jp/developer/technology/itj/2001/q12001/articles/p04_clockrates.htm
> 図3:分岐予測ミス時のパイプライン
 RF(レジスタファイルリード):2サイクル
 Ex(実行):1サイクル
 Flgs(フラグ計算):1サイクル
Pentium4ではこれら4サイクルかかる処理を、Pentium3ではExec(実行)の1サイクルで処理してしまう。
349デフォルトの名無しさん:04/10/03 17:46:58
俺は昔のMIPS R2000/3000時代の人だから、今時のCPUのことは言えないが、
昔から加算よりシフトのほうが重かった。

1クロックで加算をする回路は簡単に作れるけど、
1クロックでnビットシフトする回路は簡単には作れない。
ゆえに、1ビットシフトする回路をnクロック動かすのが現実的。

先輩が嘆いてた。
回路のことを気にしない純粋な情報系の学生さんが、
ファンアウト数を気にせずにロジックを組み合わせて、
それが何故いけないのか理解してくれないと・・・。
350デフォルトの名無しさん:04/10/03 18:03:14
ファンアウト数ってなんでしょう?
351デフォルトの名無しさん:04/10/03 18:08:22
サッカーでいうサポーターがサポート辞めることじゃない?
352デフォルトの名無しさん:04/10/03 19:23:08
ファンアウト数ってのは出力にぶら下がれる入力の数の事を言うんじゃないか?
353デフォルトの名無しさん:04/10/03 19:25:54
蛸足配線でファイヤーだな
354デフォルトの名無しさん:04/10/03 20:58:07
今の情報系の教育ってのは全く回路はやらないの?
355デフォルトの名無しさん:04/10/03 21:20:05
電子機械科
356デフォルトの名無しさん:04/10/03 21:21:35
てか今はどこの大学でもアセンブラ教えないな
日本だけじゃないけど

熱心に教えてるのはマレーシアや台湾、インドくらいなもんじゃないか
357デフォルトの名無しさん:04/10/03 21:26:08
>>349
>ファンアウト数を気にせずにロジックを組み合わせて、

ファンアウトか。
懐かしい・・・(遠い目)
358デフォルトの名無しさん:04/10/03 21:26:55
32bit幅だったら、32個分のシフト結果を
シフト数でmultiplexすればいいじゃーん
359デフォルトの名無しさん:04/10/03 21:39:41
漏れの学校もアセンブラなんか教えない
てかCしか教えない

自分で勝手に勉強するから別にいいんだけど
360デフォルトの名無しさん:04/10/03 21:48:38
うちは回路もアセンブラもやったよ
361デフォルトの名無しさん:04/10/03 21:49:33
回路って、AND・OR・EOR(XOR)ぐらいやっときゃいいの?また別の話?
362デフォルトの名無しさん:04/10/03 22:04:26
基本は増幅回路。
363デフォルトの名無しさん:04/10/03 22:10:48
デジタル回路じゃなくて?
364349:04/10/03 22:22:37
>>358

>>349の最後の段落を読み直してほしい。
365デフォルトの名無しさん:04/10/03 22:27:52
>>363
ディジタル回路でも中身はアナログ回路なので、
アナログ回路のことを全く無視してはいけないよ、
というのがファンアウトの話。
366デフォルトの名無しさん:04/10/03 22:30:58
アナログ⊂デジタル
367デフォルトの名無しさん:04/10/03 22:33:15
最近のCPUはアナログだから演算結果に誤差が出るんですね
へぇー
368デフォルトの名無しさん:04/10/03 22:33:45
>>364
ファンアウトってそのことだよね?
369デフォルトの名無しさん:04/10/03 22:48:31
>>366
逆じゃないか?
370 ◆FIcNi4f8js :04/10/04 16:04:34
4mA
371デフォルトの名無しさん:04/10/04 19:55:28
一番最近に出たx86系のアセンブラの書籍って何があるでしょうか?
WinXP環境下で例題を実行しているものを探しているのですが
372デフォルトの名無しさん:04/10/04 20:43:39
なんかエロゲーの改造主体の本が出てたな
一応アセンブラの本。
373デフォルトの名無しさん:04/10/04 21:06:50
「アセンブラとC、Delphiができます」

『ウチじゃ必要ないんだよね。いまどき出来ても意味ないし』



上っ面だけ見て知った気になってる奴には必要ありませんねとしか
374デフォルトの名無しさん:04/10/04 21:23:53
>>372
プログラマやゲーム解析者の間でクソミソに叩かれている本ですね。
筆者はネトランのライターで、本の半分はインテルのアーキテクチュアマニュアル丸写し、
他の部分も間違いだらけという凄い内容だそうで。
375371:04/10/04 22:22:38
>>372
それを買おうかと思ったのですが
アマゾンでぼろくそに言われてるので踏みとどまりました。
やはり最近はアセンブラの本って出てないんでしょうか
376デフォルトの名無しさん:04/10/04 22:31:59
書名キボンヌ
377デフォルトの名無しさん:04/10/04 22:33:23
いまどきのアセンブラ
378デフォルトの名無しさん:04/10/04 22:41:47
>>375
>アマゾンでぼろくそに言われてるので踏みとどまりました。

良かったですね。ゲーム解析スレでは、この本の購入者を「被害者」と呼んでますよ。
それと、アセンブラで何をしたいのかを詳しく書いた方が良いかと。
379デフォルトの名無しさん:04/10/04 22:59:28
ワロタ
まず作者が評価書いて、周りにけなされ始めたんで焦ってまた自演でフォロー入れたってのがバレバレな感じですな
380デフォルトの名無しさん:04/10/04 23:08:28
スキャンコードを取りたいのですが
うまいこといきません
381デフォルトの名無しさん:04/10/04 23:41:42
>>378
ゲーム解析スレってどこの板に有るの?
心当たり探したけど見つからんorz
382デフォルトの名無しさん:04/10/05 00:11:58
「はじめて読む8086」
MS-DOS上で学習を進めていく設定だけど、
XPのコマンドプロンプトにもDEBUGコマンドはあるから、それでよくない?
アセンブラはMASMとかNASMとか色々あるし。
383デフォルトの名無しさん:04/10/05 00:44:48
VisualCのデバッグモードでレジスタ一覧をウォッチしながらステップ実行するといい
384デフォルトの名無しさん:04/10/05 03:02:28
DEBUGか・・・軟派な俺は使ったことないや。
8ビット時代はROMに入ってるマシン語モニタを使うしかなかったから使ったけど・・・

DOS時代はCode ViewとかTurbo Debugger使ってたよ。
良いデバッガを使うことが、習得のしやすさに繋がると思うよ。
385デフォルトの名無しさん:04/10/05 08:10:34
386デフォルトの名無しさん:04/10/05 08:19:28
>>385
この本は参考にせず独習しろという意味のサブタイトルなんだろうな


387デフォルトの名無しさん:04/10/05 18:28:45
俺はてっきりマジカル☆オープンの方かと思っていたがそんな本が出ていたのか。
まあ橋本和明じゃな・・・。
388デフォルトの名無しさん:04/10/05 18:48:07
>>387

>>385を読んだやねうらおさんが、その内容のあまりの酷さにあきれて、
「解析魔法少女美咲ちゃん」の執筆を決意したとのこと。

>まあ橋本和明じゃな・・・。
問題のあるライターのようですね。他所でも文章のパクリを指摘されていたし。
389デフォルトの名無しさん:04/10/05 18:56:22
>>388
どちらも、あまり面白くなかったけど。
390デフォルトの名無しさん:04/10/05 19:17:57
>>389
禿同、どっちも酷かったけどな
391デフォルトの名無しさん:04/10/05 19:29:32
最近、思ってるのはオンラインで本買うと、
とんでもない糞本を買っちゃったりしてショックを受けたりする。
書評が絶対評価でない証拠かな。
やっぱり、その本を実際に手に取って調べてから買うほうが外れを引かないかも。
392デフォルトの名無しさん:04/10/05 20:40:55
専門書は安くないしねぇ。
糞本は火にくべてやれ!
393デフォルトの名無しさん:04/10/05 21:12:19
著者に買取りを要求するとか。

昔北朝鮮を楽園だと著書で賛美した某教授は
古本屋で著書を回収するのにやっきになっていたらしい……。
394 ◆FIcNi4f8js :04/10/05 21:13:02
どっちもどっちだけどあえて比べれば、美咲ちゃんの方が良かった。(謎
395デフォルトの名無しさん:04/10/05 21:27:08
美咲ちゃんの方がそりゃマシだけど、こっちはデバッガの使い方書いてるだけって感じだったな
396デフォルトの名無しさん:04/10/05 22:35:12
>>395
だな、あまりの酷さにあきれた割には呆れるなw
397デフォルトの名無しさん:04/10/05 23:29:48
いやまぁなんつうか、あれはアセンブラ本と呼んではいけないだろう。
まともな本のような書名と壮丁にすんなよ、まったく。
398デフォルトの名無しさん:04/10/05 23:40:57
購入者一同で訴訟起こしたら勝つんじゃないか?
399デフォルトの名無しさん:04/10/05 23:50:21
とりあえず出版社に苦情だな
400デフォルトの名無しさん:04/10/06 00:10:13
>>397
ゲームの解析本としても役に立たないし・・・
401デフォルトの名無しさん:04/10/06 11:35:31
「Intelのサイト以外で何かお勧めの本とか無いっすか?」
ttp://book.mycom.co.jp/book/4-8399-0986-5/4-8399-0986-5.shtml
これだな。これでCPUの構造と動きをマスターすべし。
402デフォルトの名無しさん:04/10/06 12:24:52
>>401
意外に良書だな
403 ◆FIcNi4f8js :04/10/06 13:01:10
あのCPUってデコーダはしょってるから
OUT B

OUT Im
があるのに
OUT A
が無いんだよね。

変わりに、裏命令で、
OUT (A+Im)
が有ったりする。(謎
404デフォルトの名無しさん:04/10/06 13:32:54
>>401
それ、至る所で良書に分類されてるな。
自分も買って読んだけど、買ってよかったと思ってる。
405デフォルトの名無しさん:04/10/06 14:16:36
>>401
意外に良書だね、まぁ正直なくてもいいけどw
406デフォルトの名無しさん:04/10/06 15:06:39
407デフォルトの名無しさん:04/10/06 15:21:07
アセンブラがわかればハードがわかる
http://www.cqpub.co.jp/try/bk2003a.htm
408デフォルトの名無しさん:04/10/06 15:23:45
いやもう比べるの明らかにおかしいでしょ、
何やってんだよまったくw

解析魔法少女美咲ちゃん
これ書いた奴吊って来い
409デフォルトの名無しさん:04/10/06 15:29:49
>>406
"いまどきのアセンブラプログラミング"のレビュー、
本の内容ならまだしも紙の質までも文句言われてる所にワロタ。
410デフォルトの名無しさん:04/10/06 17:05:02
文部科学省は、一刻も早く優良推薦図書にして小、中、高校に置くべきだな。
そうすれば、国内の科学技術教育の向上になることは確かだろう。
(もちろん、表紙やイラストそのままで)

CPUの創りかた
ttp://www.amazon.co.jp/exec/obidos/tg/detail/-/books/4839909865/
411デフォルトの名無しさん:04/10/06 17:15:43
>410
だな。
>401の本は、他の数ある(難しく書かれているものも含め)CPU本の中でも、プログラムのOPコードの0/1を受け取って、制御信号ON/OFF(0/1)を作る命令デコーダを作成しているところに格段の違いがある。
しかも、命令デコーダを、状態遷移図からステートマシンに持っていく、ASICのようなプログラムで組むのではなく、
しっかりとワイヤードロジックの回路で組んでいる。
これは、今も昔もCPUでは変わらないはず。
この辺に、この本が、アニメチックでも、内容がCPU製作入門のバイブルに成り得る理由がる。
実際のCPUの場合には、EDAツールで、回路図作って、レイアウトにして、レジストーエッチング回数分のフォトマスク層ごとにLAYER分割して、GDSファイルとして出して、
次に、フォトマスク描画装置用のMEBES等のファイルに変換し、ポリゴンなどを微修正し、データを描画装置に投入して、マスクを作る。
そのマスクをネガポジにして、ウェハーに焼き込む(ステッパー)。ちなみにマスク製造もステッパーも超縮小プリントになる。

>(もちろん、表紙やイラストそのままで)
は、別として・・・w。まァ、コレが無いと文章がつながらなくなると思うが・・・。
412デフォルトの名無しさん:04/10/06 17:18:12
少なくとも、ガッコでやった、真理値表やブール代数演算が、CPUの中でも、更にその中でコントロールしているデコーダで日の目を見ることを知り、また実際に実践的な学習ができる。
413デフォルトの名無しさん:04/10/06 17:32:54
>401の本「CPUの作り方」で、20年前の8080Aや命令セット互換のZ80は作れるようになるかもしれないが、
その後の16bitで採用され始めた、複数のアドレス指定方式、ページセグメント方式、パイプライン、キャッシュ引きを含めた予測機構、
現在のGHzオーダへの高速化のレイアウト(実配線)・半導体構造までには、開きが大きいだろうな。
この部分も2chで語れる位に技術的に土台ができないと、INTELには追いつけない。
414デフォルトの名無しさん:04/10/06 17:39:21
>>410
確かに。
あと、思ったのは英語に翻訳して海外進出もいいと思う。
Japanimationも流行ってるしw、結構うけるのでは?
いい線行くと思うよ。
415デフォルトの名無しさん:04/10/06 17:47:54
けど、Pentiumも特許でガチガチだからな・・・、ウカツに作れないな。
416デフォルトの名無しさん:04/10/06 17:54:33
作っても自分だけで使えばいい
417デフォルトの名無しさん:04/10/06 17:58:17
>>413
そういうものは、応用的な話では?
まずは、基本から。
418デフォルトの名無しさん:04/10/06 17:59:31
インテルは日本の企業でCPUは日本人が作ったってしってるか
419デフォルトの名無しさん:04/10/06 18:07:42
>>418
微妙に違うぞ。

インテルはCPUを、日本の企業の金で、その企業から出張してきた日本人が作った。
420419:04/10/06 18:09:06
うーん、なんかちゃんと伝わらない気がする。

「嶋正利」で検索しる!
421デフォルトの名無しさん:04/10/06 18:17:55
>>418
誤解の無いように、知識を身につけましょう。
422デフォルトの名無しさん:04/10/06 18:20:22
ムーアの法則のムーアが設立者の一人ってことぐらいしか知らない
423デフォルトの名無しさん:04/10/06 18:23:15
スレがすっごくいやらし光線
424デフォルトの名無しさん:04/10/06 18:24:06
>417
確かに。
まぁ、日本でも大企業が、パイプラインや2命令同時実行(スーパースケーラ)を作っているから、まぁそれほど杞憂するほどでもないかな。
>416
多分、CPUの作り方から、8080互換とか作るなら、
・コントロール信号を外部に引き出す為のコントロールレジスタ、もとい、これにビット立てる為のデコード→0/1制御信号回路。
・割り込みコントロール機構、割り込みレジスタ、割り込み(マスク)フラグレジスタ、、次アドレス保持用のスタック機構がいるな。
まぁ、これは「CPUの作り方」のを製作できて、多少ベンキョすれば、8080のINT,HALT(HOLD?),NMI辺りで数が少ないし、
割り込み許可不許可は、割り込みレジスタのビット立ったのと、マスクレジスタの値をANDを取れば済むことだし、それにより、ベクタ指定のエンコードは、デコーダ同様にやればできる、それをプログラムカウンタに入れてやってアドレス飛ばせばいい。
スタックへのアドレス退避、戻しは、INT命令デコードと外部割込み(ピンアサート)のデコードが要る、上記のベクタ機構も含めて。
425デフォルトの名無しさん:04/10/06 18:29:26
>>424
RAMアクセスは
426デフォルトの名無しさん:04/10/06 18:37:41
>425
それが、コントロールレジスタ(bitごとにR/W,・・・ワスレタ、が立つ)。
このコントロールレジスタが、アドレスレジスタ、データレジスタ同様、外部のピンに出ている。
コントロールレジスタにビットを立てる制御信号0/1も命令デコーダで作る必要がある。

あと、>424の追補で、x86はスタック操作にALUを使用するらしい。
http://www.watch.impress.co.jp/pc/docs/2002/0913/kaigai02.htm
どういうやり方やってるのかは知らないが、スタックというのは容器であり、先入れ後出しになるから、
その各レジスタをレジスタごと順次シフトの計算に使っているようだ。
けど、ここに書かれてるDedicated Stack Managerのように、単独で、スタック操作のデコード回路作るのがやりやすいはず。
427デフォルトの名無しさん:04/10/06 18:48:23
作るならPICマイコンのようなシンプルなものにするのがいいかと。
8レベルのハードウェアスタックを実装する配線がウザいかもしれないが。
428デフォルトの名無しさん:04/10/06 18:50:36
つまらん話題でオナヌーしてるハード屋さんハァハァ
429デフォルトの名無しさん:04/10/06 18:53:35
アレはIC10個で作れるってのがいいんだろ
430デフォルトの名無しさん:04/10/06 19:01:39
>429
だな。入門としてはモッテコイだ。
>427
PICはシンプルだからな。
シンプルさの由縁は、条件ジャンプは、1ステップジャンプでプログラムカウンタを2回回せばいいからだと思うが。
通常は、条件ジャンプ命令の尻尾の飛ばし先アドレスをつかませて、それをプログラムカウンタに入れるのが多いけど。

8080でも、命令セットがぴったり合えば、コンパチブル(互換)はいくらでもできるよ。
内部の構造・アーキテクチャはヨリドリミドリだ。
ペリフェラル(外部)素子との信号やり取りも、セットアップ・ホールド時間が合えばいい。
きつければ、clock自体を落として、ペリフェラルもろともスピード落としてやればいい。
431デフォルトの名無しさん:04/10/06 19:15:50
普通に作れば逆にペリフェラルがCPUに追いつかないんじゃないの?
432デフォルトの名無しさん:04/10/06 19:18:30
>431
なぜ?汎用IC使って、CPU作ってもかい?
433デフォルトの名無しさん:04/10/06 19:24:44
ところでこの板の住人は皆さん理系ですか?
434デフォルトの名無しさん:04/10/06 19:24:56
高卒出津
435デフォルトの名無しさん:04/10/06 19:38:58
>427
あと、PICは命令のアドレス方式(アドレス指定方式じゃない)が最大2アドレス指定で、
OPコード 第一オペランド,第二オペランド
しかも、演算や操作の相手は、ALUのコバンザメのアキュームレータ(PICの場合Wレジスタ)と決まっているからな〜。
OPコード f,Wの場合は汎用レジスタとWレジスタを計算し結果はWレジスタに置いたまま。w移動するにはmovしてやらないといけない。
OPコード f,selfの場合は、汎用レジスタとWレジスタを計算し結果は汎用レジスタ。コレはステップ数が一番多い方か・・・。
汎用レジスタ同士は演算できない。従って、命令デコーダも単純化できる。
ステップ数が少ないのがPICの特徴だな。
436デフォルトの名無しさん:04/10/06 19:51:47
ん、正しくは、アキュムレータか・・。
あと、
>2アドレス指定
も間違えた。
>2アドレス方式
だね。
437デフォルトの名無しさん:04/10/06 20:03:13
ところで、x86はWindows走ってる時のプロテクトモードってアドレス指定方式は、
レジスタ間接アドレス指定でしたっけ?
エト・・、ポインタ操作のアドレス参照にぴったりマッチしてるなぁと思って>レジスタ間接アドレス指定。
438デフォルトの名無しさん:04/10/06 20:21:11
欽ちゃんの

仮想大賞----------------------------------



べれっべーべッ
べれべーれッ
べれっべーべッ


1番、アドレス指定-------ッ(カン高い声)
ビロビロビーン
439デフォルトの名無しさん:04/10/06 20:27:51
>437は自己解決しました。
プロテクトモードでは、セグメント・ベース・アドレス指定(ベースアドレス指定)でした。
ttp://sano.s20.xrea.com/history_of_cpu_compatibility01.html
8086等のリアルモード(x86のDOS起動の場合)は、
インデックスレジスタがあるので、インデックスアドレス指定のようです。
ttp://www79.sakura.ne.jp/~third/programming/asm/assembly.html
440デフォルトの名無しさん:04/10/06 21:27:37
割り込みを掛けた場合、
プログラム、次の行のSTOPは、
エグゼキュート(実行)サイクルが終わって、次の行の命令フェッチサイクルに入ろうとする時に
内部CLOCKを止めればよいのかな?
441440:04/10/06 21:52:09
訂正です

内部CLOCKを止めればよいのかな?

ではなく

命令フェッチサイクルに移行しようとする内部制御信号に対し
内部CLOCKを止めればよいのかな?
内部同期の場合ですけど。

です。
442デフォルトの名無しさん:04/10/06 22:23:00
もう電子板でもどこでもいいから巣に帰ってくれ
迷惑だ
443デフォルトの名無しさん:04/10/06 22:32:44
同感
いい加減にしろ
444デフォルトの名無しさん:04/10/06 22:41:44
は?別にスレ違いでもないし
いい加減もクソもないだろ(w
445デフォルトの名無しさん:04/10/06 23:26:51
>>444
ハードの話はスレ違いかつ板違い
446デフォルトの名無しさん:04/10/06 23:34:53
じゃ、次の話題ができるまでってことにすれば?
自治厨の発言こそが一番無駄
447デフォルトの名無しさん:04/10/06 23:37:33
今後CPUの内部状態の話は全部禁止な。
CPUはブラックボックスとして扱うこと。
448デフォルトの名無しさん:04/10/06 23:53:51
ム板としてのアセンブラすれとして、↓から再開。次の方どうぞ。
449デフォルトの名無しさん:04/10/06 23:57:12
とりあえず、上のほうにある頓珍漢なx86の知識を
生ぬるぽっくり見守りたいと思います
450デフォルトの名無しさん:04/10/07 00:34:45
>>449
ガッ
451デフォルトの名無しさん:04/10/07 00:48:28
>>447
スーパー301条か?!
452デフォルトの名無しさん:04/10/07 00:54:43
    _  ∩
  ( ゚∀゚)彡 おっぱい!おっぱい!
  (  ⊂彡
453デフォルトの名無しさん:04/10/07 02:16:19
処で、CAP-Xってどこ行ったの?
#昔COMP-Xエミュレータを作ったのは内緒。
454いなむらきよし:04/10/07 23:27:43
まあアセンブラもできないやつはプログラマを名乗る資格はないって事だキケー!
455 ◆FIcNi4f8js :04/10/08 01:55:40
今は亡きVMテクノロジー
456デフォルトの名無しさん:04/10/08 09:12:45
.NETの中間コード手書きとか
457デフォルトの名無しさん:04/10/08 22:24:50
MSIL
458デフォルトの名無しさん:04/10/08 23:09:11
ハンドアセンブル出来る奴いるか??
459デフォルトの名無しさん:04/10/08 23:23:57
68000ならハンドアセンブルって言うかマシンコードじか打ちやったけどね
460デフォルトの名無しさん:04/10/09 02:34:09
>>458
出来ない奴の方が少ないと思う
461デフォルトの名無しさん:04/10/09 02:52:31
「マシン語覚えていて」なら極端に割合下がるけどな
462デフォルトの名無しさん:04/10/09 05:55:52
レジスタセレクタや命令デコーダのbit配置を頭に描くとマシン語が出てくる・・・
463デフォルトの名無しさん:04/10/11 03:46:12
レジスタの値を0にしたい時ってなんでmov eax, 0ってやらずにxor eax, eaxって排他的論理和をとることが多いんですか?
movだと何か問題があるとか?
464デフォルトの名無しさん:04/10/11 04:12:12
・8bit時代からの遺産
・命令のバイト数が少ない
・最近のCPUはxorによるレジスタクリアのための特別なサポートがある
465デフォルトの名無しさん:04/10/11 09:02:53
どうしてICって全部NANDの組み合わせでできてるの?
普通にそれぞれのゲート使ったほうが部品数も少ないだろうに
466デフォルトの名無しさん:04/10/11 10:23:45
>>465
> どうしてICって全部NANDの組み合わせでできてるの?
できてません。
467デフォルトの名無しさん:04/10/11 10:40:20
>466
昔はNANDだけで構成されていた。
NANDだけでどんなロジックでもできる。
>465
NANDが一番Trの数が少なく組めるから。
468デフォルトの名無しさん:04/10/11 10:53:51
>>467
なんか勘違いしてないか?
>468
    Vdd
    |
  ーーーーーーーー
  |      |
A→oPMOS.|→oPMOS
| |    | |
| |ーーーー.)ーーーーー出力
| |    |
| |    |
|→NMOS |
  |    |
  |ーーーーー
  |
B→NMOS
  |
 GND

で、MOS2個でできるんだよ。
470デフォルトの名無しさん:04/10/11 11:58:34
>469
正確には、
「C-MOS2つでできる」
であったな・・・。
471デフォルトの名無しさん:04/10/11 13:49:31
CMOSの数ならNORも同じだろう
トランジスタ数の話はTTLの方では?
472デフォルトの名無しさん:04/10/11 20:30:07
月刊トランジスタ技術
473デフォルトの名無しさん:04/10/11 22:33:38
(°Д°)ハァ?
474デフォルトの名無しさん:04/10/11 22:38:14
「クレイジークライコー」
475デフォルトの名無しさん:04/10/12 06:23:40
>>473 やっぱり素人には むずかしすぎた
476デフォルトの名無しさん:04/10/12 10:14:42
x86の質問なんだけど、loop命令って今はあんまり使わないの?
477デフォルトの名無しさん:04/10/12 10:45:43
>>476
んな、こたーない。
まず、疑問に思った理由を書け。
478デフォルトの名無しさん:04/10/12 10:49:22
ケースバイケースだな。
479デフォルトの名無しさん:04/10/12 13:03:28
ところでml.exeどこいった
480デフォルトの名無しさん:04/10/12 17:51:41
>>476
インテルのCPUはloopが遅いので使われないみたい
でもAMDのloopは速いらしい。

>>479
ここにあるよ
ttp://www.microsoft.com/japan/msdn/vstudio/downloads/ppack/download2.asp
481デフォルトの名無しさん:04/10/12 18:04:24
なんでloopじゃなくてdec ecx/jnzなの?
482デフォルトの名無しさん:04/10/12 18:08:17
>>481
うえにかいてあるやんw
483デフォルトの名無しさん:04/10/12 18:13:01
(゜Д゜)アッチョンブリケ!
484デフォルトの名無しさん:04/10/12 19:08:09
>>480
AMDのloopはVectorPath命令で遅いよ。
AMDの最適化マニュアルにも使うなって書いてあるし。
485デフォルトの名無しさん:04/10/12 19:24:40
rep movsd
をクアドレジスタ使ってどうかくの?
8バイト単位でコピーするからはやい?
486デフォルトの名無しさん:04/10/12 22:18:37
>>469

NAND自体のトランジスタ数が少なくても
ANDやOR、NOT、NOR、XOR等表現するのにNANDが何個もいるから
結局トランジスタもその分何倍も必要になる、つまり無駄だろ?
487デフォルトの名無しさん:04/10/12 23:02:24
>>486
釣りだと言ってくれ!
488デフォルトの名無しさん:04/10/12 23:20:43
>>486

>>465 >>467 >>469 これらは自作自演厨だからかまうな
489デフォルトの名無しさん:04/10/13 10:25:24
AMDのLOOP命令が速いというのはK6の事みたいですね。
K7,K8は遅くなってしまったようです。
490デフォルトの名無しさん:04/10/13 11:56:26
>>480
ありがとうう
でもアドミニじゃないからインスコできない_| ̄|(´Д`;)
491デフォルトの名無しさん:04/10/13 18:26:08
>>490
別にインストせずとも、解凍ソフトでml.exeとml.errを取り出せばいい
492デフォルトの名無しさん:04/10/14 15:57:27
C言語のソースコードをNASMのソースに変換したいのですが、
何か変換ツールってあるのでしょうか?(MASMならVCのコンパイルオプション
を変更すればいいのでしょうが…)
またttp://www.yuasa.kuis.kyoto-u.ac.jp/~nobu/study/nasm/nasm.html
以外にNASM関係の参考になるHP教えてください。

493LettersOfLiberty ◆rCz1Zr6hLw :04/10/14 16:36:14
Re:>492 コンパイラの付属ソフトに、Intel系プロセッサのアセンブリコードに変換してくれるプログラムは無いの?
494LettersOfLiberty ◆rCz1Zr6hLw :04/10/14 16:37:20
Re:>492 ああ、ごめん。アセンブリコードにすること自体はもうできるのね。それより、NASMに限定しなきゃ駄目?
495Dust:04/10/14 16:51:30
逆アセンブラの凄いツールしてったら教えてください。アセンブラツールも教えてください。リバースエンジニアリングを悪用するとかじゃないんでお願いします。
496デフォルトの名無しさん:04/10/14 16:58:35
>>495は美咲ちゃんに影響された人。
497Dust:04/10/14 17:12:51
逆アセンブラツールてどれですか?サイト教えてください。
498デフォルトの名無しさん:04/10/14 17:17:49
教えてもおまえみたいな香具師には使いこなせない
499デフォルトの名無しさん:04/10/14 17:18:31
500Dust:04/10/14 17:25:30
日本のツールじゃなく海外のツールだよ頭おかしいですか?逆アセンブラDownloadできるとこ教えろ!
501Dust:04/10/14 17:26:33
無料のお願い
502デフォルトの名無しさん:04/10/14 17:28:15
「Re:」の変な使い方を見てると殺意がわいてくる
503デフォルトの名無しさん:04/10/14 17:28:50
504デフォルトの名無しさん:04/10/14 17:30:18
505Dust:04/10/14 17:31:22
テスト
506Dust:04/10/14 17:36:09
>>503-504
どちらもForbbidenじゃねーか。氏ねよ!
507デフォルトの名無しさん:04/10/14 17:36:17
68用ならdisがあるぞ。
508デフォルトの名無しさん:04/10/14 17:37:12
>>506
おまえ、どんな環境でアクセスしてんだよ。
学校の串に弾かれてるんじゃねーか?
プププ
509デフォルトの名無しさん:04/10/14 17:40:53
またヘンな教えてクンか・・・
510Dust:04/10/14 18:06:12
505と506のdust偽者です。それで・・・例のツールは?
511デフォルトの名無しさん:04/10/14 18:07:08
誰か禁断のツールgoogleをおしえてやれよ
512名無し@google:04/10/14 18:14:27
http://www.google.co.jp/
ぐーぐるだよさいきょうつーるけんざん。
513デフォルトの名無しさん:04/10/14 18:51:11
日本人ならgoo使え
http://www.goo.ne.jp/
514デフォルトの名無しさん:04/10/14 18:56:50
gooって何
515デフォルトの名無しさん:04/10/14 19:01:47
goo.co.jp問題とか最早懐かしいな
516デフォルトの名無しさん:04/10/14 19:04:49
あれはco.jpを抑えなかったgooがわるい
517デフォルトの名無しさん:04/10/14 19:07:23
発生当時はドメイン買収で金払うのが一般的じゃなかったから。
無論、有名なほうに引き渡すべし、なんて方針も無かった。

# そーいやnhk.jpって空いてんのか?ひきこもり協会で押さえてやるか
518デフォルトの名無しさん:04/10/14 19:08:09
あ、抑えられてたわ。
519492:04/10/14 21:04:55
>LettersOfLiberty
レスどうもです。
勉強のためにNASMで吐き出せる物を探していたんですが、
どうやらないようですね。
520デフォルトの名無しさん:04/10/14 22:12:34
>>486

トランジスタ数はその通りなんだが
けっきょくNANDに統一したほうが作るのが簡単なんだな
マスクやパターンのレベルで
521ほんたま:04/10/14 22:35:47
おみゃ〜らよ、スリムドカンアップしたぞ。リソースエディタデバッグしたぞ。
だがまだバグはある。それにまだダイアログひとつしかつくれん。
2つ以上つくろうとすると、どっかデータがおかしくなっちゃうのだ!自分じわかるか?
だが、ダイアログひとつだけなら、ほぼ問題なくつくれるようにはなった。ほぼな…
おみゃ〜らよ、物事は何事も一歩一歩着実にだぞ!あせりは禁物だぞ!
現時点でここまで出来れば上出来すぎるぞ。おみゃ〜らよ!おりは神かもしれんな…♪
自分じわかる?
522デフォルトの名無しさん:04/10/14 22:55:42
若いからワカリマセン!
523デフォルトの名無しさん:04/10/14 23:44:37
>>521

アセンブラでタブブラウザは作れますか?
COMにアクセスできるなら何とかなると思うのですが。
524デフォルトの名無しさん:04/10/15 00:45:03
>>521
完成品が出来てから来い。
525デフォルトの名無しさん:04/10/15 18:43:15
APIとCだけでCOM扱える香具師なら
CALLに置き換えていけば出来ると思う
526デフォルトの名無しさん:04/10/15 20:48:43
自分でコンパイラ作った方が早い

527デフォルトの名無しさん:04/10/15 21:18:07
80x86アーキのインストラクションセット一覧表みたいなものはないですかね?
int16→0xDC 0x16
みたいな機械語と対になってる表みたいなのが欲しいのですが…
528デフォルトの名無しさん:04/10/15 21:36:10
intelのpdfに全部書いてる
529デフォルトの名無しさん:04/10/15 21:53:02
>>527
cd 16だろ
530デフォルトの名無しさん:04/10/15 23:32:32
>>528
ありがとうございます。
intelのホームページで探してきます…ってintelの鯖おちとるがな!!
531デフォルトの名無しさん:04/10/15 23:44:45
ftp://download.intel.co.jp/jp/developer/jpdoc/24319002_j.pdf ( PDF )
ftp://download.intel.co.jp/jp/developer/jpdoc/24319102_j.pdf ( PDF )
ftp://download.intel.co.jp/jp/developer/jpdoc/24319202_j.pdf ( PDF )

この三つのファイルがintelのホームページから削除されているんですが
どうしたらよいでしょうかね…
532 ◆nl7ClMRWE6 :04/10/16 01:05:13
533デフォルトの名無しさん:04/10/16 01:06:22
マスクこんなところにもいたー
534デフォルトの名無しさん:04/10/16 01:10:23
ここム板じゃねえか……orz
535デフォルトの名無しさん:04/10/16 16:49:16
Linuxでgccを使い、アセンブリの勉強をはじめた者です、、
自分で作ったとても短いプログラムを、
gcc -S で出力して、一行ずつ読もうとしてるのですが、

andl がどういう働きなのか分かりません。
Googleでも解説ページが見当たらず、、

とりあえず、gccが作成するアセンブリコードを読みたいのですが、
どのあたりを調べれば分かるのでしょうか、、、教えてください。
536535:04/10/16 17:20:14
ごめんなさい。馬鹿な質問をしました。
なぜそこでAND命令が出るのか不思議で、
ANDではないだろうと考えてました・・・

内容としても>240さんとまったく同一だと思います。
537デフォルトの名無しさん:04/10/16 18:51:19
ANDでいいんじゃない?

スタックって、大きな番地→小さな番地に向かって進むので、
ANDで下位ビットを0に丸めると、キリのいいところまでゴミを積むのと同じ効果があるんだよ。
538デフォルトの名無しさん:04/10/18 17:26:59
ANDがAMDに見えてしゃーないのはなんでですか。
539デフォルトの名無しさん:04/10/18 18:48:04
ANDっていうとコレだろ
ttp://and.intercon.ru/
540デフォルトの名無しさん:04/10/18 19:37:13
すいませんtasm32.exeはどこにあるんでしょう・・・
pro以上に付属するとあったのですが無料では無いでしょうか・・・
541デフォルトの名無しさん:04/10/18 20:48:04
つーーーほーーーしますたーーーーーー
542デフォルトの名無しさん:04/10/18 21:21:02
スーファミのアセンブラってどれが一番いいんだ?
p://www.intsys.co.jp/tools/cgb/sdk/archive/cgb_sdk991026.exe
もしかして↑これ?ダウソしたけど勇気無くてダブルクリックできない…
543LettersOfLiberty ◆rCz1Zr6hLw :04/10/18 22:22:49
[>542]を見て改めて思ったこと…
ゲーム機専用アセンブラなんてどうするのだ?
もしかしてロムでも作ってくれるの?
Re:>542 404だった。
544デフォルトの名無しさん:04/10/19 07:49:37
あーあ、踏んじゃったよこの人。
545LettersOfLiberty ◆rCz1Zr6hLw :04/10/19 12:45:20
Re:>544 何かあるのか?
546デフォルトの名無しさん:04/10/19 13:19:23
とりあえず変なRe:をやめい
547デフォルトの名無しさん:04/10/19 15:21:18
ICC8.1で、/QxN /QxBなとIntelのCPUに最適化するオプションで
コンパイルしたコードをAMDのCPUでどうさせたいのですが、方法は無いでしょうか?
548デフォルトの名無しさん:04/10/19 16:11:55
>>547
C++ソースにこれを追加する。
extern "C" void __intel_proc_init_N() {}
extern "C" void __intel_proc_init_B() {}
549デフォルトの名無しさん:04/10/19 16:20:27
ありがとうございます。
しかし、リンカで
libirc.lib(proc_init.obj) : error LNK2005: ___intel_proc_init_N はすでに
test.obj で定義されています
libirc.lib(proc_init.obj) : error LNK2005: ___intel_proc_init_B はすでに
test.obj で定義されています

と出てきて、はねられてしまいます。
550デフォルトの名無しさん:04/10/19 16:29:24
>>549
/QxN や /QxB つけてもはねられる?
どうしてもはねられるなら、/link /FORCE を付けてみて。
551デフォルトの名無しさん:04/10/19 16:46:11
>>550
うまく行きました。ありがとうございます。
552デフォルトの名無しさん:04/10/19 17:13:44
いえ、どういたしまして。
553デフォルトの名無しさん:04/10/19 22:14:29
ここの皆さんは普段どのプロセッサ向けのアセンブラ作ってるんでしょうか?
554デフォルトの名無しさん:04/10/19 22:36:45
Z80に決まってるだろ
なめんなハゲ


「Z80?なにそれ?Z32なら知ってるけど」


とか言う奴を原子炉の中に叩っ込んで
そのついでにチェレンコフ光を見てやりたいくらいである
555553:04/10/19 22:37:43
私もz80でやってます
556デフォルトの名無しさん:04/10/19 22:42:22
アセンブラ作ってる人がそんなにいるとは思えないが。
それともZ80で動く別のCPU用アセンブラを作ってるんだろうか。
557デフォルトの名無しさん:04/10/19 23:19:13
x86。
フルアセンブラではないけど
558デフォルトの名無しさん:04/10/19 23:59:28
Z8用のクロスアセンブラだったら作ったけどね。
あぁ、Z80/8085/8080用のアセンブラも作ったわさ。
N88Basicでw
559デフォルトの名無しさん:04/10/20 00:35:18
おいらはプレイステーション(1の方)上で動作する
Z80のディスアセンブラとデバッガを作ったことがあるじょ。
デバッガの関数名はもちろん「DDT」にした。
560デフォルトの名無しさん:04/10/20 01:10:57
↑特殊な趣味の変態ですか?
561デフォルトの名無しさん:04/10/20 02:11:13
>>559
それって、懐かしのゲームをエミュレータ方式で忠実に移植しちゃいましょう、って奴ですか?
562デフォルトの名無しさん:04/10/20 02:19:21
GBとMSXのどっちだろ
563ほんたま:04/10/20 04:06:11
おみゃ〜らよ、スリムドカン1.1.9アップしたから見ちみれ?
おみゃ〜らよ、リソースエディタ2つ以上つくれるようになったぞ。不完全ではあるがな…
おみゃ〜らよ、サンプルのDaialog.asmをビルドすると、2つあるダイアログのうちのひとつが開き問題ないように見える。
だがこりはリソース内部ではデータ
がまだどっかおかしくなっているのだ。だからいろいろいじくるとボロが出てくる…
おみゃ〜らよ、もう少しデバッグしなけれなならんようだ…
だがここまでくるとおりはもはや神だな♪
だがおみゃ〜らよ、おりは次のメニューの作成に移ってもいいかな?どうじ?
メニューをつくりながら、ひまを見てはダイアログをあとちょっとデバッグするという路線でいこうと思うのよ。自分じどうか?
564デフォルトの名無しさん:04/10/20 19:14:09
>>532
いまさらながらのお返事ですが(汗
ありがとうございます。

現在APIC(Advanced Programmable Interrupt Controller)の挙動を調べるために
いろいろ書籍等をあさっているのですが。やっぱりIntelオフィシャルの英語マニュアルしか
情報は無いんでしょうか…

APIC周りが詳しく書かれた日本語のWebや本等ありましたら、どなたか情報をください。
お願いします
565デフォルトの名無しさん:04/10/20 19:16:48
うんちおいしい
566デフォルトの名無しさん:04/10/20 19:21:42
>>564
8259 picで検索すりゃいくらでも出てくるだろ
567デフォルトの名無しさん:04/10/21 00:02:59
>>548の方法だとDAZモードがイネーブルにならないようなので、
こっちの方がいいかもね(ほとんど変わらないとは思うが)。
extern "C" int __intel_cpu_indicator;
extern "C" void __intel_cpu_indicator_init() {__intel_cpu_indicator = 0x200;}
しかし、スレ違いだな…。
568デフォルトの名無しさん:04/10/21 09:06:23
リンカもどきを作ってるのですが、
関数の先頭アドレスは、やっぱり境界を4バイトや8バイト毎に揃えた方が
効率が良くなるのでしょうか?
今作ってるやつは何も気にせず隙間なしで詰めちゃってますけど。
569デフォルトの名無しさん:04/10/21 09:11:32
あと、詰め物を入れるからには、関数呼び出し以外に、
ラベルのジャンプ先もあわせないとたぶんあまり効果がないですよね。
これはリンカの仕事じゃないですけど。
570デフォルトの名無しさん:04/10/21 09:17:53
>>568
ターゲットCPUが判らないとなんとも言えませんが。
例えば86系でも8088は2バイト境界ですら無駄。
571デフォルトの名無しさん:04/10/21 09:30:02
ttp://hp.vector.co.jp/authors/VA003988/asm.htm
によると、

>命令のフェッチはキャッシュから16バイト単位で行われるため、
>ジャンプ先の最初の命令が16バイト境界をまたがないようにする。
(486の場合)

とあるので、関数とラベルは16バイトの境界合わせをするのが良い?
でも16バイトって結構長いですよね。
最長15バイトも穴埋めが必要ですが、全部nopで埋めて良いんでしょうか。
(nop自体もクロックって掛かりますよね?)
Pentium以降だとまた事情が変わってくるみたいですが、
Pentium3と4に限ると、何が最適でしょうか。
572デフォルトの名無しさん:04/10/21 09:31:59
>>569
すいません、Pentium3以降で効率が上がれば良いです。
573デフォルトの名無しさん:04/10/21 10:19:28
ftp://download.intel.co.jp/jp/developer/jpdoc/iaopt_j.pdf
Page 2-7 「コード」

ftp://download.intel.co.jp/jp/developer/jpdoc/24896606_j.pdf
Page 2-65 「NOP」

Pen4はトレースキャッシュの為、コードのアライメントを揃える必要はない。
574デフォルトの名無しさん:04/10/21 23:31:14
質問させてください。。VC++6.0(インラインアセンブラ)なんですが、
以下の部分をReleaseモード時のみ通らなくなります。。
どうしてなのかお知りの方、お教え下さい。。

  mov eax , 適当な数
  mov ebx , 10
  mov edx , 0
  div ebx
  add edx , 48 //'0'
→ mov byte ptr [edi], dl ←ここで止まります。

ちなみにeaxの数の下一桁をとって、文字列に変換しようとしています。
  hensu = '0' + (num % 10); というイメージです。
よろしくおねがいします。。
575デフォルトの名無しさん:04/10/21 23:41:47
nopさーん

ウホ、ウホホホホウホ

おやおや、ゴンタ君もおおはしゃぎですね
576デフォルトの名無しさん:04/10/22 00:38:17
淫乱アセンブラ
577デフォルトの名無しさん:04/10/22 09:40:43
>>574
ediの初期化部分も晒せ
578デフォルトの名無しさん:04/10/22 23:08:39
ediがぬるぽな予感。
579デフォルトの名無しさん:04/10/22 23:12:52
mov ds:[>>578], ガッ
580デフォルトの名無しさん:04/10/22 23:28:59
止まるってのは実行時に止まるのかコンパイル時に止まるのか
コンパイル時に止まりそうにないが
581574:04/10/23 09:02:27
レスありがとうございます。。止まるのはReleaseモード実行時のみです。
止まった時にデバッグを開くとediに20が入ってました・・・
でもデバッグモードで1行ずつ進めていくと値が入ってるんです。。

というか・・・今関数の先頭行で引数をprintfしたら、
2回目の呼び出しでediに入れる変数のポインタが20になってました・・・>_<;
すいませんもういっかい見て出直してきます。。
582デフォルトの名無しさん:04/10/23 09:12:09
ediに(ry
だれか説明してや(ry
583デフォルトの名無しさん:04/10/23 09:31:39
>>581
ediってのは拡張レジスタだから使うときは宣言しないとだめだよ
584574/581:04/10/23 10:31:34
そうだったんですか・・・ありがとうございます>_<;
ネットで見よう見まねでやってたものですから。。
まず本屋さんにでも行ってきますw
585デフォルトの名無しさん:04/10/23 10:36:45
>>583
意味不明のこと教えるなうすの炉
586デフォルトの名無しさん:04/10/23 12:03:27
>>584
インラインアセンブラを云々する前に、C++がどういうアセンブラ出力をするかよく勉強しろ。
特に、最適化の有無(Debugビルド/Releaseビルド)での振る舞いの違いに注意。
587アセ初心者:04/10/23 20:03:15
愚問と知っての質問失礼します

http://data.uploda.net/anonymous/etc2/dat5/upload21198.txt

このプログラムを10秒後に終了するようにするにはどうしたらいいでしょうかorz
タイマ割り込みとかよくわからないんです・・・
ヒントください
588デフォルトの名無しさん:04/10/23 20:33:15
>>587
環境がよくわからない。
プログラマブルタイマを使って割り込みでも掛けるのが常套手段だが。
589587:04/10/23 20:49:19
環境はイマイチわからないです・・・
インテル8085プロセッサを使ったI/Oボードなんですが。

SW1ってボタンを押した回数をカウントしてディスプレイに表示するプログラムです。
ちょっとコメント付け加えました↓
http://data.uploda.net/anonymous/etc2/dat5/upload21200.txt

できればプログラマブルタイマっていうのを詳しく教えていただけませんか。
590デフォルトの名無しさん:04/10/23 20:56:19
>>589
ハードウェア構成が判らないとなんとも言えませんが。
大抵は外部にタイマを持っていると思うので、それを何らかの形で利用すればいいのですがね。
なんらかのタイマも時計(カレンダ)も持っていなければお手上げですね。
591デフォルトの名無しさん:04/10/23 21:19:34
>>587
どうすればプログラムを終了できるんだ?
とりあえず10秒経ったら電源落とせ
592587:04/10/23 21:26:10
すいません、ちょっと言い方が悪かったかもしれませんが、
10秒たつとSW1を押してもカウントされないようにするって意味です・・・
593デフォルトの名無しさん:04/10/23 21:56:22
ふつうに10秒たったらnopのループにすればいいんじゃねーの?
594デフォルトの名無しさん:04/10/23 22:18:53
クリスタルキングが歌ってますが
I/Oは何故取り戻さないといけないのですか。

595デフォルトの名無しさん:04/10/24 00:47:49
プログラマブルタイマをセットしてポーリングするのが最も簡単だね。
それがなければ、仕方ないからせっせと8085のクロック数を計算して
ループをその分回すしかなかろう。

8085はパイプライン構造ではないから計算通りのクロック数で走る
のではないかと思う。
596デフォルトの名無しさん:04/10/24 00:55:45
時はまさに世紀末
597デフォルトの名無しさん:04/10/24 02:54:13
「nopさーん」
598デフォルトの名無しさん:04/10/24 09:24:23
you a shark!
599デフォルトの名無しさん:04/10/24 09:32:02
>>594
バス占有しっぱなしは駄目だぞ
600デフォルトの名無しさん:04/10/24 09:58:03
I/Oポートの何番に何がマッピングされているか詳しく書いてほしい。
601ε=( ̄。 ̄)yー~~:04/10/24 13:08:13
>I/Oは何故取り戻さないといけないのですか。

CPUには、MEM/IOなぞというコントロールピンがあって、H/L制御でデバイスを選び、
MEMとIOが同じアドレス(アドレスバス上の信号)であっても、別のデバイスを選択する、
すなはち、MEM空間とIO空間が別にある。
IO空間へのアクセスをアセンブラのIO制御命令で行う場合は除くとして、IOよりCPUへのアクセスは外部割込みとなる。
一つの外部割込みが延々と続く場合、他の優先順位が大きい多重割り込みが発生した場合、どんどんスタックに値が溜まってゆく、すなはちスタックオーバーフローの可能性が出てくる。
メモリのオーバフローの場合、x86系では、例外エラーのブルーバック画面に移行する。

尚、モトローラ・IBM68系ではメモリ空間内にIO空間がある。
すなはち、アドレスで、メモリとIOが連続している、すなはち、アドレスバスが太い、すなはちRISCの特徴。
この場合でも、IOからCPUへのアクセスは割り込みだ。
602デフォルトの名無しさん:04/10/24 13:36:45
一般的にI/Oをポーリングするより割り込みを使った方が応答性が良い。
プログラムも簡単になる。
但し>>601も言っているように、連続して異なるレベルの割り込みがかかると
コントローラのような貧弱なメモリ空間では苦しくなる。今の場合は10秒間
経った事を検出しさえすればよいので、そういう問題は生じないだろう。
603デフォルトの名無しさん:04/10/24 14:20:02
>>601
所々勘違いがあるようですね。もっと頑張りましょう。
604デフォルトの名無しさん:04/10/24 16:31:12
ε=( ̄。 ̄)yー~~
は荒し。放置でおながいします。
http://science3.2ch.net/test/read.cgi/denki/1088265446/656
http://science3.2ch.net/test/read.cgi/denki/1093023679/455

いままで電電板を荒してたんだが、ム板にまで進出してきたか。
次は昔のPC板あたりが標的か?
605デフォルトの名無しさん:04/10/24 18:04:34
>メモリのオーバフローの場合、x86系では、例外エラーのブルーバック画面に移行する。

はぁ?誰も糞OSの話なんてして無いだろ
606デフォルトの名無しさん:04/10/24 18:24:24
IN命令を実行する時にウェイトが自動的に挿入されるようなハードウェア
だったら面倒だな。もっともこれは昔の腐ったメモリにも言えるけど。
やっぱり割り込み使おうぜ。それが一番確実だ。
607ε=( ̄。 ̄)yー~~:04/10/24 18:27:19
>605
>604の「所々勘違いがあるようですね。」の部分をずばりしてきたか・・・。

確かに、ブルーバック画面を出すのはCPUな訳は無い品。
例外エラーのルーチンに持ってく処理は、x86だが、処理コードはBIOSもしくはOSだな。
それぞれ、リアルモード、プロテクトモードで違ってくる。
もっと突っ込むと、そもそも例外も含め割り込みは、例えば、例外では、
例外でOSがINT×(番号忘れた)を出したり、CPU内部エラーでINT×をCPU内部で生ずると、
割込みフラグレジスタにフラグを立てる、その値と割込み許不のマスクレジスタのANDを採り、
IDTR(割込みディスクリプタテーブルレジスタ)の一部(上位か下位か忘れた)に入れる。
IDTRの値のアドレスを検索、すなはち、割込みベクタテーブルアドレスの内容を引きにいく、
ベクタテーブルの内容をアドレスとして、割込み・例外処理ルーチンに飛ぶ。
そのルーチンには、ブルーバック画面のコードが書かれている。
IDTRで値を入れてない部分の値は、リアルモード、プロテクトモードで違ってくる。
すると、引きに行く割込みベクタテーブルアドレスが違ってくる。
すなはち、リアルモードとOSによる例外のプロテクトモードでは、見る割り込みベクタテーブルも割込み処理ルーチンも違ってくるということだわな。
リアルモードでは、割込みベクタテーブルは0番地〜(BIOS上)にあり、割込みルーチンは、おそらくBIOS上(或いは640kバイト内にあるかもしれない)、
主にOSが行うプロテクトモードでの例外は、割込みベクタテーブルも割込みルーチンも1M以降のメモリ空間にある。

この意味では、違ってるな。

>603
「所々勘違い」と書いているからには、まだあるということか?
どこだ?
608デフォルトの名無しさん:04/10/24 20:08:24
勘違いだらけで突っ込む気も起きん
609ε=( ̄。 ̄)yー~~:04/10/24 20:40:39
>608
ソフト屋か?
ソフト屋は、例外は、exception、try,throw,catchがOS内でのソフト内処理だと思っているからタチが悪い・・・。
いいページがあった、贈ろう。
ttp://tech.millto.net/~morry/vmm/vhw/cpuint.htm
610デフォルトの名無しさん:04/10/24 20:48:22
いきなり割り込んできてスレ乗っ取る気なんかね?

とりあえず放置しようぜ
611デフォルトの名無しさん:04/10/24 20:54:51
あぼんに登録しました
612ε=( ̄。 ̄)yー~~:04/10/24 21:08:13
問題は、リアルモードで、割込みベクタの内容がBIOS上のアドレスを示しているか、メモリ上(OS上)を示しているか、
すなはち、割込みルーチンがBIOS上にあるか、OS上(おそらく640kのコンベンショナルメモリ内)にあるかだが、
確かめる方法はある。
違うOSを載せて、リアルモードで動作させることができた場合(仮想ではない。ここが難しい)、例外が生じた時、同じ画面が出るかどうかで判断できる。
同じ画面が出れば、リアルモードの割込みハンドラルーチンはBIOS上にあることになる。

>604のようなのを何と言うか教えてやろう、
・人のアラを探す。
・重箱の隅
と言う。>604のリンクは前レスもあわせて見てみれば、意味が分かるであろう。
>610
内容が「割込み」だけに、
>いきなり割り込んできてスレ乗っ取る気なんかね?
     ~~~~~~~←ココ
か?小ザムイギャグだ。内容がナイヨぅだな・・・。

>604、>610
ザマア無いな・・・、wクァッ!クァッ!・・・
613デフォルトの名無しさん:04/10/24 21:11:34
判った風な顔をして墓穴掘り捲くってる香具師が暴れてるスレはここですか?
614デフォルトの名無しさん:04/10/24 21:28:25
ここじゃないです
615デフォルトの名無しさん:04/10/24 21:56:50
__________
    <○√
     ‖  
     くく  
とりあえずε=( ̄。 ̄)yー~~は俺がここを支えているからどっかに入ってくれ
616コウカ?=( ̄。 ̄)yー~~:04/10/24 22:02:26
__________
    <○√
     ‖  
     くく  
    ε=(*。*)y\~~
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
617デフォルトの名無しさん:04/10/24 22:05:46
>ε=( ̄。 ̄)yー~~

もうすこしIDTRレジスタについて勉強しよう
618デフォルトの名無しさん:04/10/24 22:56:03
言ってることが見当違い過ぎる

それ以前にこいつは既知外だが
619デフォルトの名無しさん:04/10/24 23:04:15
ε=( ̄。 ̄)yー~~ は、彼女どころか同性の友達すらいないんだろうな。
実社会では誰にも相手にされず、唯一2chだけが彼をかまってくれるんだろ。
みんな、もうちょっと温かい目で見てあげようぜ(プ
620デフォルトの名無しさん:04/10/24 23:09:52
なんでそんなホイホイ釣られるんですか?
621デフォルトの名無しさん:04/10/25 01:24:09
学校でアセンブラを習い始めたんでとりあえずmasm32をインスコしてみた。
でも使い方が分けわかんねぇ・・・・orz
自分の環境はP4でXP、なんかいいHPとかないすかね?
とりあえずコマンドプロンプトのDEBUG機能使ってアセンブラの練習してまふ
622デフォルトの名無しさん:04/10/25 08:36:39
>>621
本嫁
623デフォルトの名無しさん:04/10/25 23:06:39
>>622
初心者向けのmasm32解説書なんてあるんですか?
文法からコンパイルの仕方などが流れに沿って解説されてるようなやつ希望
624デフォルトの名無しさん:04/10/25 23:18:08
コ ン パ イ ル の 仕 方
625デフォルトの名無しさん:04/10/25 23:20:14
>>623
http://www7.plala.or.jp/keny01/asm/
ここじゃものたりない?
626デフォルトの名無しさん:04/10/25 23:37:05
>>623
生まれてくるのが10〜15年遅かったようだな
627デフォルトの名無しさん:04/10/25 23:40:34
とりあえず「まずむ」とか言うな!!!!!!!!
628デフォルトの名無しさん:04/10/26 00:03:49
>>626
大学の講義で「計算機械」という科目があるんですが(もちろん必修)
計算機の動作原理を学ぶ内容のはずが担当教授の暴走によりアセンブラの
授業になってしまって困ってるんです><

>>627
「えむあすむ」でしょ?nasmは「えぬあすむ」lasmは「えるあすむ」で
いいのか?
629デフォルトの名無しさん:04/10/26 00:18:04
アセンブラ分かれば下手に概念だけの授業よりよっぽど計算機のことが分かるような。
630デフォルトの名無しさん:04/10/26 00:31:40
>629
癒えてるね。
631デフォルトの名無しさん:04/10/26 00:59:11
講義の本来の内容にもよるけどな。
論理回路とかコンピュータアーキテクチャとかはアセンブラやってもわからんでしょ。
632デフォルトの名無しさん:04/10/26 01:45:26
MASMって今は無料なの? いいなぁ。

俺裸の時は、MASMが含まれてた頃のMS-DOSからMASMだけ引っ張り出して使ってたよ。
別売りになった途端、すげー値段が高くなったような・・・。
633デフォルトの名無しさん:04/10/26 02:21:30
634デフォルトの名無しさん:04/10/26 02:32:32
>>632
ただで落ちてるよ。
635デフォルトの名無しさん:04/10/26 03:13:28
>633のストアドロジック方式じゃなく、マイクロプログラム方式だが、
これもあるぞ。
ttp://www.ics.kagoshima-u.ac.jp/edu/expII1/
636デフォルトの名無しさん:04/10/26 06:46:11
MinGWにgasは、付いてないってことですか?
どすで、as -v と打ったら何やらversionと出てきたのでてっきり‥
637デフォルトの名無しさん:04/10/26 08:02:29
いきなり何なの
638デフォルトの名無しさん:04/10/26 21:43:32
VC++6.0でHelloWorldプロジェクトをスケルトンのまま混合モードで表示させてみたんですが、
mainに入る前に
add byte ptr [eax], al
がずら〜と並んでるんですが、これは何の意味があるんでしょうか?
639デフォルトの名無しさん:04/10/26 21:47:32
>>638
たぶん、プログラムのエントリに入った直後じゃないかな。
エントリと main() が異なることは分かってる?
640デフォルトの名無しさん:04/10/26 22:24:04
わかってないです・・・すみません
プログラムのエントリとmainって違ったんですか。
組み込み系のアセンブラをやっていたのですが、
アプリに関してはさっぱりです。

何かその辺のことについて書かれている書籍とかご存知でしたら教えて頂けませんか?
641デフォルトの名無しさん:04/10/26 22:29:09
>>640
いや、別にむつかしい話じゃないよ。

VC6 のコンソールアプリの場合、
VC6 に付属のライブラリで実装されている次の関数がエントリとなるんだよ。
int __cdecl mainCRTStartup();

この関数の実装では、いくつかの前処理と後処理を行っていて、
その途中で開発者が定義した main() を呼び出している。

というまぁそれだけのこと。
もっと詳しいことを調べると mainCRTStartup() を独自に実装するような
裏技も使えたりするよ。
642ほんたま:04/10/26 22:55:30
おみゃ〜ら〜、「スリムドカン」のダイアログエディタが完全になったぞ。吉報だ!
おみゃ〜ら〜、「スリムドカン」のダイアログエディタはひとつのダイアログばかりでなく、複数のダイアログを自在に編集し、しかもそれをメインウィンドウから別々に開くことができるまでに進化したぞ!わかるか?
つまりおりは神だってこと!!
おみゃ〜らよ、一応自己テストではバグは出なかったが、使っているうちにバグが見つかるかもしれんから、そのときは報告してくれ♪
おみゃ〜らよ、「スリムドカン」もいよいよ完全なダイアログエディタを備えるまでになったってことだ!!
おりは神だな♪
おみゃ〜らよ、次はいよいよメニューエディタの作成に取り掛かるぞ!
今年中にメニューエディタ、アイコンエディタまでは完成させときたいな♪どうよ?おみゃ〜ら〜?
おりは神だな♪
643デフォルトの名無しさん:04/10/26 23:03:24
>>638
セクションの先頭をページアラインするために、0でパディングしているだけです。
644639:04/10/26 23:07:21
>>643
あ、そういう話か。
すんませんね、想像で別方面の説明しちゃったよ。
645デフォルトの名無しさん:04/10/26 23:39:48
ここのアフォ共に何とかいってやってください

goto文を恐れなく使う兵達のスレ
http://pc5.2ch.net/test/read.cgi/tech/1021364372/
646デフォルトの名無しさん:04/10/26 23:47:01
>>645
なんか言ってどうにかなるようなもんじゃないし。
647デフォルトの名無しさん:04/10/27 00:33:48
今時、goto文なんて使ってんじゃねーよ
ローカルスコープにしか飛べないなんて、使い物になんないぜ
648デフォルトの名無しさん:04/10/27 00:36:11
そうでもないけどな。

でもC++でローカル変数のオブジェクト生成を飛びこえられないのは
とっても使い勝手が悪い(gcc限定?)。
649デフォルトの名無しさん:04/10/27 00:40:18
俺はそういう時インラインアセンブラ使ってる
650636:04/10/27 02:49:34
すいませんでした、
MinGWでも gasi、できました

「プロ〜ングの力を生み出す本」の、GDBのコマンド・ファイル読み込みで
> gdb -x comfile puu となってたのでまごついてしまった、
dosでは当然、拡張子(略
651デフォルトの名無しさん:04/10/27 07:16:31
このC言語を8086アセンブリに変換したらどうなりますか?

count=0
for(i=0;i<=1499;i++)
{
if(Array(i)<0)
{
Array(i) = -Array(i)
count++
}
}

;Arrayはsigned 32bitsの整数です。
;どなたかお願いします。
652デフォルトの名無しさん:04/10/27 07:24:22
653デフォルトの名無しさん:04/10/27 08:06:07
>>651
 signed 32bitsってなんだ??
654デフォルトの名無しさん:04/10/27 08:24:19
signed long int...t...t
655デフォルトの名無しさん:04/10/27 08:46:12
こんな感じかな? 8086emulatorでいいんだよね?

# make_COM#
ORG 100h
Start:
MOV al, data
MOV ah, al
MOV bh, ah
MOV ch, bh
AND al, 1
SAR ah, 1
AND ah, 1
OR al, ah ; A+B

SAR bh, 2
AND bh, 1
mov al, bh ;(A+B)+C
SAR ch, 3
AND ch, 1
AND al, ch ;(A+B+C)*D
MOV bl, al
AND bl, 1

RET

DATAdb 00000111b
656651:04/10/27 09:15:15
>>655
 ありがとうございます。でも、ちょっと僕が言っていたのと違いますね。ごめんなさい。
 
どなたかわからないでしょうか?
 
657デフォルトの名無しさん:04/10/27 09:19:32
>>651 C言語自体も知らないとみた
658651:04/10/27 09:49:30
>>657

この問題のC言語程ならわかります。
659デフォルトの名無しさん:04/10/27 10:17:06
>>651 のどこが C なんだ?
660デフォルトの名無しさん:04/10/27 10:25:15
絶対にCじゃない
661657:04/10/27 11:25:30
>>651
やるたいことを予想してみると、
配列でマイナスのものカウントと
マイナスの場合、正の値にしたいということ?

8086は、よくわからないけど
カウントは、最上位ビットが立っているものをカウントして
正の値にするのは、反転させて+1すればいいと思うよ。
662デフォルトの名無しさん:04/10/27 11:30:37
マルチにマジレスすんなよ
663651:04/10/27 11:58:18
>>661
 ありがとう。そう、Array(long integer (signed 32-bit))
がnegative numberだったらそれをpositive numberに変換するような
 感じ。だから、ArrayのMSBが0だったら1に変換するようなcodeを
 書きたいんだけど、ちょっと挑戦してみます。どうもありがとう!!
664デフォルトの名無しさん:04/10/27 11:59:52
馬鹿じゃなきゃ、自分でCコンパイラに食わせて、出力を見るだろうよ・・・。

紙と鉛筆で机の上でウジウジしてる学生さんだね。
学校の宿題かなんかじゃないの?
665651:04/10/27 14:26:57
emulator8088 って日本でも使われてるんですか?
666651:04/10/27 16:51:22
emulator8080 って日本でも使われてるんですか?
667651:04/10/27 19:20:23
emulator8000 って日本でも使われてるんですか?
668デフォルトの名無しさん:04/10/27 19:37:21
669デフォルトの名無しさん:04/10/27 19:42:57
>>667
マジレスすると、けっこう年とった人は使ったことあると思う。
若い人は全然知らんと思う。
670デフォルトの名無しさん:04/10/27 21:31:38
よくいうよ。
671デフォルトの名無しさん:04/10/27 21:49:50
若い人はemulator4836のほうが馴染みがあるんじゃない?
672デフォルトの名無しさん:04/10/27 22:25:02
自作自演乙
673デフォルトの名無しさん:04/10/31 21:46:33
x86系は遅延スロットを意識してコードを書かなくてもいいの?
674デフォルトの名無しさん:04/10/31 23:43:34
あの子を意識してしまいコードが書けません!
675デフォルトの名無しさん:04/10/31 23:51:39
関数のアラインあわせで埋まってる0xCCってint 3でしょ?
int 3て何ですか?(VC)
676デフォルトの名無しさん:04/11/01 00:21:30
677デフォルトの名無しさん:04/11/01 20:00:12
ありがとうございます
678ほんたま:04/11/01 21:57:19
おみゃ〜らよ、おりはいまマシン語プログラミングソフト「スリムドカン」のサンプルを充実させようと取り組んでいるところだ。
だが、おみゃ〜らよ、「ファイルの開く」コモンダイアログがどうも出ないのよ。
おみゃ〜らよ、「ファイルの開く」コモンダイアログを出すアセンブリソースでいいのないか?
できればnasmでいいのないか?マクロを使ってない、フルアセンブリコードのサンプルができればいいな♪
それ見てパクって「スリムドカン」のサンプルにするから‥♪
あと「猫でもわかる‥」みたいな解説のアセンブリ版みたいなサイトないか?
679デフォルトの名無しさん:04/11/01 22:12:40
>>678
コンパイルを途中で止めて生成されたアセンブラソース読めばいいんじゃねーか?
680デフォルトの名無しさん:04/11/01 22:25:03
WTLのヘッダファイル見れ
681デフォルトの名無しさん:04/11/02 20:04:43
たまに生えてくるこのキチガイはコテなんですか?
682デフォルトの名無しさん:04/11/02 20:23:25
空気だからきにすんな
683マイク ◆yrBrqfF1Ew :04/11/03 13:48:39
キチガイというのはそもそも2ch自体もそうだろう。
ヤツだけというわけじゃないな。
684デフォルトの名無しさん:04/11/03 14:39:37
また湧いた
685デフォルトの名無しさん:04/11/03 16:43:07
男は黙ってNGName
686デフォルトの名無しさん:04/11/03 19:11:29
くれ〜MASM街の〜
光とハゲの中ぁ〜



ということでMASMをくれ。
687デフォルトの名無しさん:04/11/03 21:53:20
nasmの構文解説したサイトどっかない?
688デフォルトの名無しさん:04/11/03 22:00:02
689ほんたま:04/11/03 22:51:42
おみゃ〜ら〜、すげーぞ〜!!!
おみゃ〜ら〜、「スリムドカン」の最新版をアップしたぞ〜♪
おみゃ〜ら〜、「スリムドカン」の最新版はすげーぞ〜♪
まずダイアログエディタにバグが見つかったので、それを直した。
次におみゃ〜らよ、サンプルプログラムをすこぶる充実させたから、見ちみれ?
おみゃ〜ら〜、サンプルにはビットマップの描画サンプルと、「ファイルを開く」コモンダイアログを出すサンプルが仲間入りしたぞ〜。わかる?
特に「ファイルを開く」コモンダイアログを出すのは難しく、nasmとかのいいサンプルがないか探したんだが、結局見つからず自力で実装したという次第よ。
おみゃ〜ら〜、「スリムドカン」のサンプルもいよいよ「猫でもわかる…」のサンプルと同レベルのものが登場してきたよ。
つまり、「スリムドカン」はいよいよ中級のウインドウズソフトがつくれるソフトになってきたってこと!!
おみゃ〜ら〜、サンプルにビットマップの描画サンプルと、「ファイルを開く」コモンダイアログを出すサンプルがあるってことは、もはや「スリムドカン」でつくれないウインドウズソフトはないといっても過言ではないのではなかろうか?
どうじ?おりはもはやここまで来ると神だな♪自分じどうじ?
690デフォルトの名無しさん:04/11/03 23:18:31
ろくな説明もできない人間がまともなもの作れるわけないな
691デフォルトの名無しさん:04/11/04 01:16:28
>>689
じゃぁ、まずwebブラウザ作ってみろ。
IEコンポーネントもGeckoも使わないやつな。
692デフォルトの名無しさん:04/11/04 02:40:06
KHTMLだな
693デフォルトの名無しさん:04/11/04 06:51:47
ネタにマジレスすんなよ
694デフォルトの名無しさん:04/11/04 19:30:35
何故ここの住人は放置すら出来ませんか?
695デフォルトの名無しさん:04/11/04 19:47:48
国語能力≠プログラミング能力
天才は左脳に障害がある場合が多いから
696デフォルトの名無しさん:04/11/04 21:04:18
凡才なのに左脳に障害があるのはどうしてですか?
697デフォルトの名無しさん:04/11/04 21:22:41
必要条件と十分条件の区別もつかないのは脳に障害があるからですか?
698デフォルトの名無しさん:04/11/04 21:35:36
Z80のアセンブラしか扱ったことなくて
昨今というか8086以降のCPU知らないんですが
キャッシュとかパイプラインの制御もアセンブラで出来るものなのでしょうか?
699デフォルトの名無しさん:04/11/04 22:14:57
キャッシュは若干できるがパイプラインは無理。
700デフォルトの名無しさん:04/11/04 22:38:15
>>699
ありがとうございます
ということは命令の順序の並び替えぐらい考えれば
あとは普通にアセンブラ書けばいいんですね(違う?
701デフォルトの名無しさん:04/11/05 00:28:20
パイプラインの制御も普通にあるだろ・・・
702デフォルトの名無しさん:04/11/05 05:09:01
703デフォルトの名無しさん:04/11/05 05:20:11
パイプラインに直接働きかける命令なんてあったっけ
>>698の意図次第だな
704デフォルトの名無しさん:04/11/05 06:27:27
Pentium以降、CPUIDでパイプラインが止まるとかそういうのはある。
でも制御とは言えないな。
705デフォルトの名無しさん:04/11/05 22:59:54
意味もなく分岐してストールさせる。
予測あるからどこまで通用するかわからんが。
706デフォルトの名無しさん:04/11/05 23:07:52
そりゃ制御じゃねーだろ。
707デフォルトの名無しさん:04/11/05 23:29:44
いや、別な意味で間違いなく制御だ。
Pentium???の最適化マニュアルはそのためにある。
708デフォルトの名無しさん:04/11/06 13:18:57
プリフェッチキューも「制御」できるし
BTBも「制御」できるし、
レジスタリネームも「制御」できるんだね!
カッチョエー
709( ̄。 ̄)yー~~:04/11/06 21:40:33
>698の言っているパイプラインは、
CPUの内部パイプラインではなく、外部パイプラインバスのことを言っているのではないのか。
パイプラインバスなら、確か286あたりからバスタイミングチャートに3つくらいモードがあって、
パイプラインバスとかメモリインタリーブとかできたようだった。
ただし、コントロールレジスタ(コントロールピン)を直接煽れることは無いと思った。
710デフォルトの名無しさん:04/11/08 21:57:12
pc98の割り込みについてまとめられているページ無い?
ググったらDOSのファンクションコールの事が殆ど。
711ほんたま:04/11/08 23:03:00
おみゃ〜ら〜、サンプルアップしたぞ〜♪ホームページもアップしたぞ〜♪宇宙一すげぞ〜♪
おみゃ〜らよ、なぜ宇宙一すげーかわかるかな?
おみゃ〜らよ、おりはな、「Visual C++」で自作したDLLをスリムドカンでつくったプログラムから呼び出すのに成功したんだよ!わかる?
おみゃ〜らよ、DLLを呼び出すプログラムを「Visual C++」」でつくるには、Libファイルをリンクに設定したり、ヘッダファイルをインクルードしたりとやるべきことは多いだろ?
おみゃ〜らよ、DLLを呼び出すプログラムを「HSP」でつくるにも、やはりDLLの他に「.as」ファイルが必要だよ。
だが、「スリムドカン」の場合、DLLの他には一切何も必要ないんだな〜う〜ん、これが…自分じわかる?
つまり「スリムドカン」の場合、DLLさえあればDLLを呼び出すプログラムがビルドできるってわけ♪
おみゃ〜らよ、おりは宇宙一画期的だと思わないか?
おみゃ〜らよ、宇宙一すげ〜とわめいたのはそういうことよ♪
おみゃ〜らよ、自分じどうじ?
712デフォルトの名無しさん:04/11/08 23:10:44
このスレは祟られてたりするんですか?
713デフォルトの名無しさん:04/11/08 23:20:11
>>710
↓ここの「Table of Contents」 → 「NEC PC-9800 series」
ttp://www.ctyme.com/rbrown.htm

全部載ってるかどうかは知らんが。
714デフォルトの名無しさん:04/11/09 03:48:44
715デフォルトの名無しさん:04/11/09 04:11:58
何でもそうだが巷にある参考書、解説書は
たとえ使わないものであれ全部解説したものって一つもないよな

よく使うものだけを解説するのも結構だが
俺は完全版辞典が欲しいんだ
716デフォルトの名無しさん:04/11/09 04:18:26
PC-9800ならアスキーから出てる奴に大抵のことは書いてあったと思うが。
絶版臭いが。
717デフォルトの名無しさん:04/11/09 04:37:39
718デフォルトの名無しさん:04/11/09 11:03:41
>>717
それか。
ハードの方はそこそこ詳しかったが、BIOSの方はあんまし役に立たなかったような記憶があるなあ。

そういえばinterrupt listに少し載ってなかったっけ?
719デフォルトの名無しさん:04/11/10 20:33:45
アセンブラ勉強中
バイナリサーチをインラインアセンブラで書いたら
VC++に最適化させたCコードの方が5倍くらい速かった…
アセンブラやめようかな…
720デフォルトの名無しさん:04/11/10 21:14:16
アセンブラ勉強中
良く分からないのでCの簡単なコードをコンパイルして
アセンブリコード吐かせてCPUのマニュアルとにらめっこ。
そんなことをやっているうちに結構読めるようになった。
721デフォルトの名無しさん:04/11/10 21:17:53
今時のコンパイラは最適化通り越してコンパイルタイムで定数にしちゃったりするからねぇ
722デフォルトの名無しさん:04/11/11 16:54:29
>>720
読むのと書くのは大違いだから勘違いしないように
723デフォルトの名無しさん:04/11/11 17:14:08
アセンブラそーすってどうやって吐かせるんだっけ?
まえ某のコンパイラでやってたけどアセンブラつまらんって思ってたから
忘れちまった。このスレみてたらまたやりたくなってきた。
724デフォルトの名無しさん:04/11/11 17:16:00
-S
725デフォルトの名無しさん:04/11/11 17:30:32
bcc32 -S hello.c
コレダ!
>>724 ありがとう思い出せたよ。
726デフォルトの名無しさん:04/11/11 17:35:18
>>722
読めればいいので問題無いです。
書くなんて言ってないのにそう
解釈するのは短絡な思考ですよ。
改める方が良いです。
727デフォルトの名無しさん:04/11/11 17:37:37
昔はアセンブラばっかだったけど、最近はサッパリ使う機会が無いな。
AT&T式使ってたけど、死滅しちゃったかな?
728デフォルトの名無しさん:04/11/11 21:12:49
AT&T形式はGASというクソアセンブラでしかみたことないですなあ
729デフォルトの名無しさん:04/11/12 23:17:32
最近のCPUでコンパイラの最適化以上の速さのコードを自力で書けたりするかなぁ?
730デフォルトの名無しさん:04/11/12 23:20:24
SSE 使っていいなら楽勝
731デフォルトの名無しさん:04/11/12 23:24:08
ループで連続したバッファに対して
連続してFPU使うのは以外にコンパイラ以上に最適化できんのがおおいよ

日本語が良くわからんorz
732デフォルトの名無しさん:04/11/12 23:31:10
ttp://www.dreamsight.i12.com/alink.htm

alinkとwin32.libの配布もとはここでいいんですか?
733デフォルトの名無しさん:04/11/12 23:35:18
sourceforgeにありました
734デフォルトの名無しさん:04/11/13 01:58:12
FPU叩くやつなら大抵自分で書いた方が速いな
735デフォルトの名無しさん:04/11/13 01:59:30
>>719
ちなみにどんなソースか見せてみそ
736719:04/11/13 02:36:20
>>735
こんな感じです。
ただの数当てなんだけど。
なんというか分からない事だらけで困る。
int dat[256];
for (int i=0; i<256; i++) dat[i] = i;

for (int i=0; i<10000000; i++) {
int tmp = rand() % 256;
int answer = 0;

__asm {
mov ecx, 128;
mov eax, c;
mov ebx, tmp;
L1:
mov edx, eax;
add edx, ecx;
cmp dat[edx*4], ebx;
ja L2;
add eax, ecx;
L2:
shr ecx,1;
jne L1;
mov answer, eax;
}
}
737デフォルトの名無しさん:04/11/13 04:59:55
>>736
俺も試してみたが、
cmp dat[edx*4], ebx;
この行は、datの値ではなくdatのアドレスをオフセットとして足してしまう。
やりたい事は
cmp [dat][edx*4], ebx;
なんだろうが、そういう命令はx86にはないので、
mov esi, dat
か何かとしておいて
cmp [edx*4+esi], ebx;
とやる必要がある。

で、VC7.1で最適化を掛けたらcdqとsubとsarの組み合わせを / 2 で吐いてくれたが
unsignedでstatic_castするか、shrで符号を無視すればアセンブラとCの吐いたコード
の速度は差がほとんどなくなった。
738デフォルトの名無しさん:04/11/13 05:02:17
MASM32の使いかたが分からん・・・
コマンドプロンプトで「assmbl sample」と打ち込むと
sample.obj sample.mapが作成されるんだがここからどうすりゃいいんだ?
とりあえず「link16 sample」として実行すると
sample:fatal error L1101: invalid object moduleとエラーが表示される
ちなみに当方の環境はXPっす。
MASM32の使い方を流れにそって解説してあるようなHPキボンヌ
739デフォルトの名無しさん:04/11/13 05:04:39
>>738
なんかわからんが、link16って何?16ビット用のリンカか?
linkだけじゃだめなん?
740デフォルトの名無しさん:04/11/13 05:05:12
MASM32なんぞ使う奴は肥溜めに落ちて死ね
741EXCULTer's / Active PC ◆/80RBXpvJA :04/11/13 05:34:13
>>737
スケールインデックスあったんじゃねーの?
マニュアル見てみ。

>>738
オプションが足りないのでは?
ヘルプ見てみ。
742EXCULTer's / Active PC ◆/80RBXpvJA :04/11/13 05:37:41
>>740
ビミョーかも。アトアトのことを考えるとVC++のほうがよさそうだけど。
743デフォルトの名無しさん:04/11/13 05:44:00
>>741
何言ってるのお前?スケールドインデックスは*1、*2、*4の事だろーが。
俺が言ってるのはdat[]のdatのアドレス値を使いたいのに実際はdatの
アドレス値が置かれているアドレスがインラインアセンブラで使われてるって
事だよ。いっぺん氏ね。
744EXCULTer's / Active PC ◆/80RBXpvJA :04/11/13 06:07:52
>>743
んじゃ全部アセンブラで書けよ、バカw
745デフォルトの名無しさん:04/11/13 06:15:16
>>744
逆ギレすんなよ。自分が間違いましたと素直に謝ればいいものを。
746デフォルトの名無しさん:04/11/13 06:57:12
>>739
LNK.BATとLINK16.exeならあるけどLINK.BATが見当たらない。
747デフォルトの名無しさん:04/11/13 07:26:33
>>743
int dat[256] が自動変数だと仮定すると
cmp dat[edx*4], ebx

cmp [ebp-定数][edx*4], ebx
と解釈されて
719がやろうとしていることはできると思うのだが。

mov esi, dat
cmp [esi][edx*4],ebx
なんてしたらAccess Violation間違いないぞ。
どっからアドレスのアドレスが出てくるんだ?
748デフォルトの名無しさん:04/11/13 07:47:10
>>747
それがやってみたらだめなんだよ。もちろんdat[]は自動変数にして。
実際VC7.1で試してみた?
749デフォルトの名無しさん:04/11/13 08:07:33
>>747
いろいろといじってみたら、ようやくAVが出なくなったが、検索が失敗する。
やはりどこか変なアドレスをアクセスしているようだ。そもそも元々AVが
出ていたという時点で既にNGだけどね。

証拠のソース(VC7.1用)
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1064150088&res=261

どっかおかしい所があったら指摘して欲しい。intを無条件でunsignedに
使っていたりする所は許して欲しい。
750デフォルトの名無しさん:04/11/13 08:08:48
VC6.0、ICC8.1ともに大丈夫だが。
VC7.1のインラインアセンブラはmasm準拠じゃないの?
751デフォルトの名無しさん:04/11/13 08:14:01
>>746
LINK.EXEってないの?
752デフォルトの名無しさん:04/11/13 08:15:10
>>750
>>749のリンク先のソースで試してもOKでしたか?
753デフォルトの名無しさん:04/11/13 08:36:07
>>737
C++だからそうなる。Cなら大丈夫。
754デフォルトの名無しさん:04/11/13 08:41:32
>>753
そうなんか。えらく嫌な仕様だなあ。
755デフォルトの名無しさん:04/11/13 09:04:36
>>749
そりゃ、引数として渡されたdatでは、
cmp dat[edx*4], ebx
なんてできるわけ無いじゃん
756デフォルトの名無しさん:04/11/13 09:23:00
>>749
そのソースのmov edi,datの部分はおかしくないかい?
これだとediには、dat番地じゃなくてのdat番地の内容が入っちゃうよ。
757756:04/11/13 09:25:30
ごめん。↑は忘れて
758デフォルトの名無しさん:04/11/13 10:04:02
>>756の言うとおりで、mov edi,datをlea edi,datにすれば
cmp dat[edx*4],esiとcmp [ecx*4+edi],esiの結果は同じくなるわけだが
759デフォルトの名無しさん:04/11/13 10:50:31
>>758
ならないって。
760デフォルトの名無しさん:04/11/13 10:52:09
そもそも、元のソースが何やってるかわからない
・・・・・アホでスマン

Cのソース出してくんね?それアセンブラにするから
761デフォルトの名無しさん:04/11/13 11:07:09
>>760
func2(int n, int dat[]); は、
N個のint型の要素を持つ配列dat[]から、0〜N-1の値を、二分探索法で
ITER回見つけ出すという物。func1()はそれをそっくりインラインアリンブリ
言語化しただけ。

Cソースは
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1064150088&res=262
に貼っておいた。コメント記号がアレだが、そこは勘弁。

で、>>755さんや>>758さんは頼むから一度アセンブリ出力して、出てきた
ソースを眺めて欲しい。ちゃんと俺の言う通りなってるはずだから。

念のために今回はBCC5.6.4でも検証しておいた。結果は同じ。
762デフォルトの名無しさん:04/11/13 11:08:46
>>759
なるじゃん
763デフォルトの名無しさん:04/11/13 11:08:59
ちなみにこのようなソースだと、インラインアセンブリの部分でレジスタに
わざわざ毎回ローカル変数をロードしているので、CやC++で書いた場合
よりも時間的に若干不利。
764デフォルトの名無しさん:04/11/13 11:10:53
>>762
コンパイラを教えれ。VC7.1とBCC5.6.4では間違いなく失敗する。
765762:04/11/13 11:22:56
>>764
758の言っている意味分かる?
CPPソースの_asm{}の中身が間違っているんだよ。
766デフォルトの名無しさん:04/11/13 11:28:24
>>765
そしたら最後のお願いをしてもいい?あなたが__asm{}の中をいじって正しくした
ソースを
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/lounge/index.html
のどこかに貼り付けて欲しい。

それで俺の所で正しく動かなかったら、俺のパソコンが壊れているという結論
にするから。
767デフォルトの名無しさん:04/11/13 12:17:53
>>766
func1とfunc2は等価というのが前提なの?

func1の場合は検索に失敗した時点で終了。
func2はとにかくITER回繰り返してから終了。もちろんその間何回も検索は失敗している。
と、思いますが。
768755:04/11/13 12:18:40
あのね、俺が言っているのはアドレスとポインタ変数は違うってことだ。
例えば、以下のようにしたとき
int dat1[256];
int *dat2=dat1;
dat1とdat2の違いって分かってる?
Cではdat1[i]とdat2[i]どちらもできるが、
アセンブラでは、dat1[edx*4]はできるが、dat2[edx*4]はできないのは当たり前だろ、って言ってるの。
>>736ではdatはポインタ変数ではなくアドレスだろ。

>>762,>>764
あんたらも、アドレスとポインタ変数の違いが分かってないんじゃないのか?
以下のソースが、どんなコードに変換されるか見てみれば分かると思うよ。

int main()
{
int dat1[256];
int *dat2=dat1;

__asm {
lea ecx,dat1
lea ecx,dat2
mov ecx,dat1
mov ecx,dat2

}
return 0;
}
769デフォルトの名無しさん:04/11/13 12:45:15
>>767
???
770デフォルトの名無しさん:04/11/13 12:52:11
>>767
これって、失敗はあり得ないだろ。
771デフォルトの名無しさん:04/11/13 13:12:02
ずいぶん前に32bitのWindowsXP上でAMD64のコードを走らせたという方が
いたと思います(このスレじゃないかも)
モード切替には一旦ページングを切らないといけませんが、その時に
仮想=物理アドレスとなるメモリ領域を確保する必要があると書いてあったのですが
それはどのような方法で行ったのでしょうか? お願いします。
772デフォルトの名無しさん:04/11/13 13:45:50
WindowsXPのアセンブラでソフトウェア割り込みを登録したりってできますか?
自分でページフォルトとか例外飛ばしたいんですが
773デフォルトの名無しさん:04/11/13 13:55:34
761 のコードを見てるとバイナリサーチする必要すらないんじゃないかという
気がしてくる私は多分 PG 失格
774EXCULTer's / Active PC ◆/80RBXpvJA :04/11/13 15:01:30
やっぱり、アセンブラやってるヤツってどっかおかしいんだよな(わら

743 :デフォルトの名無しさん :04/11/13 05:44:00
>>741
何言ってるのお前?スケールドインデックスは*1、*2、*4の事だろーが。
俺が言ってるのはdat[]のdatのアドレス値を使いたいのに実際はdatの
アドレス値が置かれているアドレスがインラインアセンブラで使われてるって
事だよ。いっぺん氏ね。
775デフォルトの名無しさん:04/11/13 15:05:31
>>772
DDKの知識があればできる。
776デフォルトの名無しさん:04/11/13 15:27:53
>>768
そいつはわかってる。今俺が言ってるのは>>766のどこが問題で、俺のように
動いたり、他の誰かのようにleaにしないと動かないかってとこなの。

>>768さんの言いたい事はわかる。定数とアドレス変数は一段階アクセス
モードが違うから、アセンブリをする時はそれを考慮しないといけない。

しかし>>766はもう関数の引数にアドレス変数として入ってしまっているので、
movでいいじゃないかって事なの。dat[ecx * 4]とかしたら、datは中身では
なくそのもののアドレスって意味に取られてしまうわけでしょ?leaにしたって
同じ事。
777デフォルトの名無しさん:04/11/13 15:32:08
>>767
そうだよ。等価にして速度比較するというのが前提だと俺は思っていたぞ。
結果は(l + r) / 2と書くか(unsigned)(l + r) >> 1 と書くかで違うけど。
VC7.1は後者の場合アセンブラと同じコードを吐きやがった。
778デフォルトの名無しさん:04/11/13 16:41:49
>>771
AMD64のコードを動かしたわけじゃないけど

1)VirtualAlloc()で仮想アドレスを指定してCOMMITする。
2)1)が成功したら、その仮想アドレスをカーネルモード(ドライバ)に渡す。
以下カーネルモード
3)受け取った仮想アドレスの値と同じ物理アドレスに対応するPFNを参照し
 使われていないか確認する。使われていたら1)に戻る。
4)3)のPFNをデータベースのリンクから切る(そのメモリ領域はOSの管理から離れる)
5)1)の仮想アドレスがマップしている物理アドレスに対応するPFNから
 ページフレームの(仮想)アドレスを得る。
6)そのページフレームのアドレスフィールドに1)の仮想アドレスを書きこむ。

PFNについてはググってちょうだい。
ただ、PFNのアドレスはOSやバージョンによって違うから、MSのカーネルデバッガで
調べるしかない。
779771:04/11/13 18:57:35
ありがとうございます。

裏ファンクションみたいな物があると期待したのですが、そう簡単にはいかない
みたいですね。ですが、何とかがんばってみます。
780デフォルトの名無しさん:04/11/13 19:02:29
>>776
>そいつはわかってる。
うそつけ。わかってるやつが、>>747-748のようなことを言うわけない。
自分の無知さを認めたくないからって、必死になるなよ。
781デフォルトの名無しさん:04/11/13 19:04:27
間違えた
×>>747-748
>>737>>748
782デフォルトの名無しさん:04/11/13 21:17:04
>>780-781
決めつけはよくないな。俺が定数と変数の違いを理解してないとでも?
ばかにするのもほどほどにしろよ。

とにかくお前とは何回言葉を交わしても論点がズレてしまうのでもう
相手にせん。勝手にそう思ってろ。
783デフォルトの名無しさん:04/11/13 22:01:47
2ちゃんぬるでのお約束 (口喧嘩のお約束)


馬鹿にされたら正論を吐いてはいけない
馬鹿にされたら更に馬鹿にし返すのが常道であり作法

784デフォルトの名無しさん:04/11/13 22:40:23
ぬるか・・・
785デフォルトの名無しさん:04/11/14 00:33:24
782の言動をまとめると
>>736で提示されたソースを見て、
cmp dat[edx*4], ebx;
は間違いだと言っている。
実際には>>747が指摘したように、これで正しいのだが782はそれを理解できない。(>>748-749)
自分が正しい証拠として、>>749で782の書いたソースが公開されているが、>>736のdatはアドレスなのに、このソースのdatは仮引数(つまり変数)になっている。
つまり、条件が変わっていると言うことであり、条件が変わればコードも変わるのは当然なのだが、782はそれを理解できていない。
以上のことから、>>768で言ったことを知らなかったのは明らかだろう。

別に馬鹿にするつもりは無いが、バレバレの嘘ついても惨めなだけだが。
普段から、あんまりそんなことしてると、友達無くしますよ。よけいなお世話ですが。
786デフォルトの名無しさん:04/11/14 00:43:53
この流れがそもそも理解出来ないんですが皆さんすごいですね
787デフォルトの名無しさん:04/11/14 01:04:11
>>785
もういいって
788デフォルトの名無しさん:04/11/14 07:18:13
自分の無知を認めたくない737が必死だな。
789デフォルトの名無しさん:04/11/14 08:05:34
さて判定は?
790デフォルトの名無しさん:04/11/14 08:09:51
791デフォルトの名無しさん:04/11/14 08:19:29
792デフォルトの名無しさん:04/11/14 09:54:30
>>790
いやいや、>>756は自分で言ってるように、明らかに間違いですよ。
>>785が言ってるのは、>>736>>749のdatの扱いは両方とも正しいけど、それぞれのdatは違う物なので、
前提条件が違っている。
それを>>732は分かってないと言ってるんだと思う。
793771:04/11/14 11:57:42
>>778
スレ違いですが、もう一つだけ教えてください。
MnPfnDataBaseからフレームが並んでいることは分かったのですが
物理アドレスに対応するPFNはどのように見つけたらよいのでしょうか?
お願いします。
794デフォルトの名無しさん:04/11/14 13:51:24
>>792

>>732 とは??
795デフォルトの名無しさん:04/11/14 14:21:29
>>737の間違いでした。
796デフォルトの名無しさん:04/11/14 15:46:07
>>792
あの・・・・わかってるんですけど。
最初から配列はmain()で定義し、関数には配列の先頭アドレスを渡して
動かしていた。>>736のソースは悪いけど一回も動かしてないよ。
797デフォルトの名無しさん:04/11/14 16:22:04
自分の頭の中で勝手にストーリーを作り
それを真実であるかのように思い込むのは神経症と言う
いい例が被害妄想



"C"としか言ってないのに勝手に"C++"に置き換える奴
798デフォルトの名無しさん:04/11/14 16:26:09
>>797
そいつは微妙だ、昔からCを使っていてC++に移った人間はそもそも区別していない。
転換点らしいものが無かったから。
それについては被害妄想というより誤解と誤解のぶつかりあい。
799デフォルトの名無しさん:04/11/14 16:27:57
要素が異なるのでやれる範囲も違えば
名前も違うし
であれば明確に区別しなければ「ならない」
800デフォルトの名無しさん:04/11/14 16:29:01
学生のテストじゃあるまいに・・・
801デフォルトの名無しさん:04/11/14 16:35:21
そんなことすら区別できないバカがプログラムなんぞ出来るわけない

Z80とPentiumだとしても同じアセンブラなんだから
同じ言語構成で行けるはずだろ!て言うバカと同じ

同じことをやろうとしてるんだけど
CPUごとそれぞれ違うんですよ
そんなことまで教えないといけないのか
802デフォルトの名無しさん:04/11/14 16:39:43
区別できないと気にしないの区別ができないバカがいるな(w
803デフォルトの名無しさん:04/11/14 16:42:36
似てるなんて言えばJAVAとCも似てるわけだが
気にしねえとか言って、JAVAさえもCと呼びそうな勢いだなw
804デフォルトの名無しさん:04/11/14 16:44:50
しねーよバカ、JavaとCではそもそも互換ねーじゃよ
805デフォルトの名無しさん:04/11/14 16:46:21
CとC++も互換なんざしないわけだが
バカにはわからない


(すればC, C++の区別も必要ない)
806デフォルトの名無しさん:04/11/14 16:47:13
在るよ上位互換だバカ
807:04/11/14 16:49:40
テスト
808デフォルトの名無しさん:04/11/14 16:50:29
Cでオブジェクト指向





















できるんだってさw
すげえ!
809デフォルトの名無しさん:04/11/14 16:52:09
「Z80とPentiumでも同じ"アセンブラ"なんだから同じコードで通るはずだ」
このとおり、言い出しそうな有様
810デフォルトの名無しさん:04/11/14 16:59:46
まあとにかく技術的なディテールよりもこのスレは「動くソースを載せる事」
が一番雄弁に真実を語る事は間違いない。
811デフォルトの名無しさん:04/11/14 17:01:39
>>810
同意
812デフォルトの名無しさん:04/11/14 17:01:49
>>808
Cでオブジェクト指向した結果の延長がRuby
813デフォルトの名無しさん:04/11/14 17:02:56
>>809
まあ 8080 のコードは Z80 で通ったりする訳だが
814デフォルトの名無しさん:04/11/14 17:03:59
いつの話だ
815デフォルトの名無しさん:04/11/14 17:04:50
ソースコード読む能力よりも、
「書いてあることをそのままの意味で読む」
能力が必要なんじゃねえのか?w
816デフォルトの名無しさん:04/11/14 17:05:03
昔の話
817デフォルトの名無しさん:04/11/14 17:05:07
いまでも8086のコードがPentiumで動いてる
818デフォルトの名無しさん:04/11/14 17:07:09
8080のコードはV30でも(ry
819デフォルトの名無しさん:04/11/14 17:09:05
V30って8080と実は互換あったん?
今頃初めて聞いた。
820デフォルトの名無しさん:04/11/14 17:12:38
>>819
モードが切り替わるだけだから同時には使えない
821デフォルトの名無しさん:04/11/14 17:17:34
このスレ、フレームばっかりだな
822デフォルトの名無しさん:04/11/14 18:11:03
フレームって言うとenter/leaveって使ったことないなー
823デフォルトの名無しさん:04/11/14 19:04:42
最近のCPUならpush/popの方が速いからねー
824792:04/11/14 19:42:29
>>796
はい?
>>736をみて>>737の発言が出てくるってことは、分かってないってことでしょう。
最初から云々なんて関係ないし、動かしたかどうかも関係ない。
それとも、いまはわかってるってことですか。
それなら、よかったですね。
825デフォルトの名無しさん:04/11/14 19:49:53
>>824
あのさあ、>>737は俺じゃないんっすけど。アンタ馬鹿ですか?
826デフォルトの名無しさん:04/11/14 19:55:35
もう誰が誰やらワカンネーYO!
827デフォルトの名無しさん:04/11/14 19:59:04
>>826
このスレでは人を賤しめて自分の価値を再確認するバカが必死になってる
ようなんで。IDでも付けば解決するんだがな。
828デフォルトの名無しさん:04/11/14 20:48:20
心の目で見ろ。そうすれば誰が誰だかなんて一発で・・・・くそッ
829デフォルトの名無しさん:04/11/14 21:21:54
>>819
ゲームの資産を残すための互換性だったらしい
830デフォルトの名無しさん:04/11/15 05:01:15
gccはathlon用にはleave使うよ〜。enter使わないけど。
831デフォルトの名無しさん:04/11/15 08:42:16
入ります ディレクトリ
832デフォルトの名無しさん:04/11/15 09:01:40
>>793
フレームは物理アドレス0番地から順番に並んでいますよ。
探し方は↓
[MmPfnDataBase] + (物理アドレス>>12) * フレームサイズ

フレームのサイズは、通常24バイト、PAEで28バイトらしいです。
833デフォルトの名無しさん:04/11/15 09:36:32
出ます ディレクトリ
834デフォルトの名無しさん:04/11/15 10:06:18
>>826

737=743=748=749=761=776=782=796=825
755=768=780=785
792=824
だと思う。
824は否定しておりますがw
835デフォルトの名無しさん:04/11/15 10:07:36
誤 824は否定しておりますがw
正 825は否定しておりますがw
836デフォルトの名無しさん:04/11/15 12:45:22
ebpを元に戻すのに、leaveは普通に使われてると思う。
と思って試したら、VCではebp使わずにespで引数や変数にアクセスしてた。
BCCではleave使ってたが。
837デフォルトの名無しさん:04/11/15 13:02:45
>>834
あの流れで737が別人とは思いづらいが、証拠があるわけでもないからね。
838デフォルトの名無しさん:04/11/15 13:34:51
>>836
leaveはWinXPのカーネルでも良く使われているよ
839デフォルトの名無しさん:04/11/15 13:44:26
じゃあenterが無いのはなんでだ
840デフォルトの名無しさん:04/11/15 14:11:53
>>839
enterが遅いからでしょ。leaveはそれほどでもないんだろうけど。
841デフォルトの名無しさん:04/11/15 19:29:52
Athlon64では、movとpopするよりleave使った方が
速いみたいだ。
842デフォルトの名無しさん:04/11/15 20:18:04
今時は全部esp経由でいいんじゃね
843デフォルトの名無しさん:04/11/15 21:25:00
最近アセンブラを使用しはじめました。
一つ質問をお願い致します。

以下のアセンブラのメモリ使用量を知りたいのです。加算16回のCコードを、VC++6.0でアセンブラ表記すると以下となりました。

004013B9 fld qword ptr [_rtP (00441a30)]
004013BF fadd qword ptr [_rtP+8 (00441a38)]
004013C5 fadd qword ptr [_rtP+10h (00441a40)]
・・・
00401413 fadd qword ptr [_rtP+78h (00441aa8)]
00401419 fstp qword ptr [_rtB (00445850)]

左からアドレス、オペコード、オペランドになると思われます。

ここで、オペランドが指し示すデータのサイズ1つは8byteになると思います。
その他、オペコード(fld、fadd、fstp)自体もメモリ上にあると思われますが、メモリ使用量はいくつになるのでしょうか。
同様にオペランド(qword ptr[・・])自体のメモリ使用量はいくつになるのでしょうか。

844デフォルトの名無しさん:04/11/15 21:53:02
>>843
ただ単にOBJやEXEファイルのサイズじゃダメなのか?
845デフォルトの名無しさん:04/11/15 22:01:44
オペランドはアドレスだから4バイトだろうが
846デフォルトの名無しさん:04/11/15 22:19:14
L1:
004013B9 fld qword ptr [_rtP (00441a30)]
004013BF fadd qword ptr [_rtP+8 (00441a38)]
004013C5 fadd qword ptr [_rtP+10h (00441a40)]
・・・
00401413 fadd qword ptr [_rtP+78h (00441aa8)]
00401419 fstp qword ptr [_rtB (00445850)]
L2:

L2-L1でサイズわかるだろ
847デフォルトの名無しさん:04/11/15 22:37:00







「ディズニーランドとオペランド    彼女と行くにはどっちがいいのですか」
848デフォルトの名無しさん:04/11/15 22:45:11
>>842
espだとSIBコードのためにOPコードが1バイト長くなるような希ガス。
標準スタック・フレームを作成してebp経由でアクセスする事が前提に
命令フォーマットが作成されているかららしいね。

でもスタック・フレームを作成しないで全てesp経由にする事ももちろん
可能。
849デフォルトの名無しさん:04/11/15 23:41:59
1バイトぐらいケチケチすんなYO!EBPが空く方がでけーぞ
850843:04/11/16 00:55:34
>>844

004013BF fadd qword ptr [_rtP+8 (00441a38)]

上記加算の行を2行、4行、・・、1024行、2048行と増やし、生成されたexeのファイルサイズから差分を計算すると
一行につき22byteになりました。

>>846
L2-L1から計算すると1行6byteとなります。

どちらが正しいのでしょうか。
851デフォルトの名無しさん:04/11/16 01:16:17
正確なバイト数は
masmかなんかでリスティングファイル出力すればわかるだろうに
852デフォルトの名無しさん:04/11/16 03:36:38
843はx86は1行が常にnバイトだと思ってるのかな?
853デフォルトの名無しさん:04/11/16 08:03:22
平均とってどうするの?
854デフォルトの名無しさん:04/11/16 09:31:55
その命令を含む簡単な実行ファイルをつくり、
デバッガで該当領域をディスアセンブルすればいいよ。
ニブちんの843でも一目瞭然だろ。
855デフォルトの名無しさん:04/11/16 18:50:50
質問です。
nasm等のマクロアセンブラで作成したプログラムにおいて
dbやdw等で確保したメモリのアドレスの場所は確認してますか?
私は小さいプログラム程度ならいつも確認してしまう癖があるのですが。
SYMDEB等で調べて安心するも、俺だけかと思ってしまい夜も眠れねえ
856771:04/11/16 19:08:20
>>832
ありがとうございます。
何とか完成しました。ブルースクリーンを10回ほど出してしまいましたがw
857デフォルトの名無しさん:04/11/16 19:16:46
>>855
確認してどうすんだ?
858デフォルトの名無しさん:04/11/17 01:00:56
855は843の兄弟か本人な気がしてならない
とんちんかんな質問が流行?
859デフォルトの名無しさん:04/11/17 06:52:11
>>851
>>854

>>843の左側に書いてあるのはアドレスですよ。ちゃんと6バイトずつ増えてる。
860855:04/11/17 12:56:32
855です。

>>858
855は私ではないです。

>>859
1つのアドレスでメモリ上の1byteの領域を指し示すという事ですね。
>>843の左のアドレスでは6byteずつ増えているため、
fld qword ptr [_rtP (00441a30)] やfadd qword ptr [_rtP+8 (00441a38)]
はメモリ上の6byteを使用し、記録されているているということですね。

861デフォルトの名無しさん:04/11/17 13:08:23
>855です。

>>>858
>855は私ではないです。


いや、笑ったけどさ
862デフォルトの名無しさん:04/11/17 14:48:56
…な、なんかトソチソカソが大流行の悪寒。
>>860=855と名乗りながら、自分が855ではないと否定。

意味のわからなさがなんかツボにはまった。
863デフォルトの名無しさん:04/11/17 15:14:26
ここは匿名性が高いインターネッツですね。
864デフォルトの名無しさん:04/11/17 17:02:35
ネッツ!!!!!!!!!!!!!!!!!!!!
るby::!!!!!!
865デフォルトの名無しさん:04/11/17 20:57:54
↑最近君が哀れでしょうがなく思えてきた
866デフォルトの名無しさん:04/11/18 08:36:46
Ruby厨を演じているんだろうけど
全部同一人物ならかなり哀れだな
それにしても似非Ruby厨大杉
867デフォルトの名無しさん:04/11/19 00:10:46
こんにちわ。
最近PICをやろうと思い、アセンブラを勉強しはじめました。
質問なんですが、ビット処理命令というのと、リテラルデータの意味が
わかりません。どうか後教授御願いします。
868デフォルトの名無しさん:04/11/19 00:15:23
PICは使った事がないが、多分
ビット処理命令ってのはシフト(ビットをずらす=2で掛けたり割ったり)や
and とか or とかの論理演算のこと。
リテラルデータというのは命令コードにデータが組み込まれた命令、
普通はどこかのメモリーもしくはレジスタを指定して読み出すけど、それがなくて命令中に直接値が入っている。
即値ロードと即値加算が多い。
869デフォルトの名無しさん:04/11/19 02:12:25
>>867
君の場合、アセンブラの勉強の前に論理回路の勉強した方がいいよ
870デフォルトの名無しさん:04/11/19 08:47:47
>>867
ここは半可通しかいないから聞かない方がいい
こんなのとか>>869
871デフォルトの名無しさん:04/11/19 11:01:13
>>867
電気電子版にPICスレがあるよ
872デフォルトの名無しさん:04/11/19 14:51:27
アセンブラの勉強を始めたのですが、見よう見真似で作成した以下のコードを
masm32(と16bitリンカ)を使用して、"ml /c /Fl test.asm"するとエラーになります。

ググッてもビギナーには見当がつかない。
どうしたら動くかご教授ください。

『  CODE   SEGMENT
   ASSUME   DS:CODE,CS:CODE,ES:CODE,SS:CODE
          .186
          ORG  100h
   START:

   mov ah,09H
   mov dx,message  ←(*)
   int 21H
   mov ah,4CH
   int 21H

   message db 'This is a Test Program', 0DH,0AH,'$'

   CODE ENDS
        END   START


(*) error A2070: invalid instruction operands
873デフォルトの名無しさん:04/11/19 15:03:26
>>872
masm32で16ビットコードを書けたっけ?
874デフォルトの名無しさん:04/11/19 15:33:50
>>873
アセンブルはできる気がする。
でも隣家だけ16ビットって試したことないなぁ。

>>872
エラー行はたぶん "OFFSET message"または LEA 命令。
com 形式って懐かしいなぁ。
セグメントレジスタは自動で初期化されるんだっけ?
ってか、32ビットのフラットモデルで勉強したほうがよくない?
875デフォルトの名無しさん:04/11/19 15:35:46
アセンブラーでフロッピから起動してCDを再生するのですが
876デフォルトの名無しさん:04/11/19 16:21:13
>>875
で、どうなっ
ここは「途中で言い止めるスレ」ではありま
877デフォルトの名無しさん:04/11/19 16:24:00
それなのにint 21h?


878デフォルトの名無しさん:04/11/19 16:41:11
872です。 諸先輩方、コメントどうもです。

分からないままに
http://www5c.biglobe.ne.jp/~ecb/assembler/assembler00.html
の最初で紹介してるリンクから、アセンブラとリンカを入手し、
http://www5c.biglobe.ne.jp/~ecb/assembler/2_2.html
の例から前後の呪文をコピペしています。


   mov dx,OFFSET message


と修正することでアセンブルが成功しました。ありがとうございます!

つづけてリンクを "link /t  test.lst"で実行してみますと、

   test.lst : fatal error L1101: invalid object module
   Object file offset: 1 Record type: 4d

と表示され、test.obj ファイルのみ生成されcomファイルが生成されません。

(ちなみに
 http://www5c.biglobe.ne.jp/~ecb/assembler/2_2.html
 の例は当方でも問題なくcomファイルが生成されております。)

何か解決策はありますでしょうか?

874>> 32ビットのフラットモデルで勉強したほうがよくない?

実際のプログラミング例とか紹介しているサイトをご存知なら是非教えてください。
879デフォルトの名無しさん:04/11/19 16:42:36
先輩方、875めは私(872)ではございませんぞ!
880デフォルトの名無しさん:04/11/19 16:47:38
>>878

(ちなみに
 http://www5c.biglobe.ne.jp/~ecb/assembler/2_2.html
 の例は当方でも問題なくcomファイルが生成されております。)

    ↑↑↑
すみません、嘘です。
881デフォルトの名無しさん:04/11/19 16:52:56
使ったこと無いから予想だけど
link /t test.obj
じゃないか
882デフォルトの名無しさん:04/11/19 16:55:18
そのとおりでした。。先輩方ゴメンナサイ!!

全部、上手くいきました、です!
(本当にゴメンナサイ!)
883デフォルトの名無しさん:04/11/19 18:03:51
何度も大恐縮です。 不肖の愚弟に知恵をお貸しください。
[ ]を使ってデータをやり取りしたいのですが、
(*)の場合のOFFSET指定?が分かりません。


   mov ax,OFFSET [original]
   mov [carboncp],ax     ←(*)

   (中略)

   original db 'AB', 0Dh,0Ah,'$'
   carboncp db '00', 0Dh,0Ah,'$'

このままでは
(*) error A2070: invalid instruction operands
でした。


馬鹿の一つ覚えで
   mov OFFSET [carboncp], ax
とか
   mov [OFFSET carboncp], ax
とかしたのですが
   error A2001: immediate operand not allowed
でした。
884デフォルトの名無しさん:04/11/19 18:09:23
まずmasm捨てるか、masmのイカレタ構文を染まるか、覚悟を決めろ
885デフォルトの名無しさん:04/11/19 18:11:47
じゃあ、masmを捨てます!
886デフォルトの名無しさん:04/11/19 18:20:14
>>883
word ptr
887デフォルトの名無しさん:04/11/19 18:22:07
nasmの方がいいんじゃね?つかmasm32っていちおう違法だろ

>>883はdbだからだろな(確かめてない)
mov al, original
mov carboncp,al

db宣言されたラベルにはワードでアクセスできない
888デフォルトの名無しさん:04/11/19 19:05:45
>>886, >>887
ありがとうございます。

   mov al,[original]
   mov [carboncp],al

   mov al,[original+1]
   mov [carboncp+1],al

   mov ah,09H
   mov dx,OFFSET carboncp
   (中略)

   original db 'AB',0Dh,0Ah,'$'
   carboncp db '00',0Dh,0Ah,'$'

でとおりました。一方、ワードを使ってみたくて


   mov ax,[original]
   mov [carboncp],ax

   mov ah,09H
   mov dx,OFFSET carboncp
   (中略)

   original dw '愛',0Dh,0Ah,'$'
   carboncp dw '00',0Dh,0Ah,'$'

としてみると、コンパイルできるものの、
愛であろうと死であろうと文字に関係なく化けまった。。
我がアセンブル道(ミチ)の先は長そうである。
889デフォルトの名無しさん:04/11/19 19:37:53
がんばってね
890デフォルトの名無しさん:04/11/19 21:24:18

   mov ax,word ptr[original]
   mov word ptr [carboncp],ax

   mov ah,09H
   mov dx,OFFSET carboncp
   (中略)

   original db 'AB',0Dh,0Ah,'$'
   carboncp db '00',0Dh,0Ah,'$'

これでどうよ?
891デフォルトの名無しさん:04/11/20 01:43:20
>>889
サンキュッ・サーであります。

>>890
コンパイル、実行とも上手くいきました。
(返事遅くなってすみません。)
おかげで色々確かめながら勉強できるようになりました。
ありがとうございます。

しかし、しかし…、ANCIとかISOとかの世界と無縁のためか
初っ端からとっつき難い印象です。。
先輩方はこれを仕事にして食ってったり、当たり前の
教養として別に仕事されたりしてるんですよねぇ…。
自分には、スゴイ迫力であります。

NASMも試してみます。>>887

初っ端からゼンゼン勝手が分からずにクヨクヨしてしまったので
以降は作戦を変えて、実験的にcでプログラムを作成しながら、
そのコードをVisualStudioあたりで逆アセンブルし、
ちまちま比較しながら進めていこうか、という考え。。。
892デフォルトの名無しさん:04/11/20 08:23:32
mov al,13h
int 10h
ret
893デフォルトの名無しさん:04/11/20 14:58:47
ぶっちゃけアセンブラプログラミング能力てどこで必要とされてる?
こんなスキル生かせるのはウイルスソフト会社くらいでは?
小難しいアセンブラやるならC,C++やjavaを勉強したほうがいいのでは?
いまいち何目的にアセンブラをやるのか、それがわからない
894デフォルトの名無しさん:04/11/20 15:00:09
組み込みなら、汗も必要だろうが。
895デフォルトの名無しさん:04/11/20 15:28:21
MASMは余計なことしすぎだよな。
勝手にセグメントのオーバーライドとかは激しくウザいし、
とくにmasm32の while とかの、わけのわからん高級言語風の記述。
かえってわかりにくくなってる。
896デフォルトの名無しさん:04/11/20 15:44:11
別にやりたいからやる。やりたくなけりゃ、やらなくていい。

しかし、見えない本質を体得した後は、確実にコードに差が出る
897デフォルトの名無しさん:04/11/20 17:55:39
C/C++みたいに、直接asmが吐かれる言語をやる人は知っておくべき

Java,php,perlなんかがメインの人には要らない
898お願いします:04/11/20 18:38:28
あるプログラムを逆アセンブルしたら、
次のように、意味のないジャンプ (次の命令へのジャンプ)
をしている個所がたくさんあったのですが、
なぜこのようなことをしているのか分かりますか?

...
E61: push eax
E62: push(d) +00
E64: call(d) [USER32.MessageBoxA];
E6A: xor eax,eax
E6C: jmpn E71
E71: pop edi
E72: pop esi
E73: pop ebx
E74: leave
E75: retn
899デフォルトの名無しさん:04/11/20 18:46:18
> あるプログラムを逆アセンブルしたら

タイーホ
900デフォルトの名無しさん:04/11/20 18:53:32
>>898
パイプラインフラッシュのためかな?関数内での後始末部位だから。
901デフォルトの名無しさん:04/11/20 18:57:02
単に最適化がしょーもないコンパイラだろ
902デフォルトの名無しさん:04/11/20 19:00:53
>>900
すいません、それってどういう意味があるのでしょうか?
このプログラムは特殊なプログラムじゃなくて、
普通の GUI アプリケーションなんですが。。。

>>901
なんかそうかもしれません。
このようなコードでは、他の場所からもジャンプされているので、
たとえば、switch 文で case 句から抜けるときに、
switch の最後の case 句であるかどうかにかかわらず
ジャンプ命令を生成しているのかもしれませんね。
903デフォルトの名無しさん:04/11/20 19:04:06
うーん、
if (MessageBox(NULL, lpText, lpCaption, MB_OK));
こういう処理やってるんじゃない?実際に試してはいないけど、こうすれば
多分そのまま次命令へのジャンプ処理が生成されるかと。
904デフォルトの名無しさん:04/11/20 19:16:07
>>902
メモリ参照のジャンプのようなswitchに相当する部分は無いの?
見た感じjmp直前で eaxを0クリアして関数の返す値を0にしてるので、
defaultに落ちてきた時のエラー処理に相当するコードかと思うのだが。
905898:04/11/20 19:26:02
>>904
すいません、「メモリ参照のジャンプ」というのはどういう意味でしょうか?
関数ポインタという意味ですか?

いかにも switch 文らしきところはあります。
たとえば、別のコードですが、ウィンドウ プロシージャの一部だと思われます。

L00006E4A: cmp [ebp-0C],0000040E
L00006E51: je L00006C01
L00006E57: cmp [ebp-0C],0000040F
L00006E5E: je L00006C24
L00006E64: cmp [ebp-0C],00000410
L00006E6B: je L00006CB6
L00006E71: jmpn L00006E76

L00006E76: push(d) [ebp+14]
L00006E79: push(d) [ebp+10]
L00006E7C: push(d) [ebp+0C]
L00006E7F: push(d) [ebp+08]
L00006E82: call(d) [+off32 USER32.DefWindowProcA]
L00006E88: jmpn L00006E8D ;; <-- ここ

L00006E8D: pop edi
L00006E8E: pop esi
L00006E8F: pop ebx
L00006E90: leave
L00006E91: retn 0010
906デフォルトの名無しさん:04/11/20 19:39:14
ああ、ウィンドウプロシージャなら確かにそういう処理するな。
907デフォルトの名無しさん:04/11/20 20:59:58
車のECU作ってますが何か
908デフォルトの名無しさん:04/11/20 21:26:33
>898
Hex.コードは数字の羅列であり、OPコードとOPランドとの境が不明であり、逆汗しても正しいとは限らないというか、ほぼ間違っている、何故ならこれは、その一命令が何バイト命令か不明であるからこうなる。
>裏を返せば、1命令が例えば2byte命令で統一されていたりすると逆汗結果が正しいということが分かる
>実際はそんな命令セットはほとんど皆無に近いから、逆汗コードが間違っているということが分かる。
>ちまちまダンプリストから手で逆汗するのが正しい手法。>DOSからdebugで入るならDコード
909デフォルトの名無しさん:04/11/20 21:31:33
名前隠してもバレバレだぞ
>>607
910デフォルトの名無しさん:04/11/20 21:43:43
というか
>908は、
どこから逆アセリストを取り始めたかにより正しいか間違ってるか決まってくる。
命令の先頭であるOPランドからリストを取り始めているなら正しいだろう。
しかし、コードの中には、命令でなく、パラメータや割り込み用ベクタアドレス(これらは命令でなくただの数字とアルファベット)であるものも含まれている。
その箇所を把握していないと正しい結果は出ない。
911デフォルトの名無しさん:04/11/20 22:05:34
912デフォルトの名無しさん:04/11/20 22:29:10
そんなキモイ本紹介せんでくれ
913デフォルトの名無しさん:04/11/21 16:40:25
912=見た目と思い込みで判断するアフォ
914デフォルトの名無しさん:04/11/21 17:57:25
やねうらお先生も、こんな辺境まで来て宣伝しなくてはいけないぐらい生活に困ってるのかww
915デフォルトの名無しさん:04/11/21 18:40:44
見た目がキモくても、それなりに内容があれば文句は言わんのだが・・・
916デフォルトの名無しさん:04/11/21 19:08:15
要は中身
で、その中身がどうかというと…

917デフォルトの名無しさん:04/11/21 19:22:22
エロゲPGだな
918デフォルトの名無しさん:04/11/21 19:27:11
ただの汚物
919デフォルトの名無しさん:04/11/21 19:45:10
いま汗が最悪な出来だったから少しだけマシなやねうらお本がさも良書の如く言われてるだけー
920デフォルトの名無しさん:04/11/21 19:54:14
ケース別 OllyDbg 解説書「こんなときにはこの機能が便利」
アセンブラの勉強目的だったら内容が薄すぎるので止めといたほうがいい
シェアウェア作者ならこの本に書かれてる程度の内容でクラックされるのは
恥ずかしいだろうから買っといた方がいいかも
# ただし対策側ノウハウはまるで書かれていないので覚悟してから
921デフォルトの名無しさん:04/11/21 19:57:20
対策=法的手段に訴える
922デフォルトの名無しさん:04/11/21 20:00:57
こっちはクラック技術なんかお呼びじゃねーんだよ
923デフォルトの名無しさん:04/11/21 20:01:07
面白いね。ついでにGPLの日本における法的妥当性も争ってほしい。
924デフォルトの名無しさん:04/11/21 20:34:32
禿しくスレ違いだな
925デフォルトの名無しさん:04/11/21 21:01:06
CPUの創り方はイイ!
926デフォルトの名無しさん:04/11/21 21:26:59
>>925
禿同
927デフォルトの名無しさん:04/11/21 21:29:58
そうなの?こんど買ってみよう。。。
どこらへんがよかった?
928デフォルトの名無しさん:04/11/21 21:36:31
929927:04/11/21 21:39:09
この本って、プログラマとしての技術にどれぐらい寄与すると思う?
今時の CPU とずいぶんかけ離れていたりしないのかな?
930デフォルトの名無しさん:04/11/21 21:42:41
タイトルの通り「CPUの創り方」であって「CPUの使い方」ではない。

931デフォルトの名無しさん:04/11/21 22:04:52
>>929
プログラマに直接的なプラス要因になる本じゃないと思うよ。
むしろ、サプリメント的に後々壁にぶつかった時に理解する下地を作れるって感じかな。
932デフォルトの名無しさん:04/11/22 10:14:47
933デフォルトの名無しさん:04/11/22 10:37:44
Winnyを解析したいのですが、よいリバースのツールありませんか?
934デフォルトの名無しさん:04/11/22 11:24:30
>>933
喉の奥に指を突っ込め。
935デフォルトの名無しさん:04/11/22 14:11:48
core吐きますな。
936デフォルトの名無しさん:04/11/22 14:13:10
お前ら何をム板でコアな話してるんだよ!
937デフォルトの名無しさん:04/11/22 15:31:35
今アセンブラのソースを見ているのですが
AND EBX,0F
こう書かれている箇所があります。
EBX+0x0Fだと思ったのですが0Fってのが理解できません。
普通の16進数のFではないようです。
これはどういう処理になるのでしょうか?
938デフォルトの名無しさん:04/11/22 15:33:28
普通の16進数のF
939デフォルトの名無しさん:04/11/22 15:44:30
C風に書けば、
EBX &= 0xf;
940デフォルトの名無しさん:04/11/22 15:45:41
普通に下位4ビット取り出しだな
941937:04/11/22 15:57:13
・・・すみません。単なるADDとANDの読み間違いでした。
こんなつまらないことで御手数かけて申し訳ないです。
942デフォルトの名無しさん:04/11/23 14:45:10
プロテクトモードに移行するためにプロテクトモード用セグメントを設計しているのですが
いろいろ読んでみてもいまいちよく分かりません。

セグメントディスクリプタのメンバーの1つであるベースアドレスについてですが。
ここのベースアドレスには物理アドレスを入れればよいのでしょうか?

後物理アドレスの算出方法は

1000h:0000h
というアドレスを物理アドレスに変換したい場合は

1000h * 16 + 0000h
でよいのでしょうか?。

どなたか教えてください。お願いします
943デフォルトの名無しさん:04/11/23 16:19:48
セグメトアドレスってページングの後に決定じゃなかった?

だから
セグメントベース=リニアアドレス≠物理アドレス

ページングoffならリニアアドレス=物理アドレス
944デフォルトの名無しさん:04/11/23 17:12:33
>>942
ベースアドレスには物理アドレスをそのまま入れてやればいいですね。
その算出法というのが何を意図してるのかわからないのだが(リアルモードと混同してる?)、
ベースアドレスの値のままでいいでつ
945デフォルトの名無しさん:04/11/23 19:47:44
946デフォルトの名無しさん:04/11/24 03:58:16

947デフォルトの名無しさん:04/11/24 16:57:39
てかC++とか使いこなせる人がさらなるスピードアップのために使うものでないのか?
948デフォルトの名無しさん:04/11/24 21:11:27
今時アセンブラで書くにはそれなりの理由があるので、
単にさらなるスピードアップと言うだけで使うわけじゃないから、
C, C++を使いこなせるかどうかはあまり関係がない(相関はあるだろうが)。

言語処理系なんかでCじゃ書けないことを実現するとか。
SSEなんかのSIMD命令の利用も、まあ更なるスピードアップでもあるけれども、
意味合いとしてはCじゃ書けないことの部類に入るかな。

949デフォルトの名無しさん:04/11/24 23:08:10
>>942
セグメントベースには論理アドレスを入れるから>>943の言う通り。
ページングを利用する場合も0x0Eの割り込み処理(ページング機構といった方が早いか)がしっかり整っているなら、別に気にする必要ないと思う。

リアル/仮想8086モードでのセグメントとオフセットの話はその通り。

何してんのか知らないけど頑張ってね。
950デフォルトの名無しさん:04/11/24 23:48:20
プロテクトモード移行だからreal to prtectedなんだろな
2つデスクリプタ作って、うぞうぞやってればその内できるよ
951デフォルトの名無しさん:04/11/25 10:18:45
>>950
正直言って君の書いたプログラムを使いたいとは思わない。
952デフォルトの名無しさん:04/11/25 10:54:55
286の設計段階で、セグメントベースもリミットと同じように
4Kごとにしてしまえばよかったのに。なんでだめなの?
953デフォルトの名無しさん:04/11/25 11:31:20
あ、よく考えたらやっぱだめか。
286の段階ではディスクリプタ(8byte)の先頭から6バイト分しか
使われてなくて、リミットのオフセット4K(Gビット=1)ってのは
386から導入されたものだってことだね。286のOSは、64kの
セグメントを複数切り替えて動作する、純粋なリアルモード
のアプリケーションを複数走らせるものだったということなのね。。
954942:04/11/25 11:39:49
皆さんどうもありがとうございます。
real to Protectのコードを書いているのですが。どうにも3rd exceptionが発生してだめなんです…
Monaの旧スレを見ながらやっているのですが…

 もうちょっとがんばってやってみます
955デフォルトの名無しさん:04/11/25 11:58:31
286のOSだとプロセスごとにGDTを割り当てて、
タスク切り替え時にGDTRを、ちょうど386がCR3を
書き換えるみたいに、入れ替えるということなのね。
なるほど。。。

>>942
実際に手を動かした人にだけ技術力はつく!がんばれー
漏れも286のOS作ってみたくなってきたw
956デフォルトの名無しさん:04/11/25 12:12:41
>>942
>1000h * 16 + 0000h

8086ではセグメントレジスタの値は自動的に16倍されるけど、
286/386のプロテクトモードにおけるセグメントディスクリプタ内の
ベースアドレスは16倍されないはず。セグメントの開始アドレスは
バイト単位で指定できるようになってる。

286ではベースアドレスに24ビット = 16MB
386ではベースアドレスに32ビット = 4GB
のリニアアドレスの領域指定できる。
957デフォルトの名無しさん:04/11/25 12:25:08
http://www.google.co.jp/search?q=cache:Ns4C_6fcKCgJ:pc5.2ch.net/test/read.cgi/jisaku/1082357989/401-500+286+%E3%82%BB%E3%82%B0%E3%83%A1%E3%83%B3%E3%83%88%E3%80%80%E3%82%A4%E3%83%B3%E3%83%86%E3%83%AB&hl=ja
このスレの470は大きな勘違いをしてるな。
>ただ、セグメントサイズそのままに16MBに広げた286はどうかと思うよ。

セグメントサイズはそのままって、これは当たり前。8086で動作していた16ビット
アプリケーションをプロテクトモードで同時に複数走らせることを目的としてるんだから。
ディスクリプタの7バイト目にDビットがあるが、これは286では有効ではなく、
32ビットオペランドや32ビットアドレスは386で初めて使えるようになったわけだし。

リニアアドレス空間が16MBというのを小さいと見るなら、確かにそうかもしれないけど。。
958デフォルトの名無しさん:04/11/25 13:06:54
>>952だけど、やっぱりいろいろ考えると変だな。386のリミットの
4kオフセットはでかすぎにしても、ディスクリプタ内のベースとリミットは
8086のセグメントレジスタのように無条件に何倍かにしてもよさそうだ。
8086ですら、16バイトごとにセグメントっていうスコープを割り当てて
メモリ空間使ってたわけだし。286のOSの役割は16ビットアプリケーションに、
セグメントディスクリプタのPビットを386のページエントリのPビットと
同じようにして使って、連続した1MBの領域があるかのように見せるだけだしな。

そもそも286の段階でセグメントのリミットなんて必要だったのかな?8086の
アプリケーションは1MBの領域をアプリケーション内でセグメントレジスタ
という物差しを割り当てて使ってただけでしょ?リミットなんてない。
セグメント指定したら64kすっぽり読み書き可能。OS(特権モード)の
ために用意されたってことかいな。
959デフォルトの名無しさん:04/11/25 22:15:40
そろそろ次スレか?

アセンブラ… (´・ω・`)ショボ━━ン!!!

でおながいします
960デフォルトの名無しさん:04/11/25 22:27:29
キモい顔文字イラネ
961デフォルトの名無しさん:04/11/25 22:34:07
     アセンブラとかいうジジイ言語     
http://pc5.2ch.net/test/read.cgi/tech/1101329594/
962デフォルトの名無しさん:04/11/25 22:49:25
次スレ

アセンブラ… (´・∀・`)ヘー
http://pc5.2ch.net/test/read.cgi/tech/1101390110/
963デフォルトの名無しさん:04/11/25 23:54:41
◎店名 女性専用出張風俗店「LilyMotion」
◎営業時間 24時間 年中無休
◎利用できる場所 ホテルor貴女の自宅
◎利用できる方 女性のみ(カップルの方のコースも別にあります)
コースと料金(女性の方お1人でご利用の場合)
 60分(1時間) 10000円
120分(2時間) 20000円
180分(3時間) 30000円
240分(4時間) 40000円
300分(5時間) 50000円
指名料 2000円
◎お相手は全て当店の指導を受けた素敵な優しい女性ばかりです。
◎女性を満足させるためのテクニック+αがあるのは当店だけです。
◎ピンクローター、ローション、双頭バイブ等のオプション料や追加料金は頂きません。
◎年会費無料の会員登録をされますと全コース2000円オフになります。
◎会員様には男性を指名できる特別限定コースもご用意しております。
◎カップルでご利用の際は下記コースと料金になりますのでご注意下さい。
コースと料金(男性と女性もしくは女性と女性のカップルでご利用の場合)
120分(2時間) 23000円
180分(3時間) 33000円
240分(4時間) 43000円
300分(5時間) 53000円
指名料 2000円
964デフォルトの名無しさん:04/11/26 13:21:34
>>957
それ書いたの俺だわ。
今読むと読点が変だ。恥ずかしい。

8086との互換性のことまでは考えてなかったです。
16MBもの広大な空間を64KBに細切れにしたら使いにくいよ、ということが言いたかった。

8086を作った人達は、8080の16ビット版を作る気だったんだと思うよ。
当時のプログラムは1プロセスあたり64KBで十分で、
それを複数個同時に動かすために1MBのメモリ空間を用意し、
バンク切り替えよりも気が利いている程度のものとして作られたのだと思う。
セグメントレジスタを複数個用意するのはOSに必要だからいいとしても、
それをユーザモード(んなものはないわけだが)に解放したのが間違いだと思う。
965デフォルトの名無しさん:04/11/26 14:43:51
>>964
8085の16ビット版だろうね。
で、ユーザモードなんて概念がないんだから開放するしかないのだが。
966デフォルトの名無しさん:04/11/26 16:19:22
>>964
8086にだってプロテクトモードを設けることはできたでしょう。
1MBの領域を細切れにし、2,3のプログラムで分ける。
でもそれなら、セグメントレジスタには16bitも必要ないでしょうね。
もっと目の粗いものでも十分だった気がします。8bitで、純粋に
GDTのインデックスを指定するためのものという扱いです。
ディスクリプタも4byteぐらいに抑えておけばGDTのサイズもそれ程
膨れ上がりません。

やはり8086のセグメントは単一のアプリケーションに64k以上のメモリ空間を、
バンクの切り替えにより、自由に操作可能とするためのものだと思います。
またUNIXのようにプロセスをバンバン起動するような利用形態は8086では
考えられていなかったのではないでしょうか、どうでしょう。
当時の様子を知らない、素人の推測ですのであてになりませんが。
967964:04/11/26 16:57:23
どうなんでしょう、中の人じゃないので、本当のところはわかりません。

もし、セグメントレジスタを8ビットにして、4KB毎でしか区切れないようにしたら、
メモリがもったいない! と怒られていたと思う。
64KBや128KBしかRAMを積んでないマシンでの4KBは貴重ですから。

セグメントによる恩恵は、64KB越えのメモリアクセスは後からの話で、
まずは、メモリのどこにロードしても絶対アドレスへのジャンプを
書き換えなくてよい、というのが大きいです。
968デフォルトの名無しさん:04/11/26 17:48:34
でも ヒ ュ ー ジ モ ー ド は 最 悪 に 遅 か っ た な
969デフォルトの名無しさん:04/11/26 18:03:56
huge mode? なにそれ?
970デフォルトの名無しさん:04/11/26 18:12:51
Cでセグメント境界を自動的に調節してくれるが、オーバーヘッドが大きい
諸刃の剣。
ってあれはhuge modelだな
971デフォルトの名無しさん:04/11/26 22:05:49
age
972デフォルトの名無しさん:04/11/26 22:13:06
>>966
重なっている部分は共有メモリとして使うつもりだったらしいよ
973デフォルトの名無しさん:04/11/27 03:01:43
ume
974デフォルトの名無しさん:04/11/27 04:23:49
もったいない
975デフォルトの名無しさん:04/11/27 04:28:33
8086の段階でも、セグメントレジスタのビットシフト数を特殊レジスタに
設定しておくことにすれば、ソフトもハードもそう過大なオーバヘッドを招くことなく、
スケーラブルにできたんだよ。
それをしなかったのは、その時点で1MBは使い切れない程広大な
メモリ空間だと思われていたのが1つ。
さらに、次(々)世代ぐらいでは完全な新設計になるので未来のことを
考慮しておくのはナンセンスだと思われていたのがもう1つ。
ところが現実は・・・
976デフォルトの名無しさん:04/11/27 04:42:01
いいじゃないか。386で対応できたんだから
977デフォルトの名無しさん:04/11/27 05:52:15
>>975
8086なんて、プログラムが難しい以前に、調達が難しいだろ。
978デフォルトの名無しさん:04/11/27 08:59:54
>>962
979デフォルトの名無しさん:04/11/27 10:12:11
>>975
集積度が足りなかったんだよ。それぐらい空気嫁。
それともお前は現在の基準で過去を裁く人間なのか?
980デフォルトの名無しさん:04/11/27 11:05:38
>それともお前は現在の基準で過去を裁く人間なのか?
それ程深くもない知識で歴史を眺める以上、ある程度は避けられないですね。

というか8086が出たのが78年。286が出たのが82年。
'71 4004 4bit
'74 8080 8bit
'78 8086 16bit
'82 80286
'85 80386 32bit
この4年の間にどれぐらいの製造技術の変化があったのでしょうかね。
8086から286への変化はCPUの仮想化と見てもいいような変化だと思います。
また32ビット化も考慮されて(Pagingは想定外だったかも)設計されてる。
凄いですね。

>>967
>もし、セグメントレジスタを8ビットにして、4KB毎でしか区切れないようにしたら、
考えていたのは、8bitというのは単純にGDTのインデックス値であり、
ディスクリプタ内で16bitのベースアドレスと属性フィールドを持つような形です。
OSへ新規セグメント要求システムコールを呼び出し、GDTの8bitのインデックスを
割り振ってもらう、そんなものをイメージしてました。システム内ではGDTは
共有されるので、同一の特権モードの保護はなされません。
まあ、その当時にそんな重たいメモリ管理ユニットを乗せられるわけもないですねw
981デフォルトの名無しさん:04/11/27 12:06:09
>>980
ものすごい勢いで集積度は上がりましたが。
ムーアの法則って聞いたことない?
982デフォルトの名無しさん:04/11/27 14:18:05
>>それ程深くもない知識で歴史を眺める以上、ある程度は避けられないですね。
ならだまってろ。だれにでも発言権があるわけではない
983デフォルトの名無しさん:04/11/27 14:24:35
>>982
何様のつもりだこの池沼。仕切り屋ふぜいが。
984デフォルトの名無しさん:04/11/27 14:30:47
俺様のつもりだ。わかったらとっとと退場しろ
985デフォルトの名無しさん:04/11/27 14:33:56
嫌だね。仕切るなら金払え。
986デフォルトの名無しさん:04/11/27 14:37:00
CPUアーキの後だしジャンケン論争って、8ビットのころからちっとも
変わってないな
987デフォルトの名無しさん:04/11/27 14:37:38
>8086の段階でも、セグメントレジスタのビットシフト数を特殊レジスタに
>設定しておくことにすれば、ソフトもハードもそう過大なオーバヘッドを招くことなく、

実際これのオーバーヘッドってどれぐらい?
アイディアとしては悪くなさそうだけど。
988デフォルトの名無しさん:04/11/27 14:38:13
次スレは?
989デフォルトの名無しさん:04/11/27 14:38:52
もう有るよ
990デフォルトの名無しさん:04/11/27 14:46:07
>>989
本当だサンクス
991デフォルトの名無しさん:04/11/27 15:19:19
今のエンジンは100馬力あるのに、昔のエンジンは10馬力しかないからクソ、
10倍大きくしてでも100馬力にするべきだったといってるような議論だな。
992デフォルトの名無しさん
池沼を追い込むなよ。刺されるぞ