アセンブラ… ( ゚д゚ ..
[2ch|▼Menu]
2:デフォルトの名無しさん
07/03/25 21:20:10
【過去ログ】
アセンブラ… (゜□゜) ↑アッー!↓ (Part10)
スレリンク(tech板)
アセンブラ… (0w0)ウェーイ (Part9)
スレリンク(tech板)
アセンブラ… (´・∀・`)ヘー (Part8)
スレリンク(tech板)
アセンブラ… (°Д°)ハァ? (Part7)
スレリンク(tech板)
アセンブラ… (;´Д`) ハァハァ (Part6)
スレリンク(tech板)
アセンブラ… (*´д`*)アハァ… (Part5)
スレリンク(tech板)
アセンブラ… (゚д゚)ウマー (Part4)
スレリンク(tech板)
アセンブラヽ(`Д´)ノモルァ (Part3)
URLリンク(pc2.2ch.net)
アセンブラヽ(`Д´)ノモルァ (Part2)
URLリンク(pc3.2ch.net)
アセンブラ… (・∀・)イイ! (Part1)
URLリンク(pc.2ch.net)

3:デフォルトの名無しさん
07/03/25 21:23:26
>>1
( ゚д゚)ウッウー

4:デフォルトの名無しさん
07/03/26 12:07:04
>>1
( ゚д゚)モルスァ

5:デフォルトの名無しさん
07/03/26 16:11:54
>>1
( ゚д゚)乙ッウー

6:デフォルトの名無しさん
07/03/26 16:37:26
>>1
( ゚д゚)ウェーゐ

7:デフォルトの名無しさん
07/03/27 23:34:34
nop

8:デフォルトの名無しさん
07/03/29 12:07:50
mulをimulで置き換えたいんだけど、
どんなときできるのか誰か教えて
ってか、この二つはいったい何が違うだけろ〜?

9:デフォルトの名無しさん
07/03/29 12:08:56
>>8
そもそも石はなんだ?

10:デフォルトの名無しさん
07/03/29 12:39:57
>>9
おっと失礼
x86系です^^

11:デフォルトの名無しさん
07/03/29 14:06:11
mulは無符号整数乗算
imulは負数も扱える
mulはimulと同じように扱えるわけではなくて、imulの方がアドレッシングモードが柔軟
ほかにもフラグレジスタの変化も微妙に違うので注意

てか、これをみるのが確実
URLリンク(download.intel.com)

12:8
07/03/29 15:23:28
おお! わざわざ資料まで!
ありがとうございました。

13:デフォルトの名無しさん
07/04/02 01:08:06
そんなことよりdivをmulに置き換えるアレ考えた奴凄くね?

14:デフォルトの名無しさん
07/04/02 01:14:23
( ゚д゚)ウッウー

15:デフォルトの名無しさん
07/04/02 01:17:04
>>9見て石ってなんだ?って思ったが、トランジスタの事か。

16:デフォルトの名無しさん
07/04/02 01:26:17
>>13
俺も昔それを思いついたことがある。たしかグレイスケールの計算だった。

G = (int)(r*0.30 + g*0.59 + b*0.11);

これだと浮動小数点計算が入ってもっさりしているので

G = (r*30 + g*59 + b*11) / 100;

このように整数演算に最適化。これでも自分的には除算が許せなかったので

G = (r*77 + g*151 + b*28) / 256;

と変形して除算を右シフトに置き換えてやった。
数年後、VCでこれとほぼ同様の最適化が自動的に施されるのを知って感心した。

17:デフォルトの名無しさん
07/04/02 01:34:39
アドレス生成インターロックとかペアリングとか考えなければ20clockやそこらで計算できるな。
うまくやれば。

G = (r*77 + g*151 + b*28) / 256;

18:デフォルトの名無しさん
07/04/02 02:18:27
今はMMXとか使ってさらに効率よく計算できるんだよな。MMXとFPUを同時に
駆動できないと困るときはSSE2でも同じようなことできるし。

#付け焼き刃スマン

19:デフォルトの名無しさん
07/04/02 03:25:36
MMXとFPUを同時に駆動すると重くてしょうがないから困るのであって、
同時に駆動せざるを得ないようなロジックは根本的に変えた方がいいと思う。

20:デフォルトの名無しさん
07/04/02 08:17:44
俺、アセンブラって実は簡単なんじゃないかと思うようになってきた

ステップ数は多いが頭の中でイメージングさえできれば難しいことないじゃないか

21:デフォルトの名無しさん
07/04/02 08:25:12
わざわざあげて独り言ですかw

アセンブラそのものは簡単というかシンプルでしょそりゃ。
自転車が自動車の運転より簡単なように。
でも自転車で100km走破するのは車でするより簡単じゃないよ。

22:デフォルトの名無しさん
07/04/02 10:33:28
簡単だけど、(心身両面の)持久力と全体を見通せる視野が必要な辺り、自転車とアセンブラは似ているかもしれない。

23:2
07/04/02 14:05:17
過去ログに訂正あり・・・スマソ

【過去ログ】
アセンブラ… ヽ(゚∀゚)ノフォーウ! (Part10)
スレリンク(tech板)
アセンブラ… (0w0)ウェーイ (Part9)
スレリンク(tech板)
アセンブラ… (´・∀・`)ヘー (Part8)
スレリンク(tech板)
アセンブラ… (°Д°)ハァ? (Part7)
スレリンク(tech板)
アセンブラ… (;´Д`) ハァハァ (Part6)
スレリンク(tech板)
アセンブラ… (*´д`*)アハァ… (Part5)
スレリンク(tech板)
アセンブラ… (゚д゚)ウマー (Part4)
スレリンク(tech板)
アセンブラヽ(`Д´)ノモルァ (Part3)
URLリンク(pc2.2ch.net)
アセンブラヽ(`Д´)ノモルァ (Part2)
URLリンク(pc3.2ch.net)
アセンブラ… (・∀・)イイ! (Part1)
URLリンク(pc.2ch.net)

24:デフォルトの名無しさん
07/04/02 18:00:59
>>16
まじで?
そこの式に出てくるような8ビット精度でやられるんだったらむしろ迷惑この上ないんだけど。

25:デフォルトの名無しさん
07/04/02 19:46:17
それはイメージ図みたいな物で、実際のコードではない。肝心なところを手元で再現したもの。
ニュアンスだけならこれで十分かと思ったのだが、誤解があったようで、すまんかった。
VCの最適化はたしかedx:eaxの幅64ビットを目一杯使うはずなんで、信頼してやってくれ。

26:デフォルトの名無しさん
07/04/02 19:48:31
あと一つ断っておくが、さすがのVCと云えども浮動小数点計算の整数化まではしないぞ。
俺が感心したのは整数除算の右シフト化の部分だ。レスの趣旨から読み取ってもらえるとは思うが。

27:デフォルトの名無しさん
07/04/04 11:49:33
しかし最近のアセンブリンガーは何やってるかわからなくなってきた。
最適化と称して俺のコードを台無しにする

28:デフォルトの名無しさん
07/04/04 13:00:16
アセンブラが難しいとされたのってさ、アドレッシングが貧弱で、
レジスタも少なく、使いづらいセグメントがあったりする石を使って、
限られたメモリ資源内でやらなきゃならなかったりしたからじゃないかな。

29:デフォルトの名無しさん
07/04/04 13:41:40
>>28
まあ確かに32個あると楽だけどな

30:デフォルトの名無しさん
07/04/04 13:53:45
つまり、アセンブルはパズルなんだよ。
コップ一杯の水を、容量の異なるコップを移し変えて400mlと600mlに分けるには
みたいな発想力がある程度もとめられる。

それができない人間が嫌うだけで


神という文字を入れたいのに記憶容量が足りない
おおっとネと申に分けられるじゃないか、これで後から合わせれば神になるぞ、
ということに気づく人間と、気づかない人間

ここに、アセンブラできる奴とできない奴が別れるのだ

31:デフォルトの名無しさん
07/04/04 14:05:41
アセンブラには、以前の日本が持っていた、
頭を働かせて出来る限り小さくまとめ、出来る限り高速に、出来る限り遠くへ、出来る限り豊かに
という、だいわ魂が宿っている、気がしてならない。

つまり、アセンブラを極めることは、かつての日本人が持っていた、
知恵というものを、取り戻すことであるといえるのではないか。

32:デフォルトの名無しさん
07/04/04 14:12:21
31の意見も同意できないことはないが
俺はアセンブラは小さいものが好きな日本人をあらわしてる
と思う
アメリカ人は大きいものが好きだからオブジェクト指向なんだろうと思う

33:デフォルトの名無しさん
07/04/04 15:18:23
折角の>31の高説も、「だいわ魂」で台無しだな。

34:デフォルトの名無しさん
07/04/04 18:23:11
gdbを使うと、なぜか実行開始時に必ず SIGTRAP で止まるんだけど、解決方法分かる人いる?


35:デフォルトの名無しさん
07/04/04 22:39:02
友人に、メモリにほとんどアクセスせずにハチャメチャな方法でやってる香具師が居るんだが。

使用レジスタ
eax,ebx,ecx,edx,edi,esi,ebp,es,fs,gs,mmx

36:デフォルトの名無しさん
07/04/04 22:43:57
> メモリにほとんどアクセスせずに

可能であれば、わざわざ糞遅いメモリなんぞにアクセスする必要はないだろ。

37:デフォルトの名無しさん
07/04/04 23:20:28
限度があるぞw
それにキャッシュを意識して慎重に組めばそんなに気にならないもんだど

38:デフォルトの名無しさん
07/04/04 23:21:49
書いた本人以外にメンテナンス困難なソースとか
見ると吐き気がしてくる。

39:デフォルトの名無しさん
07/04/04 23:39:15
>使用レジスタ
>eax,ebx,ecx,edx,edi,esi,ebp,es,fs,gs,mmx
それなんてicc?

40:デフォルトの名無しさん
07/04/04 23:50:11
なんつったってねicc

41:デフォルトの名無しさん
07/04/05 02:05:08
今、MMXを使って半透明合成を行う関数を書いています。
元画像1と元画像2を半透明合成して描画先に転送するという単純な仕様なのですが、
メモリアクセスがネックとなり、目標とする速度に達しませんでした。
そこで色々と実験してみたところ、うちのK6-2で、

 元画像1 + 元画像2 → 描画先

と処理するより、

 元画像2 → 描画先
 元画像1 + 描画先 → 描画先

としたほうが速くなることが分かりました。
単純に考えると、後者のほうがメモリアクセスも命令数も多く、遅くなるはずなので、
キャッシュが実行速度に大きく影響しているのだと思われます。

とは言うものの、私はアセンブリにはあまり詳しくなく、
どうすればキャッシュを効率よく利用できるのか分かりません。
特に、持っていないが動作環境に載っている底辺CPUでは実験もできず、
どんな方法でうまくキャッシュされるのか見当もつきません。

そこで質問なのですが、下記のソース
 URLリンク(sakuratan.ddo.jp)
のAB_START1におけるメモリアクセスを改善して、高速化することは可能でしょうか。
うまくキャッシュに乗れば、当然前者のほうが速いと思うのですが……。

42:デフォルトの名無しさん
07/04/06 00:09:50
まだソース見てないが、一度の計算ブロックで扱うメモリの量は64KBに抑えると
キャッシュに乗りやすかった気がする。

43:デフォルトの名無しさん
07/04/06 09:48:03
>>41
元画像1、元画像2、描画先の各先頭アドレスの下位14bitが
同じということはないよね?(800x600だからまずないだろうけど)
もし同じだと、K6-2 L1データキャッシュの2way set associativeの
制限に引っかかるかもしれないので。
それからK6-2といえば、Write AllocateのON/OFFを設定で変えられると思うけど、
ON/OFFどっちの設定での結果? 設定を変えると速度に変化はある?

それとここは間違いだよね
mov ebx, [src1] ;
mov ebx, [src2] ;

44:デフォルトの名無しさん
07/04/06 10:30:46
>>42
64kbですか……。
画像一枚あたり1.4MBもあるので、 収めるには分割すべきなんでしょうかね……。

>>43
下位14bitはまず一致しないはずです。
Write AllocateはONになっていたので、OFFに変えてみたところ、
 素直なブレンド : 85ms→35ms
 二段階のブレンド : 65ms→55ms
と、大幅に高速化しました。
これはキャッシュミスが頻発しているということなのでしょうか……?
あと、すみません、ご指摘のとおりsrc1のところはeaxのミスです。


45:デフォルトの名無しさん
07/04/06 10:37:40
Write Allocate は、ランダムライトでワリを喰う。

46:42
07/04/06 14:06:45
他のプログラムで使ってる分とか、スタックとか機械語の命令とか全部含めて64kbな。
だからデータ読み込み系で32kb占有できればいい方かと。
書き込みはほぼ間違いなくヒットするから気にしなくてよかったはず。

デュアルコアCPUだと1次キャッシュが二つ乗ってる上に2次キャッシュがあるからもう少しキャッシュヒットすると思うけど。


47:デフォルトの名無しさん
07/04/06 14:22:11
>>46
ちゃんと理詰めで算出しろよ
キャッシュ機構によってサイズが違うぞ

48:43
07/04/06 14:45:50
>>44
WA OFFによりメモリ読み込みが減って10msくらい速くなるというのはまだわかるけど、
素直なブレンドの方で50msも速くなるのは何でだろう?
何で素直なブレンドはWA ONで50msも遅くなるのか…。

WA ONの場合、元画像2(src2)または描画先(dest)のアドレスを8バイト〜数百バイトぐらい
ずらしてみても速度に変化はないですよね?

49:42
07/04/06 16:26:48
>>47
算出が面倒になった。

>>48
ワカラネ。50msの溝についてだれか分かる人解説キボン

50:デフォルトの名無しさん
07/04/06 17:59:31
素直なブレンドで描写先に転送するとき。
WA OFFだと単にデータをメモリへ転送するだけで済むところを、
WA ONの場合は、まずメモリからキャッシュにロードを行い
そのキャッシュに書き込んでからメモリに転送する。

つまり、無駄なロードが大量に生じて、キャッシュも無駄に使うから遅い。
これは最近のCPUでも同様に遅い。movntqを使うと何倍も速くなったりする。
参考:
スレリンク(tech板:138番)

WA ONの二段階のブレンドで、65msと若干速いのは
無駄なロードを先に済ませちまうからかな?

51:デフォルトの名無しさん
07/04/07 00:33:56
VISTAの64ビットでは__asmが使えないのは、本当なの?

52:デフォルトの名無しさん
07/04/07 01:18:18
Vistaは関係ないが、64bitでインライン使えないのは本当。

53:デフォルトの名無しさん
07/04/07 02:19:34
>>52
64ビット環境のAPIフックするには1万ドル払ってDetours Professional 2.1っていうのを購入する必要があるみたいだね。
Microsoftって将来的には個人開発者を低レベルプログラミングから追い出すつもりなのかな?

54:デフォルトの名無しさん
07/04/07 02:24:57
mov cr0,0
mov cr1,0
mov cr2,0
mov cr3,0


55:デフォルトの名無しさん
07/04/07 06:16:44
>>54
(゚Д゚)

56:デフォルトの名無しさん
07/04/07 07:46:55
ml64で我慢しとけ。

57:デフォルトの名無しさん
07/04/07 13:46:11
>>54
最もやってみたいことだが、決してやってはいけないことだな。

cr系に即値って入れれたっけ?

58:デフォルトの名無しさん
07/04/07 14:19:20
おまらに聞きたいんだが今からアセンブラを勉強するとしたら
どんな本が一番いいと思う?

59:デフォルトの名無しさん
07/04/07 14:28:09
いまどきのアセンブラの教科書

60:デフォルトの名無しさん
07/04/07 16:21:52
どんな本がとか言われてもな。
メーカが供給してるその石の仕様書があれば他には何にも要らないと思うが。

61:デフォルトの名無しさん
07/04/07 16:53:06
>>58
アセンブラは、たとえばC言語のANSI Cみたいな業界標準がないから
「これ1冊でアセンブラを網羅」なんて教科書はない。

メジャーなアセンブラ(MASMなど)なら例外的に参考書が発行されている
こともあるが、原則的には>>60の言うCPUの仕様書とアセンブラのマニュアル見るしかない。

62:デフォルトの名無しさん
07/04/07 18:19:04
>>59
どっちだよww

63:デフォルトの名無しさん
07/04/07 18:26:35
>>59
URLリンク(d.hatena.ne.jp)

64:41
07/04/08 00:06:43
みなさん、どうもありがとうございます。
やはり書き込み時のキャッシュ問題ですか……。
K6-2や初代CeleronにはmovntqなどのSSE命令は実装されていないので、
その辺りでは今の二段階処理が現実的なのかもしれませんね……。
CPU別の切り替えも視野に入れて検討してみます。

65:43
07/04/08 08:59:02
>>64
家にPentiumII266MHzがあるので計測してみました。
count=800*600*3/8
src1,src2,destは各800*600*3バイト
mov ebx, [src1] ; はeaxに修正しています。

PentiumII266MHz EDO-DRAM
 素直なブレンド : 36msくらい
 二段階のブレンド : 56〜57msくらい

P6はWrite AllocateをOFFにできないので、
Write Allocateが機能している状態での計測です。

66:43
07/04/08 09:24:41
>>64
movntqが利用できないのであれば
destをNOCACHE領域にしてしまうとか。
VirtualAlloc(,MEM_COMMIT,PAGE_READWRITE|PAGE_NOCACHE)
で領域確保して、書き込み処理が終わったら
VirtualProtect(,PAGE_READWRITE,)
でCACHE可に属性変更する等。

67:41
07/04/09 21:58:55
VirtualAllocでキャッシュの有無まで指定できるなんて、今まで知りませんでした。
K6-2で試してみたところ、WA ONでも、VirtualProtectを入れて40ms弱で素直なブレンドが実行できました。
これなら十分に使えそうです。
キャッシュをオフにしたことでPen4等では遅くなりましたが、
これは初回起動時にでも計測して保存しておけば切り分けられそうです。
どうもありがとうございます。

それにしても、Pen2ってそんなに速いんですね……。
Intel系のCPUは心配せずとも良いのかもしれません。

68:デフォルトの名無しさん
07/04/14 18:50:56
64bitOSではアセンブラ使えないのですか?

それともインラインが使えないだけ?

インラインどうしても使いたい場合の代替ってありますか。

69:デフォルトの名無しさん
07/04/14 18:54:00
島根県のみなさん、パチンコをするなら、

  優良パチンコ店 エイトワン

に行こう! 遠隔(※1)を絶対やってないのは「エイトワン」だけ!
違法ロム(※2)を絶対使ってないのも「エイトワン」だけ!
エイトワンでは、遠隔等が可能な設備は入れていません。 ロムも、警察がチェックしやすいようにしています。

詳しい方はご存知の通り、どんなにパチンコの遊戯人口が変動しても、その市場規模は変わりません(※3)。
要するに、客が減っても、残った客から絞り盗る量を増やして調整しているのです。
しかし、何故それが可能なのか?…ご理解頂けると思いますが、9割以上の店が確実に遠隔等を行ってます。
1万店以上の中でも、遠隔も違法ロムも確実にやってないのは「エイトワン」1店だけです!

※1…遠隔とは
 「お、あの客は新顔だな。勝たせて味を占めさせるか。遠隔操作で設定変更しよ」
 「客が減ってきたな。ま、設定を絞めて(1人あたりから)搾る量を増やせばいいか」
 「あのオヤジ負け続けてるからそろそろ辞めるかもな。今日は勝たせてやるか」

※2…違法ロムとは
 「うちのアタリ確率は、もちろん他と同じ『○○○分の1』ですよ!(ロムいじってるからウソだけど)」

※3       市場規模   遊戯人口
 平成06年 30兆4,780億円 2,930万人
 平成08年 30兆0,630億円 2,760万人
 平成10年 28兆0,570億円 1,980万人
 平成12年 28兆6,970億円 2,020万人
 平成14年 29兆2,250億円 2,170万人
 平成16年 29兆4,860億円 1,790万人

70:デフォルトの名無しさん
07/04/14 18:54:40
モジュールとして、リンクするくらいしかない場合
それって速度の面でどうなの。



71:デフォルトの名無しさん
07/04/14 19:06:07
>>68
よほど特殊なCPUで無い限り使える。
インライン?というのはCのことか何を言いたいのか不明。

>>70
中身というかその処理内容次第。

72:デフォルトの名無しさん
07/04/14 19:32:53
>68
インライン?
このスレは、インラインアセンブラの「中のコード」については話せると思うが
「インラインアセンブラを使うには」という内容ならその処理系のスレで訊きな

73:デフォルトの名無しさん
07/04/14 19:44:26
インラインアセンブラ使うとコンバイラがバグるよ

74:デフォルトの名無しさん
07/04/14 20:13:34
CPUとかOSとかコンバイラ(笑)の具体的情報もないのに

>64bitOSではアセンブラ使えないのですか?それともインラインが使えないだけ?
>インラインアセンブラ使うとコンバイラがバグるよ

って会話が成立する摩訶不思議なスレはここですか^^

75:デフォルトの名無しさん
07/04/14 20:42:08
アセンブリ言語で書く必要があるならインライン・アセンブラなんて中途半端なことせずにアセンブラ使え。
インライン・アセンブラを使わないと性能が出ないような処理系なら窓から投げ捨てろ。

76:デフォルトの名無しさん
07/04/14 20:53:36
エー(´д`)

77:デフォルトの名無しさん
07/04/14 21:07:14
押す!

78:デフォルトの名無しさん
07/04/14 21:39:11
>>75
それ、激しくマンドクセ

79:デフォルトの名無しさん
07/04/14 22:13:22
だがソース中にインラインアセンブラが散在していると
環境が変わったとき、もっとマンドクサイことに…

80:デフォルトの名無しさん
07/04/14 22:20:32
その辺は設計次第でどうにかなる
大体速度要求されるような部分って限られてるし

81:デフォルトの名無しさん
07/04/14 23:30:39
少し前に、64bitだとCであれJAVAであれ、「インラインアセンブラは絶対通らない」と言われていた。

82:デフォルトの名無しさん
07/04/14 23:53:16
どこの世界の話ですか?
Windows 方面かな?

83:デフォルトの名無しさん
07/04/15 02:22:23
ヌコモフモフシタイオ

84:デフォルトの名無しさん
07/04/15 02:42:32
M$が64bit版VC++でインラインアセンブラを止めたことに尾ヒレがついてそういう話になったんだろうが・・・

しかしまあ、64bitなCPUでもインラインアセンブラ使わにゃならんと言うのも、それはそれで哀しいものがあるな。

85:デフォルトの名無しさん
07/04/15 02:50:57
64bitインラインアセンブラについて
URLリンク(www.codeproject.com)

代わりの構文が用意されているみたい

86:デフォルトの名無しさん
07/04/15 10:48:47
シェーダもそうだ
Direct3D version10 では、アセンブリシェーダが一切許容されなくなった。
HLSLやGLSLよりも簡単かつ速いのに。

固定機能の廃止でシェーダで代用しろとか、
64bit用VCでアセンブラ使えないとか、マイクロソフトはどうなっているんだ。

そういうことをするから、「絶対必要なのに誰も知らないアセンブラ」になっていくんだ。
ウィルススキャンは、言ってみればリバースエンジニアリングだが、
リバースエンジニアリングにはアセンブラの知識が必要だ。

それでなくてもハード屋と密接に絡むソフト屋はアセンブラの知識が必要だ。


それなのにこれ以上マイナー言語にしてどうしたいと言うのか

87:デフォルトの名無しさん
07/04/15 11:58:49
>>86
>>56


88:デフォルトの名無しさん
07/04/15 12:37:52
64bitだとAPIフックもできないの?


89:デフォルトの名無しさん
07/04/15 22:46:32
>>88
できない ×
やらせない ○

90:デフォルトの名無しさん
07/04/16 10:28:26
>>85
紛らわしい事を言うな
代わりの構文でインラインアセンブラが利用可能なのかと思ったじゃないか

91:デフォルトの名無しさん
07/04/16 12:02:23
>代わりの構文でインラインアセンブラが利用可能なのかと思ったじゃないか
可能でしょ。

92:デフォルトの名無しさん
07/04/16 20:54:55
>>90の思考、__asm と 組み込み関数は違う
>>91の思考、__asm と 組み込み関数は同じ

93:デフォルトの名無しさん
07/04/16 22:00:57
> >>91の思考、__asm と 組み込み関数は同じ

このスレ的にはありえない思考回路だな...。

94:デフォルトの名無しさん
07/04/21 01:00:05
すみませんが、.NETのアプリをnasmとかで作れます??

95:デフォルトの名無しさん
07/04/21 01:08:21
無理にきまってんだろ

96:デフォルトの名無しさん
07/04/21 01:10:52
>>94
つ ilasm

97:デフォルトの名無しさん
07/04/21 01:42:04
>>94
dbで直接書けばOK

98:デフォルトの名無しさん
07/04/21 01:49:51
>>94
>nasmとか
といわれても。
アセンブリ言語で書けるか、ということならできる。

99:デフォルトの名無しさん
07/04/21 01:58:57
>>97
バイナリエディタのほうが絶対いいw

100:デフォルトの名無しさん
07/04/21 02:34:42
相対アドレスを計算して入力するのが面倒だったのでmasm+exe2binでz80のプログラムを作ったことがあるな

101:デフォルトの名無しさん
07/04/22 12:55:12
質問でございます

いまいちよくつかめないんですが、メモリを確保する場合(文字列でも何でもいいです)、通常ヒープに確保され、
ローカル変数だけスタック、という認識であっていますか?

ちょっとスレ違いかもしれないんですが、このスレのエロい方々が一番詳しそうなので。

102:デフォルトの名無しさん
07/04/22 12:58:06
ものによる。

103:デフォルトの名無しさん
07/04/22 13:01:10
おーっそこをなんとかお手数ですがkwskお願いします><

104:デフォルトの名無しさん
07/04/22 13:01:22
ものによるけど、普通の PC で普通の言語使ってるならそうな事が多いんでない?

105:デフォルトの名無しさん
07/04/22 13:22:10
>>101
*まず言語と質問の意図を教えれ*

このスレどおりアセンブラなら、何をどこにとろうが自由だ。
Cのグローバル変数に相当するものならヒープにとるだろうし
一時的な文字列領域ならスタックにとることもある。
まさに>>102の言うとおりだ。

106:デフォルトの名無しさん
07/04/22 14:08:29
アッー!!そうか、アセンブラだとpushすればスタックだし、heapallocをcallすればヒープか・・・
処理系はC++なんですが、コンパイラに依存ってことですね。


107:デフォルトの名無しさん
07/04/22 14:14:22
アセンブラから見れば、ヒープもスタックも、グローバル変数も、みんなメモリ

メモリの確保は静的にする場合と動的にする場合とがあるけど
動的に確保する場合の概念としてスタックだのヒープだの発明したわけだ。
その2つしかないわけじゃなく、オーディオのフィルタ処理なんかはリング遅延器とか色々あるわけ

108:デフォルトの名無しさん
07/04/22 15:05:10
なるほどねー。ちょっと微妙に納得いかないのは、
スタックはなぜEXEイメージのヘッダに最大サイズが定義されて、それ以上は制限されるのに
ヒープはメモリあるだけ確保できる。
これはデータ構造の用途を分けるためですか?

109:デフォルトの名無しさん
07/04/22 15:16:00
それはwindowsの話をしてるんだよね?
多くの環境で、データ・ヒープは上(小さい方)から、スタックは下(大きい方から)取られる。
これなら、どっちかが制限されるのはおかしいという事だろ?

で、x86は仮想記憶をサポートしてるから、SSの領域も
上にどんどん確保してゆく事も理屈の上では可能。

でも、 windowsはスレッドを実装してるから、スタック領域が複数必要になる。
だから、スタックは最大サイズを決めておかないと、困った事になるわけだ

110:・∀・)っ-○◎●
07/04/22 15:16:38
ヒープにも限界はあるよ。
スタックは連続したメモリを必要とする。
不連続なデータでいいなら、確保できる容量は多くなる罠。

最近のOSは仮想メモリ機構があるから、実メモリ容量以上、
スワップファイル分だけ確保できたりするんだが。。。

111:デフォルトの名無しさん
07/04/22 15:39:47
>>108
Windowsの話な。
アレは仮想メモリを使ってるから、プロセス毎(大雑把にいえばEXE毎)に
2GBのメモリ領域を割り当てられるわけだ。32bit Windowsのユーザー領域ね。
実際にメモリを2GB積んでるかどうかは関係ないぞ。
とにかく、EXE毎に2GBのメモリを積んでると思いねえ。

で、スタックというのは(再帰呼び出しでもしない限り)何MBも食うことはあまりない。
一方、ヒープは画像や映像などメモリバカ食いすることがあるので、2GBのうち
相当部分をヒープで管理しなくてはならない。

原始的なOSはスタックを制御してないので、
スタックを超えてもぐんぐんヒープ領域を侵していく。
その結果、理由の分からないバグに遭遇してしまう。

Windowsは、スタックを使い切ったらエラーを出す仕組みになってるので
EXEにその領域を書き込んでる。

で、なぜヒープじゃなくてスタックの方を制御するのかというと、
スタックは一回の取得−開放が直前のスタックと連続してるので管理しやすい。
ヒープは、気まぐれに領域をとり、気まぐれに開放されるので穴ぼこだらけになる。
と、スタックの方が管理しやすいからだと思いますよ。

112:デフォルトの名無しさん
07/04/22 17:09:09
>>109-111
うおーありがとう><
そうです、Windowsしか知らないので><

スタックはOS管理⇒プロセスを超えるスタックオーバーフロー検出のため
ヒープは制限がない(仮想メモリサイズ:x86なら2GB)⇒メモリに対し断片的にアロケートするため
(逆にスタックはその性質上連続したメモリ領域が必要なので、最初に固定サイズの連続領域を
確保するため、そのアロケートサイズをEXEヘッダに持っていなければいけないので制限される)

これが全ての理由ではないかもしれませんが、
上述の理由等でスタックとヒープのそれぞれの役割が決まっているわけですね。
そしてその決まりは処理系によって異なり、アセンブラの場合はむしろ人によって使い方が
異なる場合がある、という感じでしょうか。
かなり勉強になります!!

113:デフォルトの名無しさん
07/04/22 17:32:21
試したことないからわからんが、もしかしたら64bitのVCでもインラインマクロアセンブラ(非MASM)使えるんじゃね?
ちなみに↓はx86用。

// インラインマクロアセンブラ?
// WINAPI*は環境に合わせて書き換えてね
typedef void (WINAPI* FUNCTION)();
#define ASM_CALL(function) {FUNCTION f=(FUNCTION)(void*)function;f();}

// 必要なのあれば追加
#define RET 0xc3
#define MOV_EAX(a) (char)0xb8,(char)(a&0xff),(char)((a>>8)&0xff),(char)((a>>16)&0xff),(char)((a>>24)&0xff)

// eaxに16入れるだけ
unsigned char function[] = {
MOV_EAX(16),
RET
};

// 呼び出してみる
ASM_CALL(function);


まぁ、ネタだけどな・・・
だれかx64用の命令セット定義してちょ ヽ(;´ー`)ノ


114:デフォルトの名無しさん
07/04/22 17:34:11
まあC++Builderが出来るようになるだろ
ダメならDelphi for win64で書いて リンクするさ

115:デフォルトの名無しさん
07/04/22 17:49:52
>>112
制限しなければいけないもっとも重要な理由はスレッドのサポートにあると思うよ。
スレッド間でスタック領域も共用しなければいけないからね

116:デフォルトの名無しさん
07/04/22 17:57:39
>>113
( ゚д゚)ノ ドゾー
URLリンク(homepage1.nifty.com)

117:デフォルトの名無しさん
07/04/23 00:58:01
emit でただバイナリねじこんでるのと同じでは・・・
tc1の時代に逆戻り?

118:デフォルトの名無しさん
07/04/23 09:56:42
>>113>>116
データ実行で吹っ飛ばないのですか?

119:デフォルトの名無しさん
07/04/23 10:26:10
DSやSSにあるコード実行が禁止出来てるなら バッファオーバーランの脆弱性などだいぶ緩和できてたろう

120:デフォルトの名無しさん
07/04/23 10:54:44
最近のCPUだとEXビットとか聞いたもので、どうなんでしょか

121:デフォルトの名無しさん
07/04/23 11:12:32
linuxの場合、mprotectで実行属性を与えるようになってる。
Windowsの場合も、VirtualAllocやVirtualProtectで実行権限与えればOKよ。

122:デフォルトの名無しさん
07/04/23 11:12:34
windowsは16bitの昔からダブルポインタを解決するためにthunkとよばれる
動的に小さいコードを作る技術を使ってきたからな。
当時はDLLでDSを渡す為に使われた。
32bitになっても、DelphiのVCLなんかでは WinProcからObjectとメソッドアドレスの2つを
作りだすために使われている。

123:デフォルトの名無しさん
07/04/23 11:16:57
実行時にコード変更(生成)するのってマルチスレッドとかとの相性どうなんだろう

124:デフォルトの名無しさん
07/04/23 11:22:30
>>123
そのコード空間がスレッドごとに独立していれば大して問題にならない。

125:デフォルトの名無しさん
07/04/23 11:30:39
スレッドセーフなコードを動的に生成するのか
難度高くね?

126:デフォルトの名無しさん
07/04/23 11:33:17
Windowsの場合、実行空間からスレッドごとに独立した領域へって、
単純にプログラムカウンタでジャンプできるんだ…

>>116はちゃんと見てないけど、実行属性やスレッド独立の
問題はケアしてるのかね


127:デフォルトの名無しさん
07/04/23 11:35:22
ダブルポインタを解決するだけの短いコードって事は、単に
即値ロードしてジャンプするだけ
リソースにアクセスするわけじゃないからさ

128:デフォルトの名無しさん
07/04/23 11:36:04
>>125
それはまた別問題な気がする。グローバル変数使わないで、
コードを生成する領域をTLSにしちゃえば干渉しないだろうし。

そもそも排他問題とかからむコードを動的に生成するシチュエ
ーションってあまり多くないんじゃ

129:デフォルトの名無しさん
07/04/23 11:40:01
>>127
それって32ビット以上のWindowsでは関係ないんだよね?

マルチスレッドだと如何に簡単な処理でも(というか簡単な
処理だからこそ)、何も考えないでコード生成したらまずい
だろうし。

130:デフォルトの名無しさん
07/04/23 11:44:30
>>129 自分が想像で勝手に怖がるのはいいが、それを一般論に押し広げないでくれよ。
マルチスレッドで注意しなければいけないのはどういう操作くらいかは理解して書いてるのか?



131:デフォルトの名無しさん
07/04/23 11:52:07
>マルチスレッドで注意しなければいけないのはどういう操作
スレッド間で共有されている部分を排他処理しないで変更すること

132:デフォルトの名無しさん
07/04/23 11:54:25
あと、共有部分の読み込みに関しては場合による

133:デフォルトの名無しさん
07/04/23 11:56:01
>>131
そう、一つは正解。

もう一つは、複数のリソースを参照するコードが別のスレッドで変更されてる場合、
たとえば、ダブルワードカウンタの参照のような問題点。

 ダブルポインタを得るだけのコードは、作成されなければ実行されず、
 作成された後は変更されないのだから、注意する対象に入るかどうかも判るだろ。


134:デフォルトの名無しさん
07/04/23 12:00:59
>>129
あと、32bit以上になっても、結局32⇔64の変換でthunkは使われるように思うな
理由は、テーブル変換のような仕組みはそれこそマルチスレッド対応に苦労するだろうから

135:デフォルトの名無しさん
07/04/23 12:15:01
>>133
>作成された後は変更されない
作成された後は変更されないようなコードなのに、リンク時や
そうでなくともEXEロード時に解決してしまわないのはなぜでしょう?

136:デフォルトの名無しさん
07/04/23 12:18:02

Make何とかInstance  ってのを一つも使った事が無いのか?

137:デフォルトの名無しさん
07/04/23 13:06:15
>>135
その時に解決出来ないからだろ
DLLの場合は、コールバック時のセグメントはDLL側じゃ判らない。
VCLの場合は、コンポーネントをヒープに確保した後でなければ メソッドポインタは確定しない

138:デフォルトの名無しさん
07/04/28 00:00:03
x86で論理和を行う時、被演算数の一方が0以外なら必ずゼロフラグは0にセットされて
被演算数の一方が0の時に論理積を行えば必ずゼロフラグは1にセットされる、という理解であってますか?

139:デフォルトの名無しさん
07/04/28 01:01:07
わざわざ変に難しく言うな!
そんな言い方するからわかんなくなったじゃないか!!
俺にわかるのは、0とANDすりゃZ=1、0以外とORすりゃZ=0って事くらいなんだからよ!!!

140:デフォルトの名無しさん
07/04/28 01:23:34
>>138
釣りをしたいなら別に止めないけど...。

一応マジレスしとくと 論理和、論理積にかかわらず

・「結果」が 0 なら ZF = 1, 0 以外なら ZF = 0

と理解しておかないと、Add/Sub なんかの時に困っちゃうぞ。(w

141:138
07/04/28 01:34:15
>>139,140
すいません、釣りじゃないです
習い立てでどう表現していいかよく分からなかったので…ありがとうございました

142:デフォルトの名無しさん
07/04/28 04:35:02
アセンブラを勉強しようと思うのですがお勧めの書籍などはありますか?
当方Cの基本、Javaで簡単なプログラムが書ける程度の知識を持っております。

何かありましたら紹介よろしくお願いします。

143:デフォルトの名無しさん
07/05/13 17:20:17
>>142
x86ならインテルのマニュアルでも読めばいいよ

144:デフォルトの名無しさん
07/05/13 17:50:57
>>143
いんてるのまにゅあるは既にアセンブリ言語の基礎を会得しているプロの(職業の)開発者向けだろ。
しかもプロセッサの仕様とかデータシートとかエラッタ情報とか、アセンブラの本質とは関係ないし。

俺は独学で習得したが、参考書とかはほとんど読まなかったな。ソース読んでるうちに感覚で覚えてしまった。
他の人はどうやって習得したんだろう?

145:デフォルトの名無しさん
07/05/13 17:53:42
CQ出版の古書が参考になる。
ただ、今現在でアセンブラ使えてもほとんどメリットなし。

146:デフォルトの名無しさん
07/05/13 18:29:33
リバースエンジニアリングや、最適化をするにはアセンブラを使えないと話にならない。
というか、コンピュータを理解するにはアセンブラでないと話にならない。

コンパイラに頼りっきりのアホが何作れるかというと、たいした物は作れない。

147:デフォルトの名無しさん
07/05/13 18:31:43
そういう分野って違法とか衰退してるじゃない。
仕様通り作ってればいいんだよ。

148:デフォルトの名無しさん
07/05/13 18:38:44


ウィルスであるかどうかの解析は、リバースエンジニアリングが出来ないと話にならない。


そして、アンチウィルス業界はいつも人手不足。
そして需要が途切れることはない。

149:デフォルトの名無しさん
07/05/13 18:40:48
1人か2人だろ。

150:デフォルトの名無しさん
07/05/13 18:43:49
まあ、アセンブラが使えるだけじゃ話にならんがな。

151:デフォルトの名無しさん
07/05/13 18:46:46
アンチウィルス業界←笑いどころ

152:デフォルトの名無しさん
07/05/13 18:48:19
論破されて泣き出したぞw

153:デフォルトの名無しさん
07/05/13 18:49:30
コンパイラに頼りっきりのアホと言われて傷ついたらしい
どうせロクなもん作れねえんだから黙ってりゃいいのに

154:デフォルトの名無しさん
07/05/13 18:54:34
まあCPUのアーキテクチャが大幅に変わることはないんだろうけどCPU依存の
コードってのは関心しないなー。

コンパイラで書くか、カーネルから全部自分で書くか。

155:デフォルトの名無しさん
07/05/13 19:00:19
無理だべ
Run Anywhereみてえなラクは

WindowsにしろLinuxにしろ、モロ依存しておる

156:デフォルトの名無しさん
07/05/13 19:07:27
素直にコンパイラで書け。

157:デフォルトの名無しさん
07/05/13 20:33:40
まあ、必要ない人にはいらないよな
その辺に技術者としての境界が存在してきて
棲み分けできていいけど

158:デフォルトの名無しさん
07/05/13 21:06:27
アセンブラか……
フェードイン、フェードアウト効果をMMX命令で実装するために
本に載ってたサンプルを意味も分からずにパクッた思い出くらいしかない

159:デフォルトの名無しさん
07/05/13 21:53:27
このスレも役目は終わってるよね

160:デフォルトの名無しさん
07/05/13 21:57:03
アプリ開発にはいらないだろうな
ミドル以下なら知ってると知らないで差がでるけど

161:デフォルトの名無しさん
07/05/13 22:13:46
>>160
差が出るどころか、話にならないんじゃね?
そういう分野に携わるなら低水準の基礎知識くらい身につけておけと

162:デフォルトの名無しさん
07/05/13 22:43:47
コンピュータのごく表層しか知らない奴は>>159みたいなことをさらっといってのけるから怖い

163:デフォルトの名無しさん
07/05/13 22:49:52
ワンチップとかだとアセンブラの知識は必須だね。
ついでに回路も読めないとやばいが。

164:デフォルトの名無しさん
07/05/14 00:36:50
だいたいさ
ゲームのシェーダは高級言語で書けるようになったが、
CPUは依然としてアセンブラしか受け付けない。

ゲームではまだまだ必須。

165:デフォルトの名無しさん
07/05/14 02:29:15
それはファーム以下の動作部分を書く場合だろ。
通常のアプリケーションにアセンブラなんて必要ない、非生産的。

166:デフォルトの名無しさん
07/05/14 02:41:41
なんでもかんでも汗んぶらで書くのは愚の骨頂だが
アーキについて知ってるかどうかは重要。

167:デフォルトの名無しさん
07/05/14 02:50:19
そりゃそうだな。んでもインテルはほとんど変わってないし。
肝心のタスク制御(ディスパッチャ)の部分はユーザーが書けないし。
昔の世代は自分で書けるチャンスがあったけど今の世代はほぼ絶望的。
忘れたほうがいい。

168:デフォルトの名無しさん
07/05/14 08:14:11
んなこたーない

169:デフォルトの名無しさん
07/05/14 21:35:56
世の中には16進数でプログラム書ける奴もいるんだな
この前リアルで見たんだが人間とは思えん

170:デフォルトの名無しさん
07/05/14 21:43:56
いるだろwwww常識的に考えて。

171:デフォルトの名無しさん
07/05/14 22:02:02
車なんかアセンブラでないといかんのだぜ

もはやキャブレターの時代じゃねえんだ

172:デフォルトの名無しさん
07/05/15 05:09:10
>169
そりゃ、アセンブリ言語が出来る前は皆そうしてたワケだからな。

つーか、アセンブリ言語自体、最初は
機械語を解りやすく記述する為の単なる表記法だったかと。

『アセンブリ言語を機械語に翻訳する作業も
  コンピュータに任せればいいじゃないか!』

という発想に最初に行き着いたヤツは凄いと思う

173:デフォルトの名無しさん
07/05/15 05:22:10
アセンブリ言語が出来た当初はハンドアセンブルだからね。
凄い時代だ。

174:デフォルトの名無しさん
07/05/15 05:39:56
2chのレスもコンピュータに任せても充分やってけると思う

175:デフォルトの名無しさん
07/05/15 07:08:38
今思うとプログラムを書いてというより
直接動かしてたって方がしっくりくるな

176:デフォルトの名無しさん
07/05/15 08:28:24
直接はあんまりやりたくないなぁ。
コーディングシートにアセンブリ言語で書き込んでから機械語に手動翻訳ならできるけど。

177:デフォルトの名無しさん
07/05/15 08:31:37
ああ昔の人はいいなあ
そんな話聞いてるとめちゃくちゃ興奮するぜ

178:デフォルトの名無しさん
07/05/15 08:42:20
今でもやろうと思えばマシン語直書きのプログラムは作れるぜ!

179:デフォルトの名無しさん
07/05/15 10:57:55
EX-80だかのエミュレータアプリがあったよね。あれでぽちぽちやるのもいいんでない?

180:デフォルトの名無しさん
07/05/15 21:21:02
あの当時は、できることも少なかったので
何とか対応表を見て、手でマシン語にすることもできた。

命令機能なんざ四則演算しかなかったし

181:デフォルトの名無しさん
07/05/16 00:02:37
あの当時に四則演算 (ようは、乗除算) なんかできる奴なんてあったか?

まあ、ミニコンとかでμプログラム書けるマシンなら何でもありだが...。

182:デフォルトの名無しさん
07/05/16 00:20:36
AND OR XOR NOT

183:デフォルトの名無しさん
07/05/19 17:11:02
レイテンシとスループットの違いって何なのですか?

URLリンク(homepage1.nifty.com)には
> スループットとは命令が実行されてから次の命令が実行出来るまでのclk数
> レイテンシとは命令が実行されてからその結果を利用できるようになるまでのclk数のことです.
とあるのですが、分かったような分からないような感じでいまいち納得がいきません。

例えば mul eax, ecx 命令なら
実行ユニットで乗算そのものを実行するクロック数と
その結果がeaxに入るクロック数は幾分違うと言うことなのでしょうか?

基本的なことなのですが、どうかよろしくお願いします。

184:デフォルトの名無しさん
07/05/19 18:01:12
スループットとは、全体的な出力性能
レイテンシとは、そのデバイス内部の処理にかかる待ち時間

185:デフォルトの名無しさん
07/05/19 18:24:27
1つの入力に対して何時如何なるどんな時でも1クロックで終わるならいいが、
ある処理には2サイクル3サイクル、もしくはそれ以上かかることもあるだろう
その、モタモタしてる時間をレイテンシと呼ぶんじゃないの。

スループットは、それら含めて「処理が完了した後」の性能を示すものだろ。

乗算完了までにかかるクロックが1なら、レイテンシは無し。
1クロックより短い単位で処理は終われないので、基準が1だから
1クロックよりも多くかかるなら、そのかかった分がレイテンシ。

レイテンシ含めて処理が終わった後に見て、
この操作を終えるまでにどれくらいかかるかを指すのがスループット。

186:デフォルトの名無しさん
07/05/19 18:27:29
何言ってるのかわからねぇw
ガンダムでも飛び立ちそうだ

187:デフォルトの名無しさん
07/05/19 19:15:04
XXX eax, ebx

が4クロックかかるならレイテンシは3。

XXX の処理後、eax が使えるようになるまでの時間がスループット。

と言ってるように見える。

188:デフォルトの名無しさん
07/05/19 20:20:27
ふつー、レイテンシよりスループットの方が小さくない?

189:デフォルトの名無しさん
07/05/19 20:27:43
>>183
レイテンシー: latency
latent (潜伏期間) の名詞形の意味からわかるように、病気にかかってから
症状があらわれるまでの期間。

スループット: throughput
一定時間に処理される情報量

要するに、レイテンシーは命令を実行し始めてから結果が出るまでの時間。

スループットは一定時間内に処理される量。

一つのコアが逐次処理するならレイテンシーとスループットは相似関係に
あるけど、デュアルコアにするとレイテンシーが変わらなくてもスループッ
トは (理想的には) 2倍になる。

もしくは、「このプロセサはパイプラインが深いからレイテンシーは大きい
けどスループットは高い」とか言ったりする。

190:デフォルトの名無しさん
07/05/19 22:24:34
スループットは成果だからな
アウトプットと同じような意味。


慣れた人が3秒で作業を終わらして1コ作り上げたら レイテンシ3秒、スループット1。
不慣れな人が50秒で作業を終わらして1コ作り上げたらレイテンシ50秒、スループット1。

単一のシチュで見ると、スループットが変わらないようだが
これを連続で行うと差がどーんと出てくる。
スループットとは、成果と最初にも言ったように 成果を比較できる「条件」が不可欠。

1時間後なら、スループットにも差が出てくると言うこと。

191:デフォルトの名無しさん
07/05/19 23:16:49
パイプライン処理って知ってる?
工場で物作るときに、一つのラインを複数の人間で作業するアレ。

レイテンシって言うのは、パイプラインの先頭からパイプラインの終了まででかかる時間。

スループットは単位時間につき1。
(CPU の場合は単位時間は概ねクロック)
ただし、パイプラインは止まることがあるので必ずしもスループット1は達成できない。

複数のパイプラインを用意すれば、スループットは1を超える。

192:デフォルトの名無しさん
07/05/19 23:19:24
アセンブリに興味もった俺にはこのスレはめちゃ助かる
アドレナリンが湧いてくるな・・・

193:デフォルトの名無しさん
07/05/19 23:52:24
>>190
おいおい、人の説明無視していいかげんなこと書くなよ。

スループットは「単位時間あたりの成果」だよ。

あんたの例だと、慣れた人のスループットは 1/3 [個/秒] で、
不慣れな人のスループットは 1/50 [個/秒] だよ。

これは、連続でやっても同じ。

そこで作業を 50個の工程に分けて、各々の工程を 50人の不慣れな奴に任せると、
1つの工程には1秒ずつかかるから、やっぱり作業を終わるには 50秒かかる。
(つまり、レイテンシーは 50秒のまま)

でも、最初の人は1秒後には2個目の作業にかかれる。同じように 50人が1秒に
1つ作業ができるので、連続して作業していると1秒に1個物ができる。

つまり、レイテンシーは 50秒のままでスループットは 1 [個/秒] に改善する。

これが、T型フォードから伝わるパイプライン処理だ。(w

194:デフォルトの名無しさん
07/05/20 00:15:54
WindowsでGAS使いたいけど、どうすればいいのでしょう?
asm文書いてコンパイルしてもエラーになってしまいます。

195:デフォルトの名無しさん
07/05/20 00:23:55
gas構文キライ

196:デフォルトの名無しさん
07/05/20 00:46:18
お前の好き嫌いはどうでもいい


次ページ
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

4994日前に更新/204 KB
担当:undef