トップページ⇒tech
1001コメント272KB

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

レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさんNGNG
アセンブラ全般に関するスレッドです。

【前スレ】
アセンブラ… (;´Д`) ハァハァ
http://pc5.2ch.net/test/read.cgi/tech/1087897801/
0002デフォルトの名無しさんNGNG
【過去ログ】
アセンブラ… (゚д゚)ウマー
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

0003デフォルトの名無しさんNGNG
終了
0004デフォルトの名無しさんNGNG
−−−−−−−−−− 再開 −−−−−−−−−−−
0005デフォルトの名無しさんNGNG
NASMの日本語マニュアルのサイトは無くなったのですか?
0006デフォルトの名無しさんNGNG
>>5
そうみたい。代わりに
http://www.yuasa.kuis.kyoto-u.ac.jp/~nobu/study/nasm/nasm.html
0007デフォルトの名無しさんNGNG
>>6
ありがとう
0008デフォルトの名無しさんNGNG
新スレきたー!
0009デフォルトの名無しさんNGNG
早杉棚
0010デフォルトの名無しさんNGNG
(°Д°)ハァ?
0011デフォルトの名無しさんNGNG
vc++のインラインアセンブラをgcc(AT&T形式)に変換したいのですが,
参考になるHPが本はありませんか?
教えてください.
0012デフォルトの名無しさんNGNG
出力ソースの先頭に
.intel_syntax
の行を入れて、
セグメント指定を変更
ラベルやデータの形式を変更
が楽っぽい。
001311NGNG
>>12
gcc -S ***.cの出力ソースをいじれって事?
付け焼き刃の漏れではできない気がする.
すんません.
とりあえずアセンブラの形式を変換する
下のHPを見て書き直してるんですが,
インラインアセンブラではないので
うまくいく自信がないorz
http://www.codeproject.com/cpp/gccasm.asp

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

001411NGNG
>>13の続き
上の"インラインアセンブラではない"
という書き方はおかしかった.
HP内の記述を
%eax -> %%eax
に変換しないとcのソースファイルが
コンパイルできない,
と言うことが言いたかっただけです.
0015デフォルトの名無しさんNGNG
gcc 3.3.2なら-masm=intel出来たよ。

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

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

(°Д°)<ひでぶっ

って顔だよな
0021デフォルトの名無しさんNGNG
>>20
そりゃお前の顔だろ。

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

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

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

ていうか、この板の平均年齢って案外低いのかな?
0042デフォルトの名無しさんNGNG
平均がいくらか知らんが、>>41は平均以上だろうな
40ぐらい?
0043デフォルトの名無しさんNGNG
わけのわからん煽り乙。
0044デフォルトの名無しさんNGNG
>>41
>x86のアセの話題しか出てないような
>Winでしかコード書いたこと無い奴って
いやお{犬,馬}様も同じだろう
同じUNIXでも、NetBSDユーザなら68kやMIPS,SPARCと
ユーザはいろいろなんだけど。彼等は殺伐としていて
会話をしないし。
0045デフォルトの名無しさんNGNG
そろそろ
アセンブラ総合スレ 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/
アセンブラ言語 CASL�Uを語るスレ
http://pc5.2ch.net/test/read.cgi/tech/1033876116/
PICアセンブラ統一スレッド
http://pc5.2ch.net/test/read.cgi/tech/1060182978/
0046デフォルトの名無しさんNGNG
これもそうかも
GNU Assembler勉強スレ
http://pc5.2ch.net/test/read.cgi/tech/1036722498/
0047デフォルトの名無しさんNGNG
>>45
たててちょ、オレの所のプロバイダからだと建てられんので。
0048デフォルトの名無しさんNGNG
>>47
前スレがまだ950にもいってないから、
もうちょっとしてから立ててみる。
0049デフォルトの名無しさんNGNG
このスレ系列なら970で適正だと思うが(ぶっちゃけ、990超えてからでも遅くは無い)
0050デフォルトの名無しさんNGNG
(°Д°)ハァ?
0051デフォルトの名無しさんNGNG
やっぱりPICマイコンだろうよ。
BASICとかCとかあるらしいが、メンドクサイので、アセンブラ。
0052デフォルトの名無しさんNGNG
Linuxで使えるアセンブラを書くのに適したエディタってある?
viでもいいんだけどさ。
0053デフォルトの名無しさんNGNG
Vimおすすめ
0054デフォルトの名無しさんNGNG
(°Д°)ハァ?
0055デフォルトの名無しさんNGNG
>>45
このスレでいいじゃん

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

全然関係ないけどX68000が欲しい。
0071デフォルトの名無しさんNGNG
>>70
X68000はBIOSも合法的に入手可能なのでemulator使うとか。
0072デフォルトの名無しさんNGNG
ちょっと、聞きたいのですが、アセンブラーで3000ステップあるソースをCOBOLに移行したら、
だいたい何ステップぐらいになるもんですかね?
0073デフォルトの名無しさんNGNG
荒らしてたのCOBOLERかよ
0074デフォルトの名無しさんNGNG
ワロタ
0075デフォルトの名無しさんNGNG
アセンブラで3000ステップってかなり短いな。
0076デフォルトの名無しさんNGNG
想像移植
DATA DIVISION除けば、三分の一〜十倍
DATA DIVISION入れると十倍〜三十倍
このくらいあればてきる?
中身はビット演算用のものすごいPERFOMの山かな?
0077デフォルトの名無しさんNGNG
この板の削除人って仕事したことあるのか?
0078デフォルトの名無しさんNGNG
OSを作ろうスレを消した事がある
0079デフォルトの名無しさんNGNG
>>78
それだけだろ。糞スレ荒らしは全て放置。
いい加減に仕事して欲しいよな
0080デフォルトの名無しさんNGNG
このスレは、由緒正しきアセンブラのスレですか?
0081デフォルトの名無しさんNGNG
ここは時機削除される
0082デフォルトの名無しさんNGNG
削除依頼誰か出したの?
0083デフォルトの名無しさんNGNG
まだ次スレが無いから�_じゃないの?
真の次スレ立て→重複で削除コースかと。
タイトル不備ぐらいだと、削除依頼出しても、削除人によっては
古い方が優先されて新しい方が削除される可能性が有るので注意
0084デフォルトの名無しさんNGNG
タイトルは>>45でいいのかな?
0085デフォルトの名無しさんNGNG
PICアセンブラでいいやつある?無料で。
0086マイク ◆yrBrqfF1Ew NGNG
あるよあるよ、いいのあるよ
char fork[] = "\x31\xc0\xb0\x02\xcd\x80"; //position independent code for `fork'
0087デフォルトの名無しさんNGNG
すっげ
0088デフォルトの名無しさんNGNG
マンドクセのでここが次スレage
0089デフォルトの名無しさんNGNG
('A`)ノ マンドクセ
0090デフォルトの名無しさんNGNG
a g e
0091デフォルトの名無しさんNGNG
 
0092デフォルトの名無しさんNGNG
      .END
0093デフォルトの名無しさんNGNG
こっちが本スレか。。。
0094デフォルトの名無しさんNGNG
 
0095デフォルトの名無しさんNGNG
こっちは偽スレですよ・・・・
1000取らせてもらえなかったし・・・
0096デフォルトの名無しさんNGNG
埋め立て乙。
0097デフォルトの名無しさんNGNG
1000まで上げさせていただきます。
アセンブラ?そんなもの知りません。
0098デフォルトの名無しさんNGNG
>>95
ひょっとして、前スレの名付け親か?
0099デフォルトの名無しさんNGNG
埋め埋め
0100デフォルトの名無しさんNGNG
アセンブラ・・・(*´-`*)ハニャーン
0101デフォルトの名無しさんNGNG
汗油
あせあぶら
0102デフォルトの名無しさんNGNG
汗ブラジャー
0103デフォルトの名無しさんNGNG
masmの話題はこちらでどうぞ:

マセンブラ言語は時代錯誤の生き遅れ
http://pc5.2ch.net/test/read.cgi/tech/1092478213/
0104デフォルトの名無しさんNGNG
次スレ
http://pc5.2ch.net/test/read.cgi/tech/1094271973/l50
0105デフォルトの名無しさんNGNG
>>104
その手があったか
0106デフォルトの名無しさんNGNG
>>103
マセンブラってマクロアセンブラの略だったのかYO!
>>104
おまい、頭いいなぁ
0107!ver ほげNGNG
ん
0108デフォルトの名無しさんNGNG
じゃ
0109デフォルトの名無しさんNGNG
GNUアセンブラでPC/AT用ブートローダを作ろうとしてます。
そこで一点質問があるんですが、
アセンブル方法はふつうに

as src.S -c -o src.o

としても駄目でしょうか?
0110デフォルトの名無しさんNGNG
gasって16bitリアルモードのコードに対応してたっけ?
0111デフォルトの名無しさんNGNG
OS Kit 使ったほうがいいんでない?
0112109NGNG
>>110
そうですか、、
どのアセンブラが適してるか教えていただけませんか?
gas.nasm,masm32があります。
いまas86をダウソしてみました。

>>111
自分でやってみたいんで自力でやってみますわ。
0113デフォルトの名無しさんNGNG
nasm>>>>>>masm>>>>>gas
0114デフォルトの名無しさんNGNG
>>110
最近のは対応してる
0115デフォルトの名無しさんNGNG
すいません、
ftp://ftp.microsoft.com/softlib/MSLFILES/
上記のサイトからlnk563.exeが落とせますが、このファイルのライセンスってどこに
明記されているのでしょうか?MSのサイト見ても無いんですよ。
0116デフォルトの名無しさんNGNG
>>115
明記されてはいないがアップデート用ファイルなので普通に考えればMS-linker 5.x系のライセンス所持
0117デフォルトの名無しさんNGNG
>>116
んが7.10だったらあるんだけどな。
最近VS.net買ったんだけどな。16bit linkerついてないやんけ。ぬるぽ
0118デフォルトの名無しさんNGNG
総合スレどこ!?
0119デフォルトの名無しさんNGNG
>>118
ここ
0120デフォルトの名無しさんNGNG
スレスト喰らって市んだ
0121デフォルトの名無しさんNGNG
実にふさわしいスレストだった
0122デフォルトの名無しさんNGNG
そもそもアセンブラは板違いだな。電気板がふさわしい。
x86みたいな厨房プロセッサはここでもいいけど。
0123デフォルトの名無しさんNGNG
CPUのマニュアルとか本屋でたまに見るけど、コンピュータじゃなくて
そっち系の棚にあったりするんだよなー。
0124デフォルトの名無しさんNGNG
日頃、PLCでラダー組んでる電気屋さんはアセンブラなんて知りません。
0125デフォルトの名無しさんNGNG
テンプレ考えてあっちの板に立ててくる。
削除人を含めた糞厨房ばっかりのこの板はもうだめだな。
0126デフォルトの名無しさんNGNG
Pentium 4って
INC EAX
より
ADD EAX, 1
の方が早いんだね。ごめん、ただそんだけ。
0127デフォルトの名無しさんNGNG
ついでにshlよりaddのが早い
0128デフォルトの名無しさんNGNG
その辺て、なんでCPU自身で速い方に切り分けしてくれないんだろうね
頭悪いよね
0129デフォルトの名無しさんNGNG
フラグまわりがINCとADDで違ったような
どうもx86は忘却気味だ
0130デフォルトの名無しさんNGNG
>129
その通り。
incはCFが変化しない。
0131デフォルトの名無しさんNGNG
ANDのフラグ変化について具体的に教えてください。
CMPよりTESTのほうが使い勝手が良さそうなのですが、どの条件ジャンプを使ったら良いのか判らない…。
0132デフォルトの名無しさんNGNG
>131
ターゲットのCPUくらい書け。
0133131NGNG
ごめんなさい。
8086の場合です。
0134デフォルトの名無しさんNGNG
>>133
フラグ変化表くらい見ろ。
0135デフォルトの名無しさんNGNG
>131
ftp://download.intel.co.jp/jp/developer/jpdoc/24547103_j.pdf
ほれ。
0136デフォルトの名無しさんNGNG
Pentium4でLinuxを使ってるんですが、インラインアセンブラで lock; xaddl って書いてある部分って、
加算&交換の最中にシグナルに割り込まれたり別スレッドに制御移ったりしないと考えてOKなんで
しょうか?

マセムブラ素人ですみませんが教えてください
0137デフォルトの名無しさんNGNG
全部実行されるか、全く実行されないかのどちらかであることを保証するだけ。
0138デフォルトの名無しさんNGNG
LinuxなんてつまんないOSも他にないよな
0139デフォルトの名無しさんNGNG
>>136
lockをつけずとも、
1つの命令の実行途中で、割り込まれたりして別スレッドに実行が移ることはない。

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

他の誰か、というのは同じCPUで実行される他のスレッドではなくて、
SMPの他のCPUで実行されているスレッドや、バスマスタデバイスのことです。
0141136NGNG
>>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); \
})
(続く)

0142136NGNG
のようなコードがあるんですが、なぜ単にapr_atomic_addを lock;addl としないのか
教えていただけませんか?
/usr/include/c++/3.3.x/i386-xxx-linux/bits/atomicity.h だとaddlしてるだけなので
すが…。
0143デフォルトの名無しさんNGNG
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されてないだけで深い意味は無いと思われ。
0144デフォルトの名無しさんNGNG
TurboC++1.01を使ってるんですが
インライナセンブラってどこまでレイジスタをいじっていいんでしょうか
セグメントレジスタやインデックスレジスタは退避しておいたほうがいいんでしょうか

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

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

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

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

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

MFC を知らないやつはバージョン管理したことない, DQN.
0156デフォルトの名無しさんNGNG
>>152
ん?普通のスピンロックじゃないの?
0157デフォルトの名無しさんNGNG
>>155
そこまで言い切れるほどメジャーな言葉じゃない
0158デフォルトの名無しさんNGNG
知らない香具師がそう思ってるだけw
0159デフォルトの名無しさんNGNG
noop
0160デフォルトの名無しさんNGNG
Microsoft Foundation Class
0161デフォルトの名無しさんNGNG
WindowsでVC++で開発してる人にとっては、
MFCは>>160の意味だし、VisualSourceSafeはMFCという呼び方をしない。
0162デフォルトの名無しさんNGNG
Microsoft Foundation Classes
0163デフォルトの名無しさんNGNG
162です。e-wordsとitmediaがclassで載せてますね。信じられん。MSは当然esつきですけど。
0164デフォルトの名無しさんNGNG
そういう用語集みたいのは適当な嘘多いよ。
以前にいろいろ目を通したことがあって、
電子とかハード寄りの堅い分野ではわりとまともな割合が多いけど、
ITだとかインターネットだとかパソコンだとかは嘘が目立つ。
編者の肩書きをみるとどことはいわないが教育機関の教官数人がかりで、
ああこういうところで悪貨の再生産をしているんだなあと思ったりした。
0165デフォルトの名無しさんNGNG
MFCは元はFreeBSDで使われるようになった言葉だよね。
今は他のプロジェクトでも普通に使われるのかな。

>>161
何て呼んでるの?
0166デフォルトの名無しさんNGNG
まあ>>143の文脈なら言葉は知らずとも意味はわかる
0167デフォルトの名無しさんNGNG
標準講座MFC6.0にはClassと載ってる。
0168デフォルトの名無しさんNGNG
>>165
「STABLE(か具体的なブランチ名)にマージ」
0169デフォルトの名無しさんNGNG
VCだと_asm{}ブロックでEAX,EBX,ECX,EDX,EDI,ESIは自由に使える
0170デフォルトの名無しさんNGNG
アセンブラってHSPの何十倍速いの?
0171デフォルトの名無しさんNGNG
HSPってトロイ入ってそうでこわい
ソースからビルドできるなら試してみたいけど
0172デフォルトの名無しさんNGNG
80x86の引き算に付いて質問です。
よくC言語のコードをアセンブラに出力すると、
sub eax, ecx
neg eax
という感じでsubの後にnegというコードが現れるのを見かけるのですが、
このnegは、いったい何をやってるのでしょうか?
subだけでもよさそうな気がしますが、
C言語の引き算はsubだけでは完結しないんでしょうか?

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

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


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

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

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


>>173
( ゚д゚)、ペッ
0177デフォルトの名無しさんNGNG
>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
0178デフォルトの名無しさんNGNG
>>177
ちょと、今更みっともないですよ?
0179デフォルトの名無しさんNGNG
176は周りに敵をつくるタイプやな。
0180デフォルトの名無しさんNGNG
やけにガっ子にこだわるね
0181デフォルトの名無しさんNGNG
ageまくってる時点で>>172は釣り
0182デフォルトの名無しさんNGNG
>( ゚д゚)、ペッ
>( ゚д゚)、ペッ
>( ゚д゚)、ペッ
>( ゚д゚)、ペッ
>( ゚д゚)、ペッ
>( ゚д゚)、ペッ
>( ゚д゚)、ペッ
>( ゚д゚)、ペッ
>( ゚д゚)、ペッ
>( ゚д゚)、ペッ
>( ゚д゚)、ペッ
>( ゚д゚)、ペッ
0183デフォルトの名無しさんNGNG
なにその(ry
0184デフォルトの名無しさんNGNG
ヨンジュン
0185デフォルトの名無しさんNGNG
次スレのタイトルは

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

でおながいします
0186デフォルトの名無しさんNGNG
ソレダ!
0187デフォルトの名無しさんNGNG
次スレのタイトルは

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

でおながいします
0188デフォルトの名無しさんNGNG
タイトルにハゲワラ、房が房に(ry
0189デフォルトの名無しさんNGNG
>>172の使っているコンパイラが気になる
0190デフォルトの名無しさんNGNG
PC/ATの質問です。
BIOSのサービスを使ってBX * 64の数値を表示させて
やりたいんですがどうすればよいでしょうか?

0191デフォルトの名無しさんNGNG
>>172
aレジスタのが速いってことか。そりゃないか
ペアリングとか。そりゃないか
0192デフォルトの名無しさんNGNG
直前に結果がEAXに固定された命令(乗除算とか)があったとか。
0193デフォルトの名無しさんNGNG
>>190
BX*64はシフト命令使え。
表示は INT10H でぐぐれ。
0194デフォルトの名無しさんNGNG
>>191
negはNP命令なんでペアリングはぶっちゃけありえないw
0195デフォルトの名無しさんNGNG
>>192
直後に eax に値が必要な命令を置くためってのもあるね。
0196デフォルトの名無しさんNGNG
手抜きコンパイラに一票。
たぶん1パスじゃねーの。
0197旅人達 ◆ahGjnhNBTw NGNG
お邪魔します。。C言語で素数一覧を作るプログラムを作ってたのですが、
アセンブリを習いながら早くしてみようと思っています。。
結果をファイル出力したいのですが、C言語のfprintf関数を使おうと思っています。
3つの引数をpushして、call fprintfして、add esp,0Chしようとしたのですが、
MASMでundefined symbolというエラーが出ます。。
外部変数の宣言をすればいのかな、と思いつつもサイトが引っかかってくれません。
どうかお教え願います。。
0198デフォルトの名無しさんNGNG
んな馬鹿やらないでインラインアセンブラ使いなよ・・・
0199デフォルトの名無しさんNGNG
ttp://www7.plala.or.jp/keny01/asm/win32/index.html
0200旅人達 ◆ahGjnhNBTw NGNG
それでやってたんですがせっかくだしasmファイルを作ってみたかったのです・・・すいません>_<;
0201デフォルトの名無しさんNGNG
>>199
VRAMの説明が投げやりで和露他
0202190NGNG
>>193
ありがとうございます。
激しく感謝です。
0203デフォルトの名無しさんNGNG
>197
はっきり言って、その辺に転がってる素数求めるCソースを
コンパイルした方がはやい。
作業的にも、実行速度的にも。
0204デフォルトの名無しさんNGNG
>>197
分割アセンブルでぐぐると、適当なのが引っかかると思うが。
0205デフォルトの名無しさんNGNG
最適化が優れたアセンブラを教えてくださいm(_ _)mペコリ
0206デフォルトの名無しさんNGNG
アセンブラって、最適化すんの?
パス増やしてジャンプ短くする程度とか?
0207デフォルトの名無しさんNGNG
ネムー.
0208デフォルトの名無しさんNGNG
最適化するアセンブラって

MOV [BX],AX
ADD AX,DX

を

ADD [BX},DX

にしてくれるようなアセンブラかのう?
0209デフォルトの名無しさんNGNG
outsb
nop
nop
nop
outsb
を
outsb
outsb
にしてくれるようなのじゃないの?
0210デフォルトの名無しさんNGNG
そこにnopをおいとくのが重要だったりした場合は?
0211デフォルトの名無しさんNGNG
>208がなんで最適化になるのか理解できないのは漏れがヴァカだからですか?(´・ω・`)
0212デフォルトの名無しさんNGNG
>>211
俺も同感。>>208は糞。
0213デフォルトの名無しさんNGNG
それいったら>>209も糞になるが…
程度の差はあるが
0214デフォルトの名無しさんNGNG
考えてみれば最近のCPUは最適化しながら実行しているようなもんだな。

0215デフォルトの名無しさんNGNG
昔私が作った例だと、
mov ax,si
mov si,ax
を
mov ax,si
に、
mov si,ax
mov si,ax
を
mov si,ax
に換えるくらいはやったけど。
0216デフォルトの名無しさんNGNG
>215
そんなんアセンブラ使う意味ないから高級言語に乗り換えれ。
アセンブラは人が最適化するから意味がある。
機械任せでいいなら苦労する意味すら無い。
0217デフォルトの名無しさんNGNG
>>215

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

結局スーパースカラになっていくと遅延分岐は速度向上の足かせになるので
取り払われてしまったが。
0222デフォルトの名無しさんNGNG
>>218
あちゃぱー
0223215NGNG
あー、そのアセンブラはCの出力をアセンブルするのが目的だったからね。
Cコンパイラの最適化が甘い部分を改善するためにニモニックのカットをしたわけよ。
0224デフォルトの名無しさんNGNG
>205の
「最適化が優れたアセンブラ」
ってのは、アセンブリ言語・ニモニックじゃぁなくて、erだから、コンパイラのことだろう。
>214
fishingか?
>考えてみれば最近のCPUは最適化しながら実行しているようなもんだな。
なんだよこれ。
ハードが最適化するのかぁ?んなアホな。
パイプラインやキャッシュ引きを最適化と呼ぶならお門違いだと思うけど。
0225デフォルトの名無しさんNGNG
μOP変換などは考え様によってはアセンブリ的最適化の逆を行っているかもしれん
0226デフォルトの名無しさんNGNG
デバッガの話もここでいいんですか?
0227デフォルトの名無しさんNGNG
>>224
レジスタリネーミングとかOOO実行とかも最適化といえるかもしれない。
0228デフォルトの名無しさんNGNG
>>218
後でJUMP命令入れてパッチが当てられるように
NOPで3バイト分確保しておくとかよくやってたな。
0229デフォルトの名無しさんNGNG
初めてアセンブラの勉強する為のテーマとしてブートローダに挑戦してるんですが
これって大風呂敷でしょうか?
0230デフォルトの名無しさんNGNG
墨染さくらにきいてくれ
0231デフォルトの名無しさんNGNG
大風呂敷っつーか、うまく動かないときに、どこがどう悪いのか、もっと分かりやすい題材のほうがよいと思われ。
0232デフォルトの名無しさんNGNG
推薦図書/必読書のためのスレッド PART 19
    http://pc5.2ch.net/test/read.cgi/tech/1089492835/
でアセンブラとコンパイラの関係についてもめてるから助けてやってよ。。。
0233デフォルトの名無しさんNGNG
>>232
ああいうのは放置しておけばいいよ
0234旅人達 ◆ahGjnhNBTw NGNG
>>197です。。どうもありがとうございました。
asmファイルを作れて少し感動です(*´∀`)
0235デフォルトの名無しさんNGNG
>>233
「ああいうの」ってアセンブラ=コンパイラとか言ってる奴だよね?
0236デフォルトの名無しさんNGNG
>>235
向こうでやれ。な?
0237デフォルトの名無しさんNGNG
アセンボラって
覚えたほうふあいいですか。
0238デフォルトの名無しさんNGNG
http://pc5.2ch.net/test/read.cgi/tech/1084765853/224-240

http://pc5.2ch.net/test/read.cgi/tech/1091724463/336-387


アセンブラの話が出てくるとなぜ荒れますか。
0239デフォルトの名無しさんNGNG
>238
ageて荒れそうなネタ振るなヴォケ。
0240デフォルトの名無しさんNGNG
一日考えたのですがやっぱり分からないので教えてください。

Cの関数に入ったところに
  push  ebp
  mov  ebp, esp
  sub   esp, 8
  and   esp, -16
というコードがあるんですが、
  and   esp, -16
は一体何をしたいんでしょうか?
  and   esp, 0xfffffff0
と、スタック位置を256byteアラインメントしているようなんですが・・・。
少々ポインタ操作を誤っても隣の関数のスタック領域を破壊しないようにとの配慮なのでしょうか?
0241デフォルトの名無しさんNGNG
>>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

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

資料がないかIntelのサイトを軽く検索してみたけど
ちょうどいいのが見つからなかった。すまん。
0244デフォルトの名無しさんNGNG
>>240
DebugとReleaseでは変わる?
0245デフォルトの名無しさんNGNG
>>244
gccなんですが。
0246243NGNG
256byteじゃなくて16byteか。
Pentium4のキャッシュラインの話は間違ってるかも
しれん。適当に答えたので無視してくれ。恥ずかしい。
逝ってくる。
0247243NGNG
多分、実行速度の問題でそうなっているのは
当たっていると思う。
0248243NGNG
しつこいがPentium4のキャッシュラインは128byte。
それ以前は32byteだった。間違って覚えないでくれ。
0249デフォルトの名無しさんNGNG
128bitアラインがSSEなどで有利なのは確かだが
cygwinのプロローグコード生成のバグだった気がする
無駄な__allocaもあるし
0250240NGNG
レスありがとうございます。ご飯たべてました。

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

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

>>252
あ、これ便利ですね。勉強に使いやすそうです。ありがとうございます。
0256デフォルトの名無しさんNGNG
>>255
生成コードを丹念に見るのはいい心がけなのでがんがれ
0257デフォルトの名無しさんNGNG
>253
コンパイラがどういうコード吐くか知ってれば、
Cでの記述でもある程度高速化出来る。
0258デフォルトの名無しさんNGNG
ENTER 命令は使われないのか?
0259デフォルトの名無しさんNGNG
240の成長を生暖かい目で見守っておこう。
0260デフォルトの名無しさんNGNG
さてと アセンブリ言語囓ろうと思うんだけど
まずこんなボンクラはどんな本に飛びつけばいいのか教えて下さい?
ISBNコードのみで( ´,_ゝ`)
0261デフォルトの名無しさんNGNG
4274132072
0262デフォルトの名無しさんNGNG
4-7980-0853-2
0263デフォルトの名無しさんNGNG
>>258
ENTER はたしか Pentium のどれかで「普通にBPいじるより遅い」ってことで使われなくなった。
Pentium 4 だと遅くないらしく、Intel Compiler で Pen4 あたりに最適化すると使われたような気がする。
0264デフォルトの名無しさんNGNG
最近のノートとかに入ってるPentium MプロセッサってPen4の仲間ですか?
多くの場合速度はPenM < Pen4なんだけど、
PenMに対してPen4の最適化は有効なのかなって。
0265デフォルトの名無しさんNGNG
どっちかというとPenIIIの仲間です
ついでに普通、速度はPenM > Pen4です
0266デフォルトの名無しさんNGNG
Intel CompilerのP4最適化でenterが生成されるというのは経験がないなぁ。
Intelの最適化マニュアルにも次のように書いてあるし。

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

>どっちかというとPenIIIの仲間です
お答えありがとうございました。
0269デフォルトの名無しさんNGNG
>>267
なるほどー
SSE2勉強してきます。
0270デフォルトの名無しさんNGNG
>>266
漏れの勘違いだったようです。情けない。
0271デフォルトの名無しさんNGNG
アセンブラーでCD-DA再生する方法教えてちょんまげ
いま簡単なOSみたいなの作ってるんだけど
0272デフォルトの名無しさんNGNG
独自OSですべての環境に対応するのは無理
アナログ接続のATAPIならCD再生用パケットを送信すればおけ
0273デフォルトの名無しさんNGNG
アセンブラとCの使い分けはできるようになるべきだ。
Cからアセンブラのモジュールを呼ぶこととか、その逆とか。

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

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

じじいのひとりごとすまん。
0274デフォルトの名無しさんNGNG
DEBUG.COMでシコシコやるような時代じゃないからなぁ
0275デフォルトの名無しさんNGNG
>>271
go T10
0276243NGNG
>>271
http://www.cqpub.co.jp/hanbai/books/33/33211.htm
これでも読めれ。
0277デフォルトの名無しさんNGNG
>>261
ありがとうあんたいい人だ

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

LDA,(8000H)
CP7FH
JPZ,300H

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

0279デフォルトの名無しさんNGNG
宿題は宿題スレへ、って気もするけど、

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

>>280
スペース入れたはずなんですが・・・・
0283デフォルトの名無しさんNGNG
>>282
多分スペースでなくてタブ入れたから無視されたんだよ。
0284デフォルトの名無しさんNGNG
>>281
>やっぱタネンバウムの本くらい読まなきゃだめなんだろうか。。
スレ違いだが、とりあえず読んどけ。
0285デフォルトの名無しさんNGNG
>>281
さくらタン?違うよね・・・
0286七誌NGNG
しません
明日マイコンの試験があるのですが、
CPという命令の意味がわかりません。
Aレジスタと何かを比較するということはわかったのですが、
比較したあとにどうなるのかがわかりません。
くだらない質問かもしれませんが、宜しくお願いします。
0287デフォルトの名無しさんNGNG
教えない
0288デフォルトの名無しさんNGNG
試験前日にフラグレジスタがわからない時点で無理だからあきらめろ
0289デフォルトの名無しさんNGNG
>>286
たいていの実装では
「減算を行うがフラグのみ変化でアキュムレータは変化しない」



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

と

レジスタ

は

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

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;
}
これだと問題ないんだけど、一体どうしてでつか?
0295デフォルトの名無しさんNGNG
ENTERとLEAVEが使われない理由はなんででしょうか?

push ebp
mov ebp, esp

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

コンパイルした結果が遅ければ、自分で考える。
プログラモ技術が磨かれる。
やはりこうでなくtへはいけない。
0300デフォルトの名無しさんNGNG
>>294
mov eax.offset [ebp-4]
というコードは存在しないので記述できないから
lea eax,[ebp-4]
とかは存在する
0301デフォルトの名無しさんNGNG
久しぶりにIntelのサイトに行ってみたんですが、日本語のIA-32 デベロッパーズマニュアル上中下巻が見当たりません。
日本語ドキュメントの配布は終了しちゃったんでせうか?
0302デフォルトの名無しさんNGNG
ftp://download.intel.co.jp/jp/developer/jpdoc/24547003_j.pdf
ftp://download.intel.co.jp/jp/developer/jpdoc/24547103_j.pdf
ftp://download.intel.co.jp/jp/developer/jpdoc/24547203_j.pdf

上から順に上中下
0303デフォルトの名無しさんNGNG
>>302
それのPentium4の新機能に対応したやつありませんか?
あと、Pentium4で拡張された命令のインストラクションコード吐けるアセンブラってありますか?
0304デフォルトの名無しさんNGNG
>>302
ありがとうございました。
早速ダウソロードしますた。
0305デフォルトの名無しさんNGNG
>>303
http://www.intel.com/jp/developer/download/index.htm
ここから探してくれ
0306デフォルトの名無しさんNGNG
EAXが0のとき、CFの値をEAXのビット0に入れたい場合、

 ADC EAX, 0
と
 RCL EAX, 1

ってどっちが早いかな
0307デフォルトの名無しさんNGNG
adc eax,eax
0308デフォルトの名無しさんNGNG
なるほどそれがあったか。
0309デフォルトの名無しさんNGNG
>>306
CPUによって違う
0310デフォルトの名無しさんNGNG
>>309
AthlonXPとPen3だとどうですか。
つかIntelの3つのPDFにクロック数掲載されていないのは不便ですね
0311デフォルトの名無しさんNGNG
>>310
クロック数だけを説明することは困難。
ちなみに adc eax.eax がいちばん命令長が短いと思われ。
0312デフォルトの名無しさんNGNG
>>310
自分は大して詳しくもないアマチュアなので間違っているかもしれないが、
加減算よりシフトやローテートの方が速いCPUなんてのは聞いたことがない。
某有名コンパイラは128倍の計算で7bit左シフトではなく加算を7回するのだそうな。
0313デフォルトの名無しさんNGNG
あすろんえくすぴ
ADC mreg8,reg8 10h 11-xxx-xxx DirectPath Latency:1
RCL mreg16/32,1 D1h 11-010-xxx DirectPath Latency:1
0314デフォルトの名無しさんNGNG
ミス。
ADC mreg16/32,reg16/32 11h 11-xxx-xxx DirectPath Latency:1
0315デフォルトの名無しさんNGNG
>>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の方が速い。
0316デフォルトの名無しさんNGNG
pen4めちゃくちゃだな・・・
0317デフォルトの名無しさんNGNG
>>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
  
となってますた。@あすろんえくすぴ
0318デフォルトの名無しさんNGNG
>>313-315
なるほど・・・。無理にサイズ増やす必要ないですね。

演算器の数とかまで考慮する必要があるとはなかなか奥が深い。。。
0319デフォルトの名無しさんNGNG
>>317
Visual C++のコンパイラは古いよ。
最新版のコンパイラに差し替えて、Pentium4用に最適化してみると、結果が違うかも。
0320デフォルトの名無しさんNGNG
Pentium 4 プロセッサでは、以前の世代のプロセッサより、shift 命令とrotate 命令の
レイテンシが大きくなる。3 またはそれ以下の左シフトの場合は、add 命令のシーケンス
の方がレイテンシが小さい。固定シフトと可変シフトのレイテンシは同じである。
0321デフォルトの名無しさんNGNG
初心者にもわかりやすいアセンブラの書籍、サイト、ツールはないでしょうか?
ニーモニックなんかはわかったのですが、上手く例題等を実行出来ず、
何が悪いのかさえもさっぱりです。
0322デフォルトの名無しさんNGNG
このスレは初心者を生ぬるい目で応援しています
0323デフォルトの名無しさんNGNG
それは卑下する目ですか?
0324デフォルトの名無しさんNGNG
日本語を勉強汁
卑下とは自分を下げる、すなわち謙譲的な概念だよ
蔑む・蔑視とはちょいと違う
0325デフォルトの名無しさんNGNG
生ぬるい目 ( ´_ゝ`)´_ゝ`) フーン
0326デフォルトの名無しさんNGNG
( ´_ゝ`)´_ゝ`)´_ゝ`)´_ゝ`) フフフーン
0327デフォルトの名無しさんNGNG
あーあ
クソレスで埋めんなよ
つまんねえ奴
0328デフォルトの名無しさんNGNG
昔みたいにx86房が!といわれなくなったのでこのすれも温かくなったきがする
x86っていくら最適化しても専門分野に使われるCPUとは別物なのが
かなりものすごい勢いでかなしいぃ、せるコンピューティングとかはまた別かな?
0329デフォルトの名無しさんNGNG
このスレはCASL IIが乗っ取った!
0330デフォルトの名無しさんNGNG
サルでもわかるコンピュータ用語講座 「レイテンシ」

テストが最悪で 恥ずかしさのあまり死んでしまうこと。
0331デフォルトの名無しさんNGNG
>>330はスルー ( ´,_ゝ`)プッ
っと。
0332デフォルトの名無しさんNGNG
石が専用か汎用かなんて事はあまり関係ないだろ
問題はソフト面

i386やZ80だって専用プログラムさえ組めば
ミサイルを目的地まで自動操舵するくらい出来るんだし
0333デフォルトの名無しさんNGNG
いや最適化のはなしだろ?え、ちがった?
0334デフォルトの名無しさんNGNG
あ、釣られたか・・・・・orz
0335デフォルトの名無しさんNGNG
一番最適化しやすいのはゲーム専用機


「環境がそれしかねえ」ことだし
0336デフォルトの名無しさんNGNG
>>334

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

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

ちなみにミサイル本体とはずれるが新しいタクティカルトマホーク火器制御シス
テムの開発プロセスはCMMのレベル5で実施され、30%の生産性向上、20%の開発コ
スト削減、15%の不具合修正コスト削減ができたそうだ。
0339デフォルトの名無しさんNGNG
そろそろSSE2の勉強でもしたいと思っているんだけど
Intelのサイト以外で何かお勧めの本とか無いっすか?
0340デフォルトの名無しさんNGNG
たのしいすうがく
0341339NGNG
>>340
http://www.amazon.co.jp/exec/obidos/ASIN/4535605025/qid=1096743279/sr=1-4/ref=sr_1_10_4/249-8161173-5159533
これだな?
よっし、明日本屋で見てくる。
0342デフォルトの名無しさんNGNG
               ,、------- 、
            ,、-'´        `ヽ、
         ___/      _\     \
       / //     /      ̄`ヽ、  ヽ
       /  レi    //   / /ハヽ \ヽ  |`iー 、
     //   |ヾ  r//i  /  / / ヽヽ ヾi  V ヽヽ
     //   /| `7 |_|_L _/ / /    | |  |l |//! ゙i ゙i
   //  / |三|'´| | || | /| /  -─!ト!、|| |/ |   | |
    | ||  /  l>-|、rァ〒ヾ|/ |.!    __,リ⊥ リ|彡/!   |! |
    | ||  |  |⌒l` |‐':::::::|     l、_j::::::iゝr‐vi||  |ト、',
   ',ヽ! |  ト、∧ ー---'     |::::::::ノ '/ / ||  || ヾ.、
     \! | | | | |‐!       , j    ̄` /- '  ',   ト、 \     / ̄ ̄ ̄ ̄ ̄=P ̄ ̄ ̄ ̄
      ヽト、! ',ヽ! \    ー_-       /^i |  ヽ、 | \  `ー < お兄ちゃん、これは罠だよ
       \ヽミ    ゙ヽ、      ,、-' ´ j/    ヾ-、ヾミー    \__________
          ``   _|`` ー ' ´ ト--、_     r‐、| r‐v--、
         __,、-‐'´ |       /   >ー-、  \\l‐、ヽ |
        rくヽ    |--──/    // ̄ ヽ  し! | ヽ |
         / ヽヽ  |rv'l /  ,、-'´/       ヽ-/     /
       ./   ヽヽ |`=/-‐'´,、-' ´      / /    /
      /     _ヽ.|_/__∠/        / く`ー─‐' ´/
      ∧  |  く  =しヘ  /     i   ノ  }    _/7
0343デフォルトの名無しさんNGNG
お前は誰だ?

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

>>315に書いてある通りではないかと
0347デフォルトの名無しさんNGNG
>>345
rcl A,数値
で 数値ぶん 内部でループするのでないかな。

1ビットシフトの命令だけにしとけばよかったのにね
0348デフォルトの名無しさんNGNG
>>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サイクルで処理してしまう。
0349デフォルトの名無しさんNGNG
俺は昔のMIPS R2000/3000時代の人だから、今時のCPUのことは言えないが、
昔から加算よりシフトのほうが重かった。

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

先輩が嘆いてた。
回路のことを気にしない純粋な情報系の学生さんが、
ファンアウト数を気にせずにロジックを組み合わせて、
それが何故いけないのか理解してくれないと・・・。
0350デフォルトの名無しさんNGNG
ファンアウト数ってなんでしょう?
0351デフォルトの名無しさんNGNG
サッカーでいうサポーターがサポート辞めることじゃない?
0352デフォルトの名無しさんNGNG
ファンアウト数ってのは出力にぶら下がれる入力の数の事を言うんじゃないか?
0353デフォルトの名無しさんNGNG
蛸足配線でファイヤーだな
0354デフォルトの名無しさんNGNG
今の情報系の教育ってのは全く回路はやらないの?
0355デフォルトの名無しさんNGNG
電子機械科
0356デフォルトの名無しさんNGNG
てか今はどこの大学でもアセンブラ教えないな
日本だけじゃないけど

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

ファンアウトか。
懐かしい・・・(遠い目)
0358デフォルトの名無しさんNGNG
32bit幅だったら、32個分のシフト結果を
シフト数でmultiplexすればいいじゃーん
0359デフォルトの名無しさんNGNG
漏れの学校もアセンブラなんか教えない
てかCしか教えない

自分で勝手に勉強するから別にいいんだけど
0360デフォルトの名無しさんNGNG
うちは回路もアセンブラもやったよ
0361デフォルトの名無しさんNGNG
回路って、AND・OR・EOR(XOR)ぐらいやっときゃいいの?また別の話?
0362デフォルトの名無しさんNGNG
基本は増幅回路。
0363デフォルトの名無しさんNGNG
デジタル回路じゃなくて?
0364349NGNG
>>358

>>349の最後の段落を読み直してほしい。
0365デフォルトの名無しさんNGNG
>>363
ディジタル回路でも中身はアナログ回路なので、
アナログ回路のことを全く無視してはいけないよ、
というのがファンアウトの話。
0366デフォルトの名無しさんNGNG
アナログ⊂デジタル
0367デフォルトの名無しさんNGNG
最近のCPUはアナログだから演算結果に誤差が出るんですね
へぇー
0368デフォルトの名無しさんNGNG
>>364
ファンアウトってそのことだよね?
0369デフォルトの名無しさんNGNG
>>366
逆じゃないか?
0370 ◆FIcNi4f8js NGNG
4mA
0371デフォルトの名無しさんNGNG
一番最近に出たx86系のアセンブラの書籍って何があるでしょうか?
WinXP環境下で例題を実行しているものを探しているのですが
0372デフォルトの名無しさんNGNG
なんかエロゲーの改造主体の本が出てたな
一応アセンブラの本。
0373デフォルトの名無しさんNGNG
「アセンブラとC、Delphiができます」

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



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

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

DOS時代はCode ViewとかTurbo Debugger使ってたよ。
良いデバッガを使うことが、習得のしやすさに繋がると思うよ。
0385デフォルトの名無しさんNGNG
http://www.amazon.co.jp/exec/obidos/tg/detail/-/books/4839912025/customer-reviews/ref=cm_cr_dp_2_1/250-5945935-1227452
0386デフォルトの名無しさんNGNG
>>385
この本は参考にせず独習しろという意味のサブタイトルなんだろうな


0387デフォルトの名無しさんNGNG
俺はてっきりマジカル☆オープンの方かと思っていたがそんな本が出ていたのか。
まあ橋本和明じゃな・・・。
0388デフォルトの名無しさんNGNG
>>387

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

>まあ橋本和明じゃな・・・。
問題のあるライターのようですね。他所でも文章のパクリを指摘されていたし。
0389デフォルトの名無しさんNGNG
>>388
どちらも、あまり面白くなかったけど。
0390デフォルトの名無しさんNGNG
>>389
禿同、どっちも酷かったけどな
0391デフォルトの名無しさんNGNG
最近、思ってるのはオンラインで本買うと、
とんでもない糞本を買っちゃったりしてショックを受けたりする。
書評が絶対評価でない証拠かな。
やっぱり、その本を実際に手に取って調べてから買うほうが外れを引かないかも。
0392デフォルトの名無しさんNGNG
専門書は安くないしねぇ。
糞本は火にくべてやれ!
0393デフォルトの名無しさんNGNG
著者に買取りを要求するとか。

昔北朝鮮を楽園だと著書で賛美した某教授は
古本屋で著書を回収するのにやっきになっていたらしい……。
0394 ◆FIcNi4f8js NGNG
どっちもどっちだけどあえて比べれば、美咲ちゃんの方が良かった。(謎
0395デフォルトの名無しさんNGNG
美咲ちゃんの方がそりゃマシだけど、こっちはデバッガの使い方書いてるだけって感じだったな
0396デフォルトの名無しさんNGNG
>>395
だな、あまりの酷さにあきれた割には呆れるなw
0397デフォルトの名無しさんNGNG
いやまぁなんつうか、あれはアセンブラ本と呼んではいけないだろう。
まともな本のような書名と壮丁にすんなよ、まったく。
0398デフォルトの名無しさんNGNG
購入者一同で訴訟起こしたら勝つんじゃないか?
0399デフォルトの名無しさんNGNG
とりあえず出版社に苦情だな
0400デフォルトの名無しさんNGNG
>>397
ゲームの解析本としても役に立たないし・・・
0401デフォルトの名無しさんNGNG
「Intelのサイト以外で何かお勧めの本とか無いっすか?」
ttp://book.mycom.co.jp/book/4-8399-0986-5/4-8399-0986-5.shtml
これだな。これでCPUの構造と動きをマスターすべし。
0402デフォルトの名無しさんNGNG
>>401
意外に良書だな
0403 ◆FIcNi4f8js NGNG
あのCPUってデコーダはしょってるから
OUT B
や
OUT Im
があるのに
OUT A
が無いんだよね。

変わりに、裏命令で、
OUT (A+Im)
が有ったりする。(謎
0404デフォルトの名無しさんNGNG
>>401
それ、至る所で良書に分類されてるな。
自分も買って読んだけど、買ってよかったと思ってる。
0405デフォルトの名無しさんNGNG
>>401
意外に良書だね、まぁ正直なくてもいいけどw
0406デフォルトの名無しさんNGNG
レビュー読み比べ

CPUの創りかた
http://www.amazon.co.jp/exec/obidos/tg/detail/-/books/4839909865/customer-reviews/ref=cm_cr_dp_2_1/249-1561698-9936349

いまどきのアセンブラプログラミング
http://www.amazon.co.jp/exec/obidos/tg/detail/-/books/4839912025/customer-reviews/ref=cm_cr_dp_2_1/250-5945935-1227452
0407デフォルトの名無しさんNGNG
アセンブラがわかればハードがわかる
http://www.cqpub.co.jp/try/bk2003a.htm
0408デフォルトの名無しさんNGNG
いやもう比べるの明らかにおかしいでしょ、
何やってんだよまったくw

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

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

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

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

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

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

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

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



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


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

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

ではなく

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

です。
0442デフォルトの名無しさんNGNG
もう電子板でもどこでもいいから巣に帰ってくれ
迷惑だ
0443デフォルトの名無しさんNGNG
同感
いい加減にしろ
0444デフォルトの名無しさんNGNG
は?別にスレ違いでもないし
いい加減もクソもないだろ(w
0445デフォルトの名無しさんNGNG
>>444
ハードの話はスレ違いかつ板違い
0446デフォルトの名無しさんNGNG
じゃ、次の話題ができるまでってことにすれば?
自治厨の発言こそが一番無駄
0447デフォルトの名無しさんNGNG
今後CPUの内部状態の話は全部禁止な。
CPUはブラックボックスとして扱うこと。
0448デフォルトの名無しさんNGNG
ム板としてのアセンブラすれとして、↓から再開。次の方どうぞ。
0449デフォルトの名無しさんNGNG
とりあえず、上のほうにある頓珍漢なx86の知識を
生ぬるぽっくり見守りたいと思います
0450デフォルトの名無しさんNGNG
>>449
ガッ
0451デフォルトの名無しさんNGNG
>>447
スーパー301条か?!
0452デフォルトの名無しさんNGNG
    _  ∩
  ( ゚∀゚)彡 おっぱい!おっぱい!
  (  ⊂彡
0453デフォルトの名無しさんNGNG
処で、CAP-Xってどこ行ったの?
#昔COMP-Xエミュレータを作ったのは内緒。
0454いなむらきよしNGNG
まあアセンブラもできないやつはプログラマを名乗る資格はないって事だキケー!
0455 ◆FIcNi4f8js NGNG
今は亡きVMテクノロジー
0456デフォルトの名無しさんNGNG
.NETの中間コード手書きとか
0457デフォルトの名無しさんNGNG
MSIL
0458デフォルトの名無しさんNGNG
ハンドアセンブル出来る奴いるか??
0459デフォルトの名無しさんNGNG
68000ならハンドアセンブルって言うかマシンコードじか打ちやったけどね
0460デフォルトの名無しさんNGNG
>>458
出来ない奴の方が少ないと思う
0461デフォルトの名無しさんNGNG
「マシン語覚えていて」なら極端に割合下がるけどな
0462デフォルトの名無しさんNGNG
レジスタセレクタや命令デコーダのbit配置を頭に描くとマシン語が出てくる・・・
0463デフォルトの名無しさんNGNG
レジスタの値を0にしたい時ってなんでmov eax, 0ってやらずにxor eax, eaxって排他的論理和をとることが多いんですか?
movだと何か問題があるとか?
0464デフォルトの名無しさんNGNG
・8bit時代からの遺産
・命令のバイト数が少ない
・最近のCPUはxorによるレジスタクリアのための特別なサポートがある
0465デフォルトの名無しさんNGNG
どうしてICって全部NANDの組み合わせでできてるの?
普通にそれぞれのゲート使ったほうが部品数も少ないだろうに
0466デフォルトの名無しさんNGNG
>>465
> どうしてICって全部NANDの組み合わせでできてるの?
できてません。
0467デフォルトの名無しさんNGNG
>466
昔はNANDだけで構成されていた。
NANDだけでどんなロジックでもできる。
>465
NANDが一番Trの数が少なく組めるから。
0468デフォルトの名無しさんNGNG
>>467
なんか勘違いしてないか?
0469NANDの構造を教えてやろう!クェックエッNGNG
>468
    Vdd
    |
  ーーーーーーーー
  |      |
A→oPMOS.|→oPMOS
| |    | |
| |ーーーー.)ーーーーー出力
| |    |
| |    |
|→NMOS |
  |    |
  |ーーーーー
  |
B→NMOS
  |
 GND

で、MOS2個でできるんだよ。
0470デフォルトの名無しさんNGNG
>469
正確には、
「C-MOS2つでできる」
であったな・・・。
0471デフォルトの名無しさんNGNG
CMOSの数ならNORも同じだろう
トランジスタ数の話はTTLの方では?
0472デフォルトの名無しさんNGNG
月刊トランジスタ技術
0473デフォルトの名無しさんNGNG
(°Д°)ハァ?
0474デフォルトの名無しさんNGNG
「クレイジークライコー」
0475デフォルトの名無しさんNGNG
>>473 やっぱり素人には むずかしすぎた
0476デフォルトの名無しさんNGNG
x86の質問なんだけど、loop命令って今はあんまり使わないの?
0477デフォルトの名無しさんNGNG
>>476
んな、こたーない。
まず、疑問に思った理由を書け。
0478デフォルトの名無しさんNGNG
ケースバイケースだな。
0479デフォルトの名無しさんNGNG
ところでml.exeどこいった
0480デフォルトの名無しさんNGNG
>>476
インテルのCPUはloopが遅いので使われないみたい
でもAMDのloopは速いらしい。

>>479
ここにあるよ
ttp://www.microsoft.com/japan/msdn/vstudio/downloads/ppack/download2.asp
0481デフォルトの名無しさんNGNG
なんでloopじゃなくてdec ecx/jnzなの?
0482デフォルトの名無しさんNGNG
>>481
うえにかいてあるやんw
0483デフォルトの名無しさんNGNG
(゜Д゜)アッチョンブリケ!
0484デフォルトの名無しさんNGNG
>>480
AMDのloopはVectorPath命令で遅いよ。
AMDの最適化マニュアルにも使うなって書いてあるし。
0485デフォルトの名無しさんNGNG
rep movsd
をクアドレジスタ使ってどうかくの?
8バイト単位でコピーするからはやい?
0486デフォルトの名無しさんNGNG
>>469

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

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

0493LettersOfLiberty ◆rCz1Zr6hLw NGNG
Re:>492 コンパイラの付属ソフトに、Intel系プロセッサのアセンブリコードに変換してくれるプログラムは無いの?
0494LettersOfLiberty ◆rCz1Zr6hLw NGNG
Re:>492 ああ、ごめん。アセンブリコードにすること自体はもうできるのね。それより、NASMに限定しなきゃ駄目?
0495DustNGNG
逆アセンブラの凄いツールしてったら教えてください。アセンブラツールも教えてください。リバースエンジニアリングを悪用するとかじゃないんでお願いします。
0496デフォルトの名無しさんNGNG
>>495は美咲ちゃんに影響された人。
0497DustNGNG
逆アセンブラツールてどれですか?サイト教えてください。
0498デフォルトの名無しさんNGNG
教えてもおまえみたいな香具師には使いこなせない
0499デフォルトの名無しさんNGNG
>>497
さぁ、好きなのを選ぶが良い
http://www.vector.co.jp/vpack/filearea/win/prog/asm/index.html
0500DustNGNG
日本のツールじゃなく海外のツールだよ頭おかしいですか?逆アセンブラDownloadできるとこ教えろ!
0501DustNGNG
無料のお願い
0502デフォルトの名無しさんNGNG
「Re:」の変な使い方を見てると殺意がわいてくる
0503デフォルトの名無しさんNGNG
>>500
RTA
http://ibiblio.org/paulc/rta/
0504デフォルトの名無しさんNGNG
>>500
http://www.freedownloadscenter.com/Search/disassembler.html
0505DustNGNG
テスト
0506DustNGNG
>>503-504
どちらもForbbidenじゃねーか。氏ねよ!
0507デフォルトの名無しさんNGNG
68用ならdisがあるぞ。
0508デフォルトの名無しさんNGNG
>>506
おまえ、どんな環境でアクセスしてんだよ。
学校の串に弾かれてるんじゃねーか?
プププ
0509デフォルトの名無しさんNGNG
またヘンな教えてクンか・・・
0510DustNGNG
505と506のdust偽者です。それで・・・例のツールは?
0511デフォルトの名無しさんNGNG
誰か禁断のツールgoogleをおしえてやれよ
0512名無し@googleNGNG
http://www.google.co.jp/
ぐーぐるだよさいきょうつーるけんざん。
0513デフォルトの名無しさんNGNG
日本人ならgoo使え
http://www.goo.ne.jp/
0514デフォルトの名無しさんNGNG
gooって何
0515デフォルトの名無しさんNGNG
goo.co.jp問題とか最早懐かしいな
0516デフォルトの名無しさんNGNG
あれはco.jpを抑えなかったgooがわるい
0517デフォルトの名無しさんNGNG
発生当時はドメイン買収で金払うのが一般的じゃなかったから。
無論、有名なほうに引き渡すべし、なんて方針も無かった。

# そーいやnhk.jpって空いてんのか?ひきこもり協会で押さえてやるか
0518デフォルトの名無しさんNGNG
あ、抑えられてたわ。
0519492NGNG
>LettersOfLiberty
レスどうもです。
勉強のためにNASMで吐き出せる物を探していたんですが、
どうやらないようですね。
0520デフォルトの名無しさんNGNG
>>486

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

アセンブラでタブブラウザは作れますか?
COMにアクセスできるなら何とかなると思うのですが。
0524デフォルトの名無しさんNGNG
>>521
完成品が出来てから来い。
0525デフォルトの名無しさんNGNG
APIとCだけでCOM扱える香具師なら
CALLに置き換えていけば出来ると思う
0526デフォルトの名無しさんNGNG
自分でコンパイラ作った方が早い

0527デフォルトの名無しさんNGNG
80x86アーキのインストラクションセット一覧表みたいなものはないですかね?
int16→0xDC 0x16
みたいな機械語と対になってる表みたいなのが欲しいのですが…
0528デフォルトの名無しさんNGNG
intelのpdfに全部書いてる
0529デフォルトの名無しさんNGNG
>>527
cd 16だろ
0530デフォルトの名無しさんNGNG
>>528
ありがとうございます。
intelのホームページで探してきます…ってintelの鯖おちとるがな!!
0531デフォルトの名無しさんNGNG
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のホームページから削除されているんですが
どうしたらよいでしょうかね…
0532 ◆nl7ClMRWE6 NGNG
>>531
探し物はこれ?
ftp://download.intel.co.jp/jp/developer/jpdoc/24547003_j.pdf
ftp://download.intel.co.jp/jp/developer/jpdoc/24547103_j.pdf
ftp://download.intel.co.jp/jp/developer/jpdoc/24547203_j.pdf
0533デフォルトの名無しさんNGNG
マスクこんなところにもいたー
0534デフォルトの名無しさんNGNG
ここム板じゃねえか……orz
0535デフォルトの名無しさんNGNG
Linuxでgccを使い、アセンブリの勉強をはじめた者です、、
自分で作ったとても短いプログラムを、
gcc -S で出力して、一行ずつ読もうとしてるのですが、

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

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

内容としても>240さんとまったく同一だと思います。
0537デフォルトの名無しさんNGNG
ANDでいいんじゃない?

スタックって、大きな番地→小さな番地に向かって進むので、
ANDで下位ビットを0に丸めると、キリのいいところまでゴミを積むのと同じ効果があるんだよ。
0538デフォルトの名無しさんNGNG
ANDがAMDに見えてしゃーないのはなんでですか。
0539デフォルトの名無しさんNGNG
ANDっていうとコレだろ
ttp://and.intercon.ru/
0540デフォルトの名無しさんNGNG
すいませんtasm32.exeはどこにあるんでしょう・・・
pro以上に付属するとあったのですが無料では無いでしょうか・・・
0541デフォルトの名無しさんNGNG
つーーーほーーーしますたーーーーーー
0542デフォルトの名無しさんNGNG
スーファミのアセンブラってどれが一番いいんだ?
p://www.intsys.co.jp/tools/cgb/sdk/archive/cgb_sdk991026.exe
もしかして↑これ?ダウソしたけど勇気無くてダブルクリックできない…
0543LettersOfLiberty ◆rCz1Zr6hLw NGNG
[>542]を見て改めて思ったこと…
ゲーム機専用アセンブラなんてどうするのだ?
もしかしてロムでも作ってくれるの?
Re:>542 404だった。
0544デフォルトの名無しさんNGNG
あーあ、踏んじゃったよこの人。
0545LettersOfLiberty ◆rCz1Zr6hLw NGNG
Re:>544 何かあるのか?
0546デフォルトの名無しさんNGNG
とりあえず変なRe:をやめい
0547デフォルトの名無しさんNGNG
ICC8.1で、/QxN /QxBなとIntelのCPUに最適化するオプションで
コンパイルしたコードをAMDのCPUでどうさせたいのですが、方法は無いでしょうか?
0548デフォルトの名無しさんNGNG
>>547
C++ソースにこれを追加する。
extern "C" void __intel_proc_init_N() {}
extern "C" void __intel_proc_init_B() {}
0549デフォルトの名無しさんNGNG
ありがとうございます。
しかし、リンカで
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 で定義されています

と出てきて、はねられてしまいます。
0550デフォルトの名無しさんNGNG
>>549
/QxN や /QxB つけてもはねられる?
どうしてもはねられるなら、/link /FORCE を付けてみて。
0551デフォルトの名無しさんNGNG
>>550
うまく行きました。ありがとうございます。
0552デフォルトの名無しさんNGNG
いえ、どういたしまして。
0553デフォルトの名無しさんNGNG
ここの皆さんは普段どのプロセッサ向けのアセンブラ作ってるんでしょうか?
0554デフォルトの名無しさんNGNG
Z80に決まってるだろ
なめんなハゲ


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


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

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

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

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

とあるので、関数とラベルは16バイトの境界合わせをするのが良い?
でも16バイトって結構長いですよね。
最長15バイトも穴埋めが必要ですが、全部nopで埋めて良いんでしょうか。
(nop自体もクロックって掛かりますよね?)
Pentium以降だとまた事情が変わってくるみたいですが、
Pentium3と4に限ると、何が最適でしょうか。
0572デフォルトの名無しさんNGNG
>>569
すいません、Pentium3以降で効率が上がれば良いです。
0573デフォルトの名無しさんNGNG
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はトレースキャッシュの為、コードのアライメントを揃える必要はない。
0574デフォルトの名無しさんNGNG
質問させてください。。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); というイメージです。
よろしくおねがいします。。
0575デフォルトの名無しさんNGNG
nopさーん

ウホ、ウホホホホウホ

おやおや、ゴンタ君もおおはしゃぎですね
0576デフォルトの名無しさんNGNG
淫乱アセンブラ
0577デフォルトの名無しさんNGNG
>>574
ediの初期化部分も晒せ
0578デフォルトの名無しさんNGNG
ediがぬるぽな予感。
0579デフォルトの名無しさんNGNG
mov ds:[>>578], ガッ
0580デフォルトの名無しさんNGNG
止まるってのは実行時に止まるのかコンパイル時に止まるのか
コンパイル時に止まりそうにないが
0581574NGNG
レスありがとうございます。。止まるのはReleaseモード実行時のみです。
止まった時にデバッグを開くとediに20が入ってました・・・
でもデバッグモードで1行ずつ進めていくと値が入ってるんです。。

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

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

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

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

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

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

8085はパイプライン構造ではないから計算通りのクロック数で走る
のではないかと思う。
0596デフォルトの名無しさんNGNG
時はまさに世紀末
0597デフォルトの名無しさんNGNG
「nopさーん」
0598デフォルトの名無しさんNGNG
you a shark!
0599デフォルトの名無しさんNGNG
>>594
バス占有しっぱなしは駄目だぞ
0600デフォルトの名無しさんNGNG
I/Oポートの何番に何がマッピングされているか詳しく書いてほしい。
0601ε=( ̄。 ̄)yー~~NGNG
>I/Oは何故取り戻さないといけないのですか。

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

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

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

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

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

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

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

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

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

>604、>610
ザマア無いな・・・、wクァッ!クァッ!・・・
0613デフォルトの名無しさんNGNG
判った風な顔をして墓穴掘り捲くってる香具師が暴れてるスレはここですか?
0614デフォルトの名無しさんNGNG
ここじゃないです
0615デフォルトの名無しさんNGNG
__________
    <○√
     ‖  
     くく  
とりあえずε=( ̄。 ̄)yー~~は俺がここを支えているからどっかに入ってくれ
0616コウカ?=( ̄。 ̄)yー~~NGNG
__________
    <○√
     ‖  
     くく  
    ε=(*。*)y\~~
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
0617デフォルトの名無しさんNGNG
>ε=( ̄。 ̄)yー~~

もうすこしIDTRレジスタについて勉強しよう
0618デフォルトの名無しさんNGNG
言ってることが見当違い過ぎる

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

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

俺裸の時は、MASMが含まれてた頃のMS-DOSからMASMだけ引っ張り出して使ってたよ。
別売りになった途端、すげー値段が高くなったような・・・。
0633デフォルトの名無しさんNGNG
>>628-631
そこで「CPUの創り方」ですよ
http://www.amazon.co.jp/exec/obidos/ASIN/4839909865/249-2079252-3805149
0634デフォルトの名無しさんNGNG
>>632
ただで落ちてるよ。
0635デフォルトの名無しさんNGNG
>633のストアドロジック方式じゃなく、マイクロプログラム方式だが、
これもあるぞ。
ttp://www.ics.kagoshima-u.ac.jp/edu/expII1/
0636デフォルトの名無しさんNGNG
MinGWにgasは、付いてないってことですか?
どすで、as -v と打ったら何やらversionと出てきたのでてっきり‥
0637デフォルトの名無しさんNGNG
いきなり何なの
0638デフォルトの名無しさんNGNG
VC++6.0でHelloWorldプロジェクトをスケルトンのまま混合モードで表示させてみたんですが、
mainに入る前に
add byte ptr [eax], al
がずら〜と並んでるんですが、これは何の意味があるんでしょうか?
0639デフォルトの名無しさんNGNG
>>638
たぶん、プログラムのエントリに入った直後じゃないかな。
エントリと main() が異なることは分かってる?
0640デフォルトの名無しさんNGNG
わかってないです・・・すみません
プログラムのエントリとmainって違ったんですか。
組み込み系のアセンブラをやっていたのですが、
アプリに関してはさっぱりです。

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

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

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

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

goto文を恐れなく使う兵達のスレ
http://pc5.2ch.net/test/read.cgi/tech/1021364372/
0646デフォルトの名無しさんNGNG
>>645
なんか言ってどうにかなるようなもんじゃないし。
0647デフォルトの名無しさんNGNG
今時、goto文なんて使ってんじゃねーよ
ローカルスコープにしか飛べないなんて、使い物になんないぜ
0648デフォルトの名無しさんNGNG
そうでもないけどな。

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

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

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

;Arrayはsigned 32bitsの整数です。
;どなたかお願いします。
0652デフォルトの名無しさんNGNG
>>651=http://pc5.2ch.net/test/read.cgi/tech/1035288252/319
0653デフォルトの名無しさんNGNG
>>651
 signed 32bitsってなんだ??
0654デフォルトの名無しさんNGNG
signed long int...t...t
0655デフォルトの名無しさんNGNG
こんな感じかな? 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
0656651NGNG
>>655
 ありがとうございます。でも、ちょっと僕が言っていたのと違いますね。ごめんなさい。
 
どなたかわからないでしょうか?
 
0657デフォルトの名無しさんNGNG
>>651 C言語自体も知らないとみた
0658651NGNG
>>657

この問題のC言語程ならわかります。
0659デフォルトの名無しさんNGNG
>>651 のどこが C なんだ?
0660デフォルトの名無しさんNGNG
絶対にCじゃない
0661657NGNG
>>651
やるたいことを予想してみると、
配列でマイナスのものカウントと
マイナスの場合、正の値にしたいということ?

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

紙と鉛筆で机の上でウジウジしてる学生さんだね。
学校の宿題かなんかじゃないの?
0665651NGNG
emulator8088 って日本でも使われてるんですか?
0666651NGNG
emulator8080 って日本でも使われてるんですか?
0667651NGNG
emulator8000 って日本でも使われてるんですか?
0668デフォルトの名無しさんNGNG
串
0669デフォルトの名無しさんNGNG
>>667
マジレスすると、けっこう年とった人は使ったことあると思う。
若い人は全然知らんと思う。
0670デフォルトの名無しさんNGNG
よくいうよ。
0671デフォルトの名無しさんNGNG
若い人はemulator4836のほうが馴染みがあるんじゃない?
0672デフォルトの名無しさんNGNG
自作自演乙
0673デフォルトの名無しさんNGNG
x86系は遅延スロットを意識してコードを書かなくてもいいの?
0674デフォルトの名無しさんNGNG
あの子を意識してしまいコードが書けません!
0675デフォルトの名無しさんNGNG
関数のアラインあわせで埋まってる0xCCってint 3でしょ?
int 3て何ですか?(VC)
0676デフォルトの名無しさんNGNG
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/vsdebug/html/vxconusingafxdebugbreak.asp
0677デフォルトの名無しさんNGNG
ありがとうございます
0678ほんたまNGNG
おみゃ〜らよ、おりはいまマシン語プログラミングソフト「スリムドカン」のサンプルを充実させようと取り組んでいるところだ。
だが、おみゃ〜らよ、「ファイルの開く」コモンダイアログがどうも出ないのよ。
おみゃ〜らよ、「ファイルの開く」コモンダイアログを出すアセンブリソースでいいのないか?
できればnasmでいいのないか?マクロを使ってない、フルアセンブリコードのサンプルができればいいな♪
それ見てパクって「スリムドカン」のサンプルにするから‥♪
あと「猫でもわかる‥」みたいな解説のアセンブリ版みたいなサイトないか?
0679デフォルトの名無しさんNGNG
>>678
コンパイルを途中で止めて生成されたアセンブラソース読めばいいんじゃねーか?
0680デフォルトの名無しさんNGNG
WTLのヘッダファイル見れ
0681デフォルトの名無しさんNGNG
たまに生えてくるこのキチガイはコテなんですか?
0682デフォルトの名無しさんNGNG
空気だからきにすんな
0683マイク ◆yrBrqfF1Ew NGNG
キチガイというのはそもそも2ch自体もそうだろう。
ヤツだけというわけじゃないな。
0684デフォルトの名無しさんNGNG
また湧いた
0685デフォルトの名無しさんNGNG
男は黙ってNGName
0686デフォルトの名無しさんNGNG
くれ〜MASM街の〜
光とハゲの中ぁ〜



ということでMASMをくれ。
0687デフォルトの名無しさんNGNG
nasmの構文解説したサイトどっかない?
0688デフォルトの名無しさんNGNG
http://www.google.com/
0689ほんたまNGNG
おみゃ〜ら〜、すげーぞ〜!!!
おみゃ〜ら〜、「スリムドカン」の最新版をアップしたぞ〜♪
おみゃ〜ら〜、「スリムドカン」の最新版はすげーぞ〜♪
まずダイアログエディタにバグが見つかったので、それを直した。
次におみゃ〜らよ、サンプルプログラムをすこぶる充実させたから、見ちみれ?
おみゃ〜ら〜、サンプルにはビットマップの描画サンプルと、「ファイルを開く」コモンダイアログを出すサンプルが仲間入りしたぞ〜。わかる?
特に「ファイルを開く」コモンダイアログを出すのは難しく、nasmとかのいいサンプルがないか探したんだが、結局見つからず自力で実装したという次第よ。
おみゃ〜ら〜、「スリムドカン」のサンプルもいよいよ「猫でもわかる…」のサンプルと同レベルのものが登場してきたよ。
つまり、「スリムドカン」はいよいよ中級のウインドウズソフトがつくれるソフトになってきたってこと!!
おみゃ〜ら〜、サンプルにビットマップの描画サンプルと、「ファイルを開く」コモンダイアログを出すサンプルがあるってことは、もはや「スリムドカン」でつくれないウインドウズソフトはないといっても過言ではないのではなかろうか?
どうじ?おりはもはやここまで来ると神だな♪自分じどうじ?
0690デフォルトの名無しさんNGNG
ろくな説明もできない人間がまともなもの作れるわけないな
0691デフォルトの名無しさんNGNG
>>689
じゃぁ、まずwebブラウザ作ってみろ。
IEコンポーネントもGeckoも使わないやつな。
0692デフォルトの名無しさんNGNG
KHTMLだな
0693デフォルトの名無しさんNGNG
ネタにマジレスすんなよ
0694デフォルトの名無しさんNGNG
何故ここの住人は放置すら出来ませんか?
0695デフォルトの名無しさんNGNG
国語能力≠プログラミング能力
天才は左脳に障害がある場合が多いから
0696デフォルトの名無しさんNGNG
凡才なのに左脳に障害があるのはどうしてですか?
0697デフォルトの名無しさんNGNG
必要条件と十分条件の区別もつかないのは脳に障害があるからですか?
0698デフォルトの名無しさんNGNG
Z80のアセンブラしか扱ったことなくて
昨今というか8086以降のCPU知らないんですが
キャッシュとかパイプラインの制御もアセンブラで出来るものなのでしょうか?
0699デフォルトの名無しさんNGNG
キャッシュは若干できるがパイプラインは無理。
0700デフォルトの名無しさんNGNG
>>699
ありがとうございます
ということは命令の順序の並び替えぐらい考えれば
あとは普通にアセンブラ書けばいいんですね(違う?
0701デフォルトの名無しさんNGNG
パイプラインの制御も普通にあるだろ・・・
0702デフォルトの名無しさんNGNG
http://homepage1.nifty.com/herumi/adv/adv41.html
0703デフォルトの名無しさんNGNG
パイプラインに直接働きかける命令なんてあったっけ
>>698の意図次第だな
0704デフォルトの名無しさんNGNG
Pentium以降、CPUIDでパイプラインが止まるとかそういうのはある。
でも制御とは言えないな。
0705デフォルトの名無しさんNGNG
意味もなく分岐してストールさせる。
予測あるからどこまで通用するかわからんが。
0706デフォルトの名無しさんNGNG
そりゃ制御じゃねーだろ。
0707デフォルトの名無しさんNGNG
いや、別な意味で間違いなく制御だ。
Pentium???の最適化マニュアルはそのためにある。
0708デフォルトの名無しさんNGNG
プリフェッチキューも「制御」できるし
BTBも「制御」できるし、
レジスタリネームも「制御」できるんだね!
カッチョエー
0709( ̄。 ̄)yー~~NGNG
>698の言っているパイプラインは、
CPUの内部パイプラインではなく、外部パイプラインバスのことを言っているのではないのか。
パイプラインバスなら、確か286あたりからバスタイミングチャートに3つくらいモードがあって、
パイプラインバスとかメモリインタリーブとかできたようだった。
ただし、コントロールレジスタ(コントロールピン)を直接煽れることは無いと思った。
0710デフォルトの名無しさんNGNG
pc98の割り込みについてまとめられているページ無い?
ググったらDOSのファンクションコールの事が殆ど。
0711ほんたまNGNG
おみゃ〜ら〜、サンプルアップしたぞ〜♪ホームページもアップしたぞ〜♪宇宙一すげぞ〜♪
おみゃ〜らよ、なぜ宇宙一すげーかわかるかな?
おみゃ〜らよ、おりはな、「Visual C++」で自作したDLLをスリムドカンでつくったプログラムから呼び出すのに成功したんだよ!わかる?
おみゃ〜らよ、DLLを呼び出すプログラムを「Visual C++」」でつくるには、Libファイルをリンクに設定したり、ヘッダファイルをインクルードしたりとやるべきことは多いだろ?
おみゃ〜らよ、DLLを呼び出すプログラムを「HSP」でつくるにも、やはりDLLの他に「.as」ファイルが必要だよ。
だが、「スリムドカン」の場合、DLLの他には一切何も必要ないんだな〜う〜ん、これが…自分じわかる?
つまり「スリムドカン」の場合、DLLさえあればDLLを呼び出すプログラムがビルドできるってわけ♪
おみゃ〜らよ、おりは宇宙一画期的だと思わないか?
おみゃ〜らよ、宇宙一すげ〜とわめいたのはそういうことよ♪
おみゃ〜らよ、自分じどうじ?
0712デフォルトの名無しさんNGNG
このスレは祟られてたりするんですか?
0713デフォルトの名無しさんNGNG
>>710
↓ここの「Table of Contents」 → 「NEC PC-9800 series」
ttp://www.ctyme.com/rbrown.htm

全部載ってるかどうかは知らんが。
0714デフォルトの名無しさんNGNG
http://home.impress.co.jp/catalog/impress/bk4642/
http://www.webtech.co.jp/undoc/
0715デフォルトの名無しさんNGNG
何でもそうだが巷にある参考書、解説書は
たとえ使わないものであれ全部解説したものって一つもないよな

よく使うものだけを解説するのも結構だが
俺は完全版辞典が欲しいんだ
0716デフォルトの名無しさんNGNG
PC-9800ならアスキーから出てる奴に大抵のことは書いてあったと思うが。
絶版臭いが。
0717デフォルトの名無しさんNGNG
これ?
ttp://www.amazon.co.jp/exec/obidos/search-handle-url/index=books-jp&field-keywords=PC%E2%80%909800%E3%82%B7%E3%83%AA%E3%83%BC%E3%82%BA%20%E3%83%86%E3%82%AF%E3%83%8B%E3%82%AB%E3%83%AB%E3%83%87%E3%83%BC%E3%82%BF%E3%83%96%E3%83%83%E3%82%AF
0718デフォルトの名無しさんNGNG
>>717
それか。
ハードの方はそこそこ詳しかったが、BIOSの方はあんまし役に立たなかったような記憶があるなあ。

そういえばinterrupt listに少し載ってなかったっけ?
0719デフォルトの名無しさんNGNG
アセンブラ勉強中
バイナリサーチをインラインアセンブラで書いたら
VC++に最適化させたCコードの方が5倍くらい速かった…
アセンブラやめようかな…
0720デフォルトの名無しさんNGNG
アセンブラ勉強中
良く分からないのでCの簡単なコードをコンパイルして
アセンブリコード吐かせてCPUのマニュアルとにらめっこ。
そんなことをやっているうちに結構読めるようになった。
0721デフォルトの名無しさんNGNG
今時のコンパイラは最適化通り越してコンパイルタイムで定数にしちゃったりするからねぇ
0722デフォルトの名無しさんNGNG
>>720
読むのと書くのは大違いだから勘違いしないように
0723デフォルトの名無しさんNGNG
アセンブラそーすってどうやって吐かせるんだっけ?
まえ某のコンパイラでやってたけどアセンブラつまらんって思ってたから
忘れちまった。このスレみてたらまたやりたくなってきた。
0724デフォルトの名無しさんNGNG
-S
0725デフォルトの名無しさんNGNG
bcc32 -S hello.c
コレダ!
>>724 ありがとう思い出せたよ。
0726デフォルトの名無しさんNGNG
>>722
読めればいいので問題無いです。
書くなんて言ってないのにそう
解釈するのは短絡な思考ですよ。
改める方が良いです。
0727デフォルトの名無しさんNGNG
昔はアセンブラばっかだったけど、最近はサッパリ使う機会が無いな。
AT&T式使ってたけど、死滅しちゃったかな?
0728デフォルトの名無しさんNGNG
AT&T形式はGASというクソアセンブラでしかみたことないですなあ
0729デフォルトの名無しさんNGNG
最近のCPUでコンパイラの最適化以上の速さのコードを自力で書けたりするかなぁ?
0730デフォルトの名無しさんNGNG
SSE 使っていいなら楽勝
0731デフォルトの名無しさんNGNG
ループで連続したバッファに対して
連続してFPU使うのは以外にコンパイラ以上に最適化できんのがおおいよ

日本語が良くわからんorz
0732デフォルトの名無しさんNGNG
ttp://www.dreamsight.i12.com/alink.htm

alinkとwin32.libの配布もとはここでいいんですか?
0733デフォルトの名無しさんNGNG
sourceforgeにありました
0734デフォルトの名無しさんNGNG
FPU叩くやつなら大抵自分で書いた方が速いな
0735デフォルトの名無しさんNGNG
>>719
ちなみにどんなソースか見せてみそ
0736719NGNG
>>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;
}
}
0737デフォルトの名無しさんNGNG
>>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の吐いたコード
の速度は差がほとんどなくなった。
0738デフォルトの名無しさんNGNG
MASM32の使いかたが分からん・・・
コマンドプロンプトで「assmbl sample」と打ち込むと
sample.obj sample.mapが作成されるんだがここからどうすりゃいいんだ?
とりあえず「link16 sample」として実行すると
sample:fatal error L1101: invalid object moduleとエラーが表示される
ちなみに当方の環境はXPっす。
MASM32の使い方を流れにそって解説してあるようなHPキボンヌ
0739デフォルトの名無しさんNGNG
>>738
なんかわからんが、link16って何?16ビット用のリンカか?
linkだけじゃだめなん?
0740デフォルトの名無しさんNGNG
MASM32なんぞ使う奴は肥溜めに落ちて死ね
0741EXCULTer's / Active PC ◆/80RBXpvJA NGNG
>>737
スケールインデックスあったんじゃねーの?
マニュアル見てみ。

>>738
オプションが足りないのでは?
ヘルプ見てみ。
0742EXCULTer's / Active PC ◆/80RBXpvJA NGNG
>>740
ビミョーかも。アトアトのことを考えるとVC++のほうがよさそうだけど。
0743デフォルトの名無しさんNGNG
>>741
何言ってるのお前?スケールドインデックスは*1、*2、*4の事だろーが。
俺が言ってるのはdat[]のdatのアドレス値を使いたいのに実際はdatの
アドレス値が置かれているアドレスがインラインアセンブラで使われてるって
事だよ。いっぺん氏ね。
0744EXCULTer's / Active PC ◆/80RBXpvJA NGNG
>>743
んじゃ全部アセンブラで書けよ、バカw
0745デフォルトの名無しさんNGNG
>>744
逆ギレすんなよ。自分が間違いましたと素直に謝ればいいものを。
0746デフォルトの名無しさんNGNG
>>739
LNK.BATとLINK16.exeならあるけどLINK.BATが見当たらない。
0747デフォルトの名無しさんNGNG
>>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間違いないぞ。
どっからアドレスのアドレスが出てくるんだ?
0748デフォルトの名無しさんNGNG
>>747
それがやってみたらだめなんだよ。もちろんdat[]は自動変数にして。
実際VC7.1で試してみた?
0749デフォルトの名無しさんNGNG
>>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に
使っていたりする所は許して欲しい。
0750デフォルトの名無しさんNGNG
VC6.0、ICC8.1ともに大丈夫だが。
VC7.1のインラインアセンブラはmasm準拠じゃないの?
0751デフォルトの名無しさんNGNG
>>746
LINK.EXEってないの?
0752デフォルトの名無しさんNGNG
>>750
>>749のリンク先のソースで試してもOKでしたか?
0753デフォルトの名無しさんNGNG
>>737
C++だからそうなる。Cなら大丈夫。
0754デフォルトの名無しさんNGNG
>>753
そうなんか。えらく嫌な仕様だなあ。
0755デフォルトの名無しさんNGNG
>>749
そりゃ、引数として渡されたdatでは、
cmp dat[edx*4], ebx
なんてできるわけ無いじゃん
0756デフォルトの名無しさんNGNG
>>749
そのソースのmov edi,datの部分はおかしくないかい?
これだとediには、dat番地じゃなくてのdat番地の内容が入っちゃうよ。
0757756NGNG
ごめん。↑は忘れて
0758デフォルトの名無しさんNGNG
>>756の言うとおりで、mov edi,datをlea edi,datにすれば
cmp dat[edx*4],esiとcmp [ecx*4+edi],esiの結果は同じくなるわけだが
0759デフォルトの名無しさんNGNG
>>758
ならないって。
0760デフォルトの名無しさんNGNG
そもそも、元のソースが何やってるかわからない
・・・・・アホでスマン

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

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

func1の場合は検索に失敗した時点で終了。
func2はとにかくITER回繰り返してから終了。もちろんその間何回も検索は失敗している。
と、思いますが。
0768755NGNG
あのね、俺が言っているのはアドレスとポインタ変数は違うってことだ。
例えば、以下のようにしたとき
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;
}
0769デフォルトの名無しさんNGNG
>>767
???
0770デフォルトの名無しさんNGNG
>>767
これって、失敗はあり得ないだろ。
0771デフォルトの名無しさんNGNG
ずいぶん前に32bitのWindowsXP上でAMD64のコードを走らせたという方が
いたと思います(このスレじゃないかも)
モード切替には一旦ページングを切らないといけませんが、その時に
仮想=物理アドレスとなるメモリ領域を確保する必要があると書いてあったのですが
それはどのような方法で行ったのでしょうか? お願いします。
0772デフォルトの名無しさんNGNG
WindowsXPのアセンブラでソフトウェア割り込みを登録したりってできますか?
自分でページフォルトとか例外飛ばしたいんですが
0773デフォルトの名無しさんNGNG
761 のコードを見てるとバイナリサーチする必要すらないんじゃないかという
気がしてくる私は多分 PG 失格
0774EXCULTer's / Active PC ◆/80RBXpvJA NGNG
やっぱり、アセンブラやってるヤツってどっかおかしいんだよな(わら

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

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

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

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

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

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

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


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

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

別に馬鹿にするつもりは無いが、バレバレの嘘ついても惨めなだけだが。
普段から、あんまりそんなことしてると、友達無くしますよ。よけいなお世話ですが。
0786デフォルトの名無しさんNGNG
この流れがそもそも理解出来ないんですが皆さんすごいですね
0787デフォルトの名無しさんNGNG
>>785
もういいって
0788デフォルトの名無しさんNGNG
自分の無知を認めたくない737が必死だな。
0789デフォルトの名無しさんNGNG
さて判定は?
↓
0790デフォルトの名無しさんNGNG
ここで KO
http://pc5.2ch.net/test/read.cgi/tech/1093519463/756
0791デフォルトの名無しさんNGNG
>>738
亀レスだが
16bit DOS用か Win32用かわからんが、これでどうだ?

ttp://www7.plala.or.jp/hop-step-jump/prog02.html
ttp://www.interq.or.jp/chubu/r6/masm32/intro.html
ttp://www7.plala.or.jp/keny01/
ttp://homepage2.nifty.com/kasayan/link.htm
0792デフォルトの名無しさんNGNG
>>790
いやいや、>>756は自分で言ってるように、明らかに間違いですよ。
>>785が言ってるのは、>>736と>>749のdatの扱いは両方とも正しいけど、それぞれのdatは違う物なので、
前提条件が違っている。
それを>>732は分かってないと言ってるんだと思う。
0793771NGNG
>>778
スレ違いですが、もう一つだけ教えてください。
MnPfnDataBaseからフレームが並んでいることは分かったのですが
物理アドレスに対応するPFNはどのように見つけたらよいのでしょうか?
お願いします。
0794デフォルトの名無しさんNGNG
>>792

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


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

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

同じことをやろうとしてるんだけど
CPUごとそれぞれ違うんですよ
そんなことまで教えないといけないのか
0802デフォルトの名無しさんNGNG
区別できないと気にしないの区別ができないバカがいるな(w
0803デフォルトの名無しさんNGNG
似てるなんて言えばJAVAとCも似てるわけだが
気にしねえとか言って、JAVAさえもCと呼びそうな勢いだなw
0804デフォルトの名無しさんNGNG
しねーよバカ、JavaとCではそもそも互換ねーじゃよ
0805デフォルトの名無しさんNGNG
CとC++も互換なんざしないわけだが
バカにはわからない


(すればC, C++の区別も必要ない)
0806デフォルトの名無しさんNGNG
在るよ上位互換だバカ
0807●NGNG
テスト
0808デフォルトの名無しさんNGNG
Cでオブジェクト指向





















できるんだってさw
すげえ!
0809デフォルトの名無しさんNGNG
「Z80とPentiumでも同じ"アセンブラ"なんだから同じコードで通るはずだ」
このとおり、言い出しそうな有様
0810デフォルトの名無しさんNGNG
まあとにかく技術的なディテールよりもこのスレは「動くソースを載せる事」
が一番雄弁に真実を語る事は間違いない。
0811デフォルトの名無しさんNGNG
>>810
同意
0812デフォルトの名無しさんNGNG
>>808
Cでオブジェクト指向した結果の延長がRuby
0813デフォルトの名無しさんNGNG
>>809
まあ 8080 のコードは Z80 で通ったりする訳だが
0814デフォルトの名無しさんNGNG
いつの話だ
0815デフォルトの名無しさんNGNG
ソースコード読む能力よりも、
「書いてあることをそのままの意味で読む」
能力が必要なんじゃねえのか?w
0816デフォルトの名無しさんNGNG
昔の話
0817デフォルトの名無しさんNGNG
いまでも8086のコードがPentiumで動いてる
0818デフォルトの名無しさんNGNG
8080のコードはV30でも(ry
0819デフォルトの名無しさんNGNG
V30って8080と実は互換あったん?
今頃初めて聞いた。
0820デフォルトの名無しさんNGNG
>>819
モードが切り替わるだけだから同時には使えない
0821デフォルトの名無しさんNGNG
このスレ、フレームばっかりだな
0822デフォルトの名無しさんNGNG
フレームって言うとenter/leaveって使ったことないなー
0823デフォルトの名無しさんNGNG
最近のCPUならpush/popの方が速いからねー
0824792NGNG
>>796
はい?
>>736をみて>>737の発言が出てくるってことは、分かってないってことでしょう。
最初から云々なんて関係ないし、動かしたかどうかも関係ない。
それとも、いまはわかってるってことですか。
それなら、よかったですね。
0825デフォルトの名無しさんNGNG
>>824
あのさあ、>>737は俺じゃないんっすけど。アンタ馬鹿ですか?
0826デフォルトの名無しさんNGNG
もう誰が誰やらワカンネーYO!
0827デフォルトの名無しさんNGNG
>>826
このスレでは人を賤しめて自分の価値を再確認するバカが必死になってる
ようなんで。IDでも付けば解決するんだがな。
0828デフォルトの名無しさんNGNG
心の目で見ろ。そうすれば誰が誰だかなんて一発で・・・・くそッ
0829デフォルトの名無しさんNGNG
>>819
ゲームの資産を残すための互換性だったらしい
0830デフォルトの名無しさんNGNG
gccはathlon用にはleave使うよ〜。enter使わないけど。
0831デフォルトの名無しさんNGNG
入ります ディレクトリ
0832デフォルトの名無しさんNGNG
>>793
フレームは物理アドレス0番地から順番に並んでいますよ。
探し方は↓
[MmPfnDataBase] + (物理アドレス>>12) * フレームサイズ

フレームのサイズは、通常24バイト、PAEで28バイトらしいです。
0833デフォルトの名無しさんNGNG
出ます ディレクトリ
0834デフォルトの名無しさんNGNG
>>826

737=743=748=749=761=776=782=796=825
755=768=780=785
792=824
だと思う。
824は否定しておりますがw
0835デフォルトの名無しさんNGNG
誤 824は否定しておりますがw
正 825は否定しておりますがw
0836デフォルトの名無しさんNGNG
ebpを元に戻すのに、leaveは普通に使われてると思う。
と思って試したら、VCではebp使わずにespで引数や変数にアクセスしてた。
BCCではleave使ってたが。
0837デフォルトの名無しさんNGNG
>>834
あの流れで737が別人とは思いづらいが、証拠があるわけでもないからね。
0838デフォルトの名無しさんNGNG
>>836
leaveはWinXPのカーネルでも良く使われているよ
0839デフォルトの名無しさんNGNG
じゃあenterが無いのはなんでだ
0840デフォルトの名無しさんNGNG
>>839
enterが遅いからでしょ。leaveはそれほどでもないんだろうけど。
0841デフォルトの名無しさんNGNG
Athlon64では、movとpopするよりleave使った方が
速いみたいだ。
0842デフォルトの名無しさんNGNG
今時は全部esp経由でいいんじゃね
0843デフォルトの名無しさんNGNG
最近アセンブラを使用しはじめました。
一つ質問をお願い致します。

以下のアセンブラのメモリ使用量を知りたいのです。加算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[・・])自体のメモリ使用量はいくつになるのでしょうか。

0844デフォルトの名無しさんNGNG
>>843
ただ単にOBJやEXEファイルのサイズじゃダメなのか?
0845デフォルトの名無しさんNGNG
オペランドはアドレスだから4バイトだろうが
0846デフォルトの名無しさんNGNG
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でサイズわかるだろ
0847デフォルトの名無しさんNGNG







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

でもスタック・フレームを作成しないで全てesp経由にする事ももちろん
可能。
0849デフォルトの名無しさんNGNG
1バイトぐらいケチケチすんなYO!EBPが空く方がでけーぞ
0850843NGNG
>>844

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

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

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

どちらが正しいのでしょうか。
0851デフォルトの名無しさんNGNG
正確なバイト数は
masmかなんかでリスティングファイル出力すればわかるだろうに
0852デフォルトの名無しさんNGNG
843はx86は1行が常にnバイトだと思ってるのかな?
0853デフォルトの名無しさんNGNG
平均とってどうするの?
0854デフォルトの名無しさんNGNG
その命令を含む簡単な実行ファイルをつくり、
デバッガで該当領域をディスアセンブルすればいいよ。
ニブちんの843でも一目瞭然だろ。
0855デフォルトの名無しさんNGNG
質問です。
nasm等のマクロアセンブラで作成したプログラムにおいて
dbやdw等で確保したメモリのアドレスの場所は確認してますか?
私は小さいプログラム程度ならいつも確認してしまう癖があるのですが。
SYMDEB等で調べて安心するも、俺だけかと思ってしまい夜も眠れねえ
0856771NGNG
>>832
ありがとうございます。
何とか完成しました。ブルースクリーンを10回ほど出してしまいましたがw
0857デフォルトの名無しさんNGNG
>>855
確認してどうすんだ?
0858デフォルトの名無しさんNGNG
855は843の兄弟か本人な気がしてならない
とんちんかんな質問が流行?
0859デフォルトの名無しさんNGNG
>>851
>>854

>>843の左側に書いてあるのはアドレスですよ。ちゃんと6バイトずつ増えてる。
0860855NGNG
855です。

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

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

0861デフォルトの名無しさんNGNG
>855です。

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


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

意味のわからなさがなんかツボにはまった。
0863デフォルトの名無しさんNGNG
ここは匿名性が高いインターネッツですね。
0864デフォルトの名無しさんNGNG
ネッツ!!!!!!!!!!!!!!!!!!!!
るby::!!!!!!
0865デフォルトの名無しさんNGNG
↑最近君が哀れでしょうがなく思えてきた
0866デフォルトの名無しさんNGNG
Ruby厨を演じているんだろうけど
全部同一人物ならかなり哀れだな
それにしても似非Ruby厨大杉
0867デフォルトの名無しさんNGNG
こんにちわ。
最近PICをやろうと思い、アセンブラを勉強しはじめました。
質問なんですが、ビット処理命令というのと、リテラルデータの意味が
わかりません。どうか後教授御願いします。
0868デフォルトの名無しさんNGNG
PICは使った事がないが、多分
ビット処理命令ってのはシフト(ビットをずらす=2で掛けたり割ったり)や
and とか or とかの論理演算のこと。
リテラルデータというのは命令コードにデータが組み込まれた命令、
普通はどこかのメモリーもしくはレジスタを指定して読み出すけど、それがなくて命令中に直接値が入っている。
即値ロードと即値加算が多い。
0869デフォルトの名無しさんNGNG
>>867
君の場合、アセンブラの勉強の前に論理回路の勉強した方がいいよ
0870デフォルトの名無しさんNGNG
>>867
ここは半可通しかいないから聞かない方がいい
こんなのとか>>869
0871デフォルトの名無しさんNGNG
>>867
電気電子版にPICスレがあるよ
0872デフォルトの名無しさんNGNG
アセンブラの勉強を始めたのですが、見よう見真似で作成した以下のコードを
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
0873デフォルトの名無しさんNGNG
>>872
masm32で16ビットコードを書けたっけ?
0874デフォルトの名無しさんNGNG
>>873
アセンブルはできる気がする。
でも隣家だけ16ビットって試したことないなぁ。

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


0878デフォルトの名無しさんNGNG
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ビットのフラットモデルで勉強したほうがよくない?

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

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

    ↑↑↑
すみません、嘘です。
0881デフォルトの名無しさんNGNG
使ったこと無いから予想だけど
link /t test.obj
じゃないか
0882デフォルトの名無しさんNGNG
そのとおりでした。。先輩方ゴメンナサイ!!

全部、上手くいきました、です!
(本当にゴメンナサイ!)
0883デフォルトの名無しさんNGNG
何度も大恐縮です。 不肖の愚弟に知恵をお貸しください。
[ ]を使ってデータをやり取りしたいのですが、
(*)の場合の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
でした。
0884デフォルトの名無しさんNGNG
まずmasm捨てるか、masmのイカレタ構文を染まるか、覚悟を決めろ
0885デフォルトの名無しさんNGNG
じゃあ、masmを捨てます!
0886デフォルトの名無しさんNGNG
>>883
word ptr
0887デフォルトの名無しさんNGNG
nasmの方がいいんじゃね?つかmasm32っていちおう違法だろ

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

db宣言されたラベルにはワードでアクセスできない
0888デフォルトの名無しさんNGNG
>>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,'$'
』
としてみると、コンパイルできるものの、
愛であろうと死であろうと文字に関係なく化けまった。。
我がアセンブル道(ミチ)の先は長そうである。
0889デフォルトの名無しさんNGNG
がんばってね
0890デフォルトの名無しさんNGNG
『
   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,'$'
』
これでどうよ?
0891デフォルトの名無しさんNGNG
>>889
サンキュッ・サーであります。

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

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

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

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

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

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

...
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
0899デフォルトの名無しさんNGNG
> あるプログラムを逆アセンブルしたら

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

>>901
なんかそうかもしれません。
このようなコードでは、他の場所からもジャンプされているので、
たとえば、switch 文で case 句から抜けるときに、
switch の最後の case 句であるかどうかにかかわらず
ジャンプ命令を生成しているのかもしれませんね。
0903デフォルトの名無しさんNGNG
うーん、
if (MessageBox(NULL, lpText, lpCaption, MB_OK));
こういう処理やってるんじゃない?実際に試してはいないけど、こうすれば
多分そのまま次命令へのジャンプ処理が生成されるかと。
0904デフォルトの名無しさんNGNG
>>902
メモリ参照のジャンプのようなswitchに相当する部分は無いの?
見た感じjmp直前で eaxを0クリアして関数の返す値を0にしてるので、
defaultに落ちてきた時のエラー処理に相当するコードかと思うのだが。
0905898NGNG
>>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
0906デフォルトの名無しさんNGNG
ああ、ウィンドウプロシージャなら確かにそういう処理するな。
0907デフォルトの名無しさんNGNG
車のECU作ってますが何か
0908デフォルトの名無しさんNGNG
>898
Hex.コードは数字の羅列であり、OPコードとOPランドとの境が不明であり、逆汗しても正しいとは限らないというか、ほぼ間違っている、何故ならこれは、その一命令が何バイト命令か不明であるからこうなる。
>裏を返せば、1命令が例えば2byte命令で統一されていたりすると逆汗結果が正しいということが分かる
>実際はそんな命令セットはほとんど皆無に近いから、逆汗コードが間違っているということが分かる。
>ちまちまダンプリストから手で逆汗するのが正しい手法。>DOSからdebugで入るならDコード
0909デフォルトの名無しさんNGNG
名前隠してもバレバレだぞ
>>607
0910デフォルトの名無しさんNGNG
というか
>908は、
どこから逆アセリストを取り始めたかにより正しいか間違ってるか決まってくる。
命令の先頭であるOPランドからリストを取り始めているなら正しいだろう。
しかし、コードの中には、命令でなく、パラメータや割り込み用ベクタアドレス(これらは命令でなくただの数字とアルファベット)であるものも含まれている。
その箇所を把握していないと正しい結果は出ない。
0911デフォルトの名無しさんNGNG
>>898 >>908-910
http://www.amazon.co.jp/exec/obidos/ASIN/4798008532/
0912デフォルトの名無しさんNGNG
そんなキモイ本紹介せんでくれ
0913デフォルトの名無しさんNGNG
912=見た目と思い込みで判断するアフォ
0914デフォルトの名無しさんNGNG
やねうらお先生も、こんな辺境まで来て宣伝しなくてはいけないぐらい生活に困ってるのかww
0915デフォルトの名無しさんNGNG
見た目がキモくても、それなりに内容があれば文句は言わんのだが・・・
0916デフォルトの名無しさんNGNG
要は中身
で、その中身がどうかというと…

↓
0917デフォルトの名無しさんNGNG
エロゲPGだな
0918デフォルトの名無しさんNGNG
ただの汚物
0919デフォルトの名無しさんNGNG
いま汗が最悪な出来だったから少しだけマシなやねうらお本がさも良書の如く言われてるだけー
0920デフォルトの名無しさんNGNG
ケース別 OllyDbg 解説書「こんなときにはこの機能が便利」
アセンブラの勉強目的だったら内容が薄すぎるので止めといたほうがいい
シェアウェア作者ならこの本に書かれてる程度の内容でクラックされるのは
恥ずかしいだろうから買っといた方がいいかも
# ただし対策側ノウハウはまるで書かれていないので覚悟してから
0921デフォルトの名無しさんNGNG
対策=法的手段に訴える
0922デフォルトの名無しさんNGNG
こっちはクラック技術なんかお呼びじゃねーんだよ
0923デフォルトの名無しさんNGNG
面白いね。ついでにGPLの日本における法的妥当性も争ってほしい。
0924デフォルトの名無しさんNGNG
禿しくスレ違いだな
0925デフォルトの名無しさんNGNG
CPUの創り方はイイ!
0926デフォルトの名無しさんNGNG
>>925
禿同
0927デフォルトの名無しさんNGNG
そうなの?こんど買ってみよう。。。
どこらへんがよかった?
0928デフォルトの名無しさんNGNG
レビュー見れ
http://www.amazon.co.jp/exec/obidos/ASIN/4839909865/
0929927NGNG
この本って、プログラマとしての技術にどれぐらい寄与すると思う?
今時の CPU とずいぶんかけ離れていたりしないのかな?
0930デフォルトの名無しさんNGNG
タイトルの通り「CPUの創り方」であって「CPUの使い方」ではない。

0931デフォルトの名無しさんNGNG
>>929
プログラマに直接的なプラス要因になる本じゃないと思うよ。
むしろ、サプリメント的に後々壁にぶつかった時に理解する下地を作れるって感じかな。
0932デフォルトの名無しさんNGNG
0933デフォルトの名無しさんNGNG
Winnyを解析したいのですが、よいリバースのツールありませんか?
0934デフォルトの名無しさんNGNG
>>933
喉の奥に指を突っ込め。
0935デフォルトの名無しさんNGNG
core吐きますな。
0936デフォルトの名無しさんNGNG
お前ら何をム板でコアな話してるんだよ!
0937デフォルトの名無しさんNGNG
今アセンブラのソースを見ているのですが
AND EBX,0F
こう書かれている箇所があります。
EBX+0x0Fだと思ったのですが0Fってのが理解できません。
普通の16進数のFではないようです。
これはどういう処理になるのでしょうか?
0938デフォルトの名無しさんNGNG
普通の16進数のF
0939デフォルトの名無しさんNGNG
C風に書けば、
EBX &= 0xf;
0940デフォルトの名無しさんNGNG
普通に下位4ビット取り出しだな
0941937NGNG
・・・すみません。単なるADDとANDの読み間違いでした。
こんなつまらないことで御手数かけて申し訳ないです。
0942デフォルトの名無しさんNGNG
プロテクトモードに移行するためにプロテクトモード用セグメントを設計しているのですが
いろいろ読んでみてもいまいちよく分かりません。

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

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

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

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

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

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

ページングoffならリニアアドレス=物理アドレス
0944デフォルトの名無しさんNGNG
>>942
ベースアドレスには物理アドレスをそのまま入れてやればいいですね。
その算出法というのが何を意図してるのかわからないのだが(リアルモードと混同してる?)、
ベースアドレスの値のままでいいでつ
0945デフォルトの名無しさんNGNG
>>942
http://www.intel.com/jp/developer/download/
0946デフォルトの名無しさんNGNG

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

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

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

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

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

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

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

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

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

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

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

でおながいします
0960デフォルトの名無しさんNGNG
キモい顔文字イラネ
0961デフォルトの名無しさんNGNG
     アセンブラとかいうジジイ言語     
http://pc5.2ch.net/test/read.cgi/tech/1101329594/
0962デフォルトの名無しさんNGNG
次スレ

アセンブラ… (´・∀・`)ヘー
http://pc5.2ch.net/test/read.cgi/tech/1101390110/
0963デフォルトの名無しさんNGNG
◎店名 女性専用出張風俗店「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円
0964デフォルトの名無しさんNGNG
>>957
それ書いたの俺だわ。
今読むと読点が変だ。恥ずかしい。

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

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

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

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

セグメントによる恩恵は、64KB越えのメモリアクセスは後からの話で、
まずは、メモリのどこにロードしても絶対アドレスへのジャンプを
書き換えなくてよい、というのが大きいです。
0968デフォルトの名無しさんNGNG
でも ヒ ュ ー ジ モ ー ド は 最 悪 に 遅 か っ た な
0969デフォルトの名無しさんNGNG
huge mode? なにそれ?
0970デフォルトの名無しさんNGNG
Cでセグメント境界を自動的に調節してくれるが、オーバーヘッドが大きい
諸刃の剣。
ってあれはhuge modelだな
0971デフォルトの名無しさんNGNG
age
0972デフォルトの名無しさんNGNG
>>966
重なっている部分は共有メモリとして使うつもりだったらしいよ
0973デフォルトの名無しさんNGNG
ume
0974デフォルトの名無しさんNGNG
もったいない
0975デフォルトの名無しさんNGNG
8086の段階でも、セグメントレジスタのビットシフト数を特殊レジスタに
設定しておくことにすれば、ソフトもハードもそう過大なオーバヘッドを招くことなく、
スケーラブルにできたんだよ。
それをしなかったのは、その時点で1MBは使い切れない程広大な
メモリ空間だと思われていたのが1つ。
さらに、次(々)世代ぐらいでは完全な新設計になるので未来のことを
考慮しておくのはナンセンスだと思われていたのがもう1つ。
ところが現実は・・・
0976デフォルトの名無しさんNGNG
いいじゃないか。386で対応できたんだから
0977デフォルトの名無しさんNGNG
>>975
8086なんて、プログラムが難しい以前に、調達が難しいだろ。
0978デフォルトの名無しさんNGNG
>>962
乙
0979デフォルトの名無しさんNGNG
>>975
集積度が足りなかったんだよ。それぐらい空気嫁。
それともお前は現在の基準で過去を裁く人間なのか?
0980デフォルトの名無しさんNGNG
>それともお前は現在の基準で過去を裁く人間なのか?
それ程深くもない知識で歴史を眺める以上、ある程度は避けられないですね。

というか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
0981デフォルトの名無しさんNGNG
>>980
ものすごい勢いで集積度は上がりましたが。
ムーアの法則って聞いたことない?
0982デフォルトの名無しさんNGNG
>>それ程深くもない知識で歴史を眺める以上、ある程度は避けられないですね。
ならだまってろ。だれにでも発言権があるわけではない
0983デフォルトの名無しさんNGNG
>>982
何様のつもりだこの池沼。仕切り屋ふぜいが。
0984デフォルトの名無しさんNGNG
俺様のつもりだ。わかったらとっとと退場しろ
0985デフォルトの名無しさんNGNG
嫌だね。仕切るなら金払え。
0986デフォルトの名無しさんNGNG
CPUアーキの後だしジャンケン論争って、8ビットのころからちっとも
変わってないな
0987デフォルトの名無しさんNGNG
>8086の段階でも、セグメントレジスタのビットシフト数を特殊レジスタに
>設定しておくことにすれば、ソフトもハードもそう過大なオーバヘッドを招くことなく、

実際これのオーバーヘッドってどれぐらい?
アイディアとしては悪くなさそうだけど。
0988デフォルトの名無しさんNGNG
次スレは?
0989デフォルトの名無しさんNGNG
もう有るよ
0990デフォルトの名無しさんNGNG
>>989
本当だサンクス
0991デフォルトの名無しさんNGNG
今のエンジンは100馬力あるのに、昔のエンジンは10馬力しかないからクソ、
10倍大きくしてでも100馬力にするべきだったといってるような議論だな。
0992デフォルトの名無しさんNGNG
池沼を追い込むなよ。刺されるぞ
0993デフォルトの名無しさんNGNG
>>991
どこが間違ってる?
0994内容が無いようNGNG
梅
0995デフォルトの名無しさんNGNG
ume
0996デフォルトの名無しさんNGNG
産め
0997デフォルトの名無しさんNGNG
呻
0998デフォルトの名無しさんNGNG
楳
0999デフォルトの名無しさんNGNG
(°Д°)ハァ?
1000デフォルトの名無しさんNGNG
ウメ
10011001Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。