アセンブラ… (0w0)ウェーイ

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

【前スレ】
アセンブラ… (´・∀・`)ヘー
http://pc8.2ch.net/test/read.cgi/tech/1101390110
2デフォルトの名無しさん:2005/05/04(水) 15:33:40
【過去ログ】
アセンブラ… (°Д°)ハァ?
http://pc5.2ch.net/test/read.cgi/tech/1093519463/
アセンブラ… (゚д゚)ウマー
http://pc2.2ch.net/test/read.cgi/tech/1060928704/
アセンブラヽ(`Д´)ノモルァ
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/
アセンブラ… (;´Д`) ハァハァ
http://pc5.2ch.net/test/read.cgi/tech/1087897801/
3デフォルトの名無しさん:2005/05/04(水) 15:34:15
3get
4デフォルトの名無しさん:2005/05/04(水) 15:34:40
【関連書籍】

はじめて読む8086―16ビット・コンピュータをやさしく語る
http://www.amazon.co.jp/exec/obidos/ASIN/4871482456/

Computer Organization and Design Second Edition : The Hardware/Software Interface
http://www.amazon.com/exec/obidos/tg/detail/-/1558604286/
Computer Architecture: A Quantitative Approach
http://www.amazon.com/exec/obidos/tg/detail/-/1558605967/

VAX Assembly Language
http://www.amazon.com/exec/obidos/tg/browse/-/3954/
5デフォルトの名無しさん:2005/05/04(水) 15:37:45
凄くオススメ。(個人的だけど)
ttp://www7.plala.or.jp/keny01/asm/win32/
6デフォルトの名無しさん:2005/05/04(水) 15:50:58
●ゲーム解析目的でアセンブラを勉強したい人誘導先
Digital Travesia
http://hp.vector.co.jp/authors/VA028184/

●関連書籍
はじめて読む8086―16ビット・コンピュータをやさしく語る
http://www.amazon.co.jp/exec/obidos/ASIN/4871482456/

Computer Organization and Design Second Edition : The Hardware/Software Interface
http://www.amazon.com/exec/obidos/tg/detail/-/1558604286/
Computer Architecture: A Quantitative Approach
http://www.amazon.com/exec/obidos/tg/detail/-/1558605967/

VAX Assembly Language
http://www.amazon.com/exec/obidos/tg/browse/-/3954/

●警告
プログラマからもゲーム解析者からもクラッカーからもクズ扱いの要注意な本。
「いまどきのアセンブラプログラミング」
http://www.amazon.co.jp/exec/obidos/tg/detail/-/books/4839912025/customer-reviews/ref=cm_cr_dp_2_1/249-5397889-8897164
「いまどきのアセンブラの教科書」
http://www.amazon.co.jp/exec/obidos/ASIN/4839917183/qid=1115189330/sr=1-1/ref=sr_1_10_1/250-7109447-1688239
7デフォルトの名無しさん:2005/05/04(水) 16:42:49
>>1
乙。
ホントにこのスレタイで立てたんだな…。
8デフォルトの名無しさん:2005/05/04(水) 17:35:31
アセンブラヽ(`Д´)ノモルァ
アセンブラヽ(`Д´)ノモルァ
アセンブラヽ(`Д´)ノモルァ
アセンブラヽ(`Д´)ノモルァ
アセンブラヽ(`Д´)ノモルァ
アセンブラヽ(`Д´)ノモルァ
アセンブラヽ(`Д´)ノモルァ
アセンブラヽ(`Д´)ノモルァ
アセンブラヽ(`Д´)ノモルァ
アセンブラヽ(`Д´)ノモルァ
ヽ(`Д´)ノモルァ
9デフォルトの名無しさん:2005/05/04(水) 17:46:57
詳しいことになると、ゲーム特有のアドレス配置もありそうなので
ブレイクについて教えてもらえませんか。

ゲーム解析をしていますが
当該パラメータ格納アドレスを特定し実際に減算イベントを発生させて
ブレイクさせてログを採るところまではできました

一般的にはブレイクしたときのログに載ってるアドレスのどれか近辺が、
実際の減算ルーチンになる可能性が高いのでしょうか。
10デフォルトの名無しさん:2005/05/04(水) 18:03:36
11デフォルトの名無しさん:2005/05/04(水) 18:06:14
ポロレスだったら離れるだけで済む。

「ブレイッ ブレイッ」
「1,2」
「ののののの」
12デフォルトの名無しさん:2005/05/04(水) 18:28:24
でもビーム解析は重要だな。
アセンブラのピの字も知らなかった漏れがここまで理解できるようになったのは
ゲーム解析のおかげ。
13デフォルトの名無しさん:2005/05/04(水) 20:00:06
馬鹿が変な本出すから、>>9>>12みたいなのが発生するんだよ。

お前らアセンブラでプログラムを書いているのかと小一時間。
14デフォルトの名無しさん:2005/05/04(水) 20:12:38
吼えてゐる
吼えてぬる
15デフォルトの名無しさん:2005/05/04(水) 20:13:53
16デフォルトの名無しさん:2005/05/04(水) 20:43:05
>>15
mov ah,09
mov dx,msg
int 21
int 20

:msg
db "ガッ$"
17184:2005/05/04(水) 20:49:20
(0w0)ウェーーーーーーーーーーーーーーーーーイ
18デフォルトの名無しさん:2005/05/04(水) 20:58:11
>>16
 何 か が 違 う
19デフォルトの名無しさん:2005/05/04(水) 21:00:38
>>16
ネタにマジレスして悪いんだが、
突っ込みどころ満載のソースだなw
2016:2005/05/04(水) 21:13:18
>>18
>>19
そうなの?詳しく。
21デフォルトの名無しさん:2005/05/04(水) 21:45:25
(・∀・)ニヤニヤ
22デフォルトの名無しさん:2005/05/04(水) 22:07:49
23デフォルトの名無しさん:2005/05/04(水) 22:39:04
アセンブラのピョインタがどうにもうまくできません

覚えるにいい方法ないですか。
24デフォルトの名無しさん:2005/05/04(水) 22:45:33
25デフォルトの名無しさん:2005/05/04(水) 23:01:16
絶版が多いのが残念だ。
26デフォルトの名無しさん:2005/05/04(水) 23:02:36
このスレ目立つぞ
27デフォルトの名無しさん:2005/05/04(水) 23:48:01
「NOPさーん」

「ウホ ウホホホホ」

おやおや
ゴン太くんは今日も元気ですね
28デフォルトの名無しさん:2005/05/05(木) 00:20:06
いちおう関連スレ

x86命令の所要クロック計測スレ
http://pc8.2ch.net/test/read.cgi/tech/1103609337/l50
29デフォルトの名無しさん:2005/05/05(木) 00:29:58
30デフォルトの名無しさん:2005/05/05(木) 02:48:01
export _DriverEntry

_DriverEntry:
  xor eax,eax
  mov [eax],edx
  ret
31デフォルトの名無しさん:2005/05/05(木) 03:41:33
>>30
ガッ
32デフォルトの名無しさん:2005/05/05(木) 05:49:54
別にC言語じゃなきゃ、0番地に何か書くのもアリだろ。

CPUによっちゃ、割り込みベクタがあったりするしな。
33デフォルトの名無しさん:2005/05/05(木) 06:13:46
>>32
ぬぽる
34デフォルトの名無しさん:2005/05/05(木) 08:59:15
>>32
何阿呆言ってるの?
C言語でも必要があったら0番地に書かなきゃならないんだけど。
つーか、環境と言語の区別ができませんか?
35デフォルトの名無しさん:2005/05/05(木) 14:14:46
>>33
カッ゙
36デフォルトの名無しさん:2005/05/05(木) 15:05:10
児童ポルヌ
37デフォルトの名無しさん:2005/05/05(木) 15:06:23
>>36
くれ
38デフォルトの名無しさん:2005/05/05(木) 20:08:08
org 100hでどうぞ
39デフォルトの名無しさん:2005/05/05(木) 21:11:42
orz 人生h
40デフォルトの名無しさん:2005/05/05(木) 21:13:38
or2 穴h
41デフォルトの名無しさん:2005/05/06(金) 00:55:29
>>29
RadASM+MASMな感じでやっているのですが
フォントを MS Sans serifからMSゴシックとかに変えてしまうと
ダイアログの大きさとかボタンの大きさが変わってしまって困っています。

dialog box base unit とかが関係しているっぽいのですが
RadASMのリソースエディタというかプレビューする機能を
改造するまでにはいたらず。だれかボスケテ。

全部英語で作ってイメージ貼り付けたボタンとかで逃げようかしらー
42デフォルトの名無しさん:2005/05/06(金) 03:10:52
MASMってもはやフリーで配布されているそうですが

MSDNにも見つかりませんでした


本当にフリーなんですか
43デフォルトの名無しさん:2005/05/06(金) 03:14:44
いちおう検索して、マイクロソフトでDDTの申し込みをするべきだ
とのヘルプがあったのですが
脳天から落とされそうで怖いのです
どうしたらいいですか。
44デフォルトの名無しさん:2005/05/06(金) 03:56:25
45デフォルトの名無しさん:2005/05/06(金) 04:56:35
>>43
>DDTの申し込み
>脳天から落とされそうで
ワラタ
46デフォルトの名無しさん:2005/05/06(金) 07:37:52
 
47デフォルトの名無しさん:2005/05/06(金) 09:13:44
>>42
俺はMSDNでダウンロードしたぞ。
48デフォルトの名無しさん:2005/05/06(金) 14:36:58
過去ログで何度も出ているがMASM 6系の最新版であるMASM 6.15.8803は
Visual C++ 6.0 Processor Pack (vcpp.exe, vcpp5.exe)に含まれている。
ただで落とせるが、ライセンスに関しては自分で判断せよ。
MASMの最新版はVS.NET 2003に付属の7.10.3077。
49デフォルトの名無しさん:2005/05/06(金) 23:39:23
ttp://www.masm32.com/masmdl.htm
これ使ってます。
version8.2とかなってますがとりあえず動いた。

RadASMでサンプルが動いて楽しいわー
50デフォルトの名無しさん:2005/05/07(土) 02:12:30
何故MASM?
NASM使えよ。
51デフォルトの名無しさん:2005/05/07(土) 02:25:35
別に誰が何を使おうが…
52デフォルトの名無しさん:2005/05/07(土) 02:41:44
でもmasmは知ってるのにnasmは知らない人は可哀相に思える
53デフォルトの名無しさん:2005/05/07(土) 02:51:59
NASM NWSA TASM MASM どれでも好きなのを使え(左から俺の高感度順)
54デフォルトの名無しさん:2005/05/07(土) 02:53:01
NASMを使わない奴はこのスレ禁止な。
オープンソースマンセー!!!
55デフォルトの名無しさん:2005/05/07(土) 03:04:03
で、それにgas。これ最強。
56デフォルトの名無しさん:2005/05/07(土) 03:07:08
gccからgasに出せば何となくいじれるが、
フルスクラッチでgasは俺にはムリポ
5756:2005/05/07(土) 03:09:22
>gccからgasに出せば
何か日本語が変だ
まぁ、何にしろ俺にはムリポ
58デフォルトの名無しさん:2005/05/07(土) 03:17:15
>>56
gas究めれば、もはや敵無しなのに...
俺は最初はTASMだったが、
TASM → NASM → gas
に移った。
59デフォルトの名無しさん:2005/05/07(土) 03:35:57
.intel_syntaxを付けても良いなら
俺もgasで書けそうな気はするが。
60デフォルトの名無しさん:2005/05/07(土) 05:07:13
%とか$とかいっぱいでキモチワルイ
61デフォルトの名無しさん:2005/05/07(土) 05:09:01
gas ってドキュメントが少ない気がする
62デフォルトの名無しさん:2005/05/07(土) 05:50:23
  ∧_∧
 ( ´∀`) GASを出すのに理屈は要らねえんだよ
 /,   つ
(_(_, )
  しし'
63デフォルトの名無しさん:2005/05/07(土) 06:00:45
オープンソース・ソフトウェアにケチをつけるバカタレがいるスレはここですか?
64デフォルトの名無しさん:2005/05/07(土) 06:02:29
屁理屈ですか
6564:2005/05/07(土) 06:05:22
64は>>62へのレス
寒くてすまん
66デフォルトの名無しさん:2005/05/07(土) 06:47:00
あぁ、可哀想にM$に洗脳されてんだな。
67デフォルトの名無しさん:2005/05/07(土) 08:00:00
洗脳されててすみませんのう。
68デフォルトの名無しさん:2005/05/07(土) 10:45:05


ソースを例にとってソースを語ってみよう。

ソースを買ってきた。
開けた。オープンソースである。
使われないでいると、当然腐ってしまう。
オープンソースは腐るのが早い。

使われているならば腐る前に腹に入るが、
そのうちどんどんなくなってくる。ネタの枯渇である。

このように、ソースとソースの間には密接な関係があると言えるだろう。
69デフォルトの名無しさん:2005/05/07(土) 22:18:13
ちょっと質問、int 10hで文字列の表示ってどうやるんだっけ?
70デフォルトの名無しさん:2005/05/07(土) 22:27:05
71デフォルトの名無しさん:2005/05/07(土) 23:58:05
英語じゃわかんねーよボケ!!!!
72デフォルトの名無しさん:2005/05/08(日) 00:05:19
73デフォルトの名無しさん:2005/05/08(日) 07:45:38
7469:2005/05/09(月) 18:31:30
>>70
>>72
>>73
ありがとさ〜ん
75デフォルトの名無しさん:2005/05/10(火) 20:36:48
「はじめての486」と「はじめての8086」のどっちを読むのがいいですか?
76デフォルトの名無しさん:2005/05/10(火) 20:41:05
8086 -> 486 の順番で
77デフォルトの名無しさん:2005/05/10(火) 20:43:11
『はじめて読むPentium マシン語入門編』というのもあるよ

http://www.amazon.co.jp/exec/obidos/ASIN/4756144667

『プログラミングの力を生み出す本―インテルCPUのGNUユーザへ』も良いらしい

http://www.amazon.co.jp/exec/obidos/ASIN/4274132072
7875:2005/05/10(火) 22:14:19
>>76
とりあえずその順番に読みますね
79デフォルトの名無しさん:2005/05/11(水) 23:29:05
はじめてシリーズは一回読んだら捨ててよい本だから買うな。
借りとけ。
80デフォルトの名無しさん:2005/05/12(木) 07:43:20
http://life7.2ch.net/test/read.cgi/psy/1115684085/-20
誰も反応してくれなかったよ…
81デフォルトの名無しさん:2005/05/12(木) 08:09:50
クロックの十分の一は神様に捧げなくては行けません

  nop
82デフォルトの名無しさん:2005/05/12(木) 11:55:09
天使の取り分とかあるのかなw
83デフォルトの名無しさん:2005/05/12(木) 12:20:14
神様は分けてもらったクロックでエロ動画をエンコしてるのか
84デフォルトの名無しさん:2005/05/12(木) 16:05:44
えろい神様だな。
85デフォルトの名無しさん:2005/05/14(土) 01:51:51
nopを捧げても1クロックに満たなかった為、撥が当たりました
86デフォルトの名無しさん:2005/05/14(土) 02:41:59
右のTLBをInvalidateされたら、左のTLBも差し出しなさい

                       MIPS神
87デフォルトの名無しさん:2005/05/14(土) 03:05:49
nasmも.386とか宣言する必要あるよね
88デフォルトの名無しさん:2005/05/15(日) 03:29:51
nopが実際にはEAXのチェンジをしているのはx86系のみ?
89デフォルトの名無しさん:2005/05/15(日) 04:21:03
最初の頃は知らんが最近のCPUだと実際にはエクスチェンジしてない本当のnop
90デフォルトの名無しさん:2005/05/15(日) 11:19:01
「nopさーん」

ウホ、ウ(ry
91デフォルトの名無しさん:2005/05/15(日) 11:38:52
8086/8088/80186/80286/386では
xchg ax,regもnopも同じ3clockで区別がつかん
486ではnopは1clockに下がったのでnop専用回路があるんだろう
92デフォルトの名無しさん:2005/05/15(日) 13:53:14
>>88
どちらかというと、axレジスタ同士の交換のコードをnopに割り当てたと言うべきだね。
93デフォルトの名無しさん:2005/05/15(日) 14:39:18
どうでもいいが、NOPの命令コードが00(16ビットなら0000)
じゃないCPUは許せん。
94デフォルトの名無しさん:2005/05/15(日) 14:52:52
いや、寧ろffであって欲しい。
UVErasableROMを使っていた頃は心底そう思った。
#そして、0x66番地に0xc9を書き込むと。
95デフォルトの名無しさん:2005/05/15(日) 16:30:05
唐突ながら、

Sun が出している x86 と SPARC のアセンブラマニュアル見つけた
SysV 直系だけあって AT&T 記法ですた

http://docs.sun.com/app/docs/coll/45.20
96デフォルトの名無しさん:2005/05/15(日) 21:44:33
「nopさー(ry
97デフォルトの名無しさん:2005/05/15(日) 21:53:29
だから若者置いてけぼりネタはやめろと
98デフォルトの名無しさん:2005/05/15(日) 23:22:10
ぬこを追いかけるときには、メガドライブの「エアダイバー」最終面の音楽やな。

ねこねこねこねこねこねこたーんー
ねこねこねこねこねこねこたーんー
ねこねこねこねこねこねこたーんー
ねーこちゃーねーこーちゃー
にゃーねーこーちゃーねーこーたーんー
ねこねこねこねこねこねこねーこー
ねこねこねこねこねこねこねーこー
ねこねこねこねこねこねこねーこー

テンポ180くらいで
血管ブチ切れるまで
99デフォルトの名無しさん:2005/05/16(月) 07:40:55
やっぱこれでしょ
sll $zero, $zero, 0
100デフォルトの名無しさん:2005/05/16(月) 11:29:28
>>94
だよね〜。

ROM上ではffになるように、データバスの入出力にインバータ入れてたりした?
101デフォルトの名無しさん:2005/05/16(月) 12:55:16
FFはむしろNOPよりトラップが似合ってる
102デフォルトの名無しさん:2005/05/16(月) 15:31:11
mips2などのRISCでは、空き領域に 0xDEADBEEF を入れてた俺。
103デフォルトの名無しさん:2005/05/16(月) 21:58:41
>>102
ワロタ
104デフォルトの名無しさん:2005/05/17(火) 00:28:55
データエリアには0xDEADBEEF、テキストエリアには0xDEADC0DEは基本だろ。
105デフォルトの名無しさん:2005/05/17(火) 09:50:34
(´-`).。oO(・・・
106デフォルトの名無しさん:2005/05/18(水) 16:24:58
ツマンナイ、何が尾も知りわけ
意味が無いコード出すなよ。
107デフォルトの名無しさん:2005/05/18(水) 21:49:35
z80の質問してもよかですか?
108デフォルトの名無しさん:2005/05/18(水) 22:05:18
>>107
昔のPC板に行った方がよくね?
109デフォルトの名無しさん:2005/05/18(水) 23:28:02
でもこのスレのヲチャだったら即答しそうな希ガス
110デフォルトの名無しさん:2005/05/19(木) 00:16:11
Z80は16ビット関連命令が少ない(8ビットCPUだから当たり前か)上に、
アドレッシングモードが貧弱過ぎて、泣けてくる。
同じ8ビットでも6502のようにアドレッシングモードが豊富だと、ニヤリと
できるのだが。
1118080(8085):2005/05/19(木) 02:23:04
アドレッシングモードってなに?と言ってみるテスト
112デフォルトの名無しさん:2005/05/19(木) 02:29:38
113111:2005/05/19(木) 02:32:19
マジレスかよー、まいったまいった。
もう寝るわ。
114デフォルトの名無しさん:2005/05/20(金) 12:06:25
スミマセン. 質問です。
x86 CPU で DF の影響を受けるのは lods, cmps, scas, stos, movs 以外にもありますでしょうか?
115デフォルトの名無しさん:2005/05/20(金) 13:22:39
pushf smsw int bound call
他にもある
116デフォルトの名無しさん:2005/05/21(土) 00:36:42
どうもありがとうございます。ins と outs も影響を受けるみたいですね。
pushf とか smsw は使った事ありませんでした。もっと勉強しなくては。
117デフォルトの名無しさん:2005/05/21(土) 13:46:13
おい騙されるな
118デフォルトの名無しさん:2005/05/22(日) 20:52:43
>>68
先生!意味がわかりません。

もっと、詳しく!
119デフォルトの名無しさん:2005/05/25(水) 22:40:44
Enablemenuitem関数で
メニューを強制的にEnableにするには
引数には何を渡したらいいんですかね。
引数のレジスタもわからない。

アセンブラ orz
120デフォルトの名無しさん:2005/05/25(水) 22:57:00
>>119
stdcall関数は引数を渡すのにレジスタは使わずスタックにpushしていく。

push 0
push メニューID
push メニューハンドル
121デフォルトの名無しさん:2005/05/25(水) 23:01:36
>>120
ありがとう。
もう一回がんばります!
122デフォルトの名無しさん:2005/05/26(木) 00:01:44
>>120
おかげさまで、Enableになりましたが、
ターゲットの項目のうち大部分はクリックしても
その後のウインドウが開きません。もともとリソースの無いものを
呼び出したのかなぁ?
123デフォルトの名無しさん:2005/05/26(木) 00:15:43
x86上のlinuxでgccです。
ストリングI/O命令がさっぱり速くないのは、そういうもんなんでしょか?

asm-i386/io.hのinsbマクロを使って、0x0100番地台から読み込んでるんですが、
inbをforループで回したときと速度が変わりません。
objdumpで見ると、ちゃんと「rep insb」なコードになってるんですけどねぇ。
124デフォルトの名無しさん:2005/05/26(木) 00:25:10
>>123
intelのPDFみてみ。IN/OUT命令そのものが多量のレイテンシを伴う
ので、ストリング命令使ってもほとんど旨味がない。
125デフォルトの名無しさん:2005/05/26(木) 00:59:28
>>124
即答ありがとう。

そうだよなぁ、単発でマイクロ秒単位かかる命令だから、ループの判定なんて元々
埋もれちゃってるよなぁ。そんな魔法みたいなウマイ話は無いよね。
薄々は気づいてたんだけど、やっぱ微塵も速くならないとなると不安が拭えなくて。
すっきりしました。
126デフォルトの名無しさん:2005/05/26(木) 01:28:11
んだから、ちょっとした遅延処理の時によく利用されてるだよ。 > IN/OUT命令
127デフォルトの名無しさん:2005/05/26(木) 09:02:55
>>125
それでも、386より前のDOS MODE下でのIN/OUTは結構早かったんだけどね。
プロテクトモードに移行してから鈍亀みたいに遅くなった。
128デフォルトの名無しさん:2005/05/26(木) 16:05:40
>>127
大人(プロテクトモード)には子供(リアルモード)にはない事情があるのですよ。
特に入出力にはね。
129デフォルトの名無しさん:2005/05/26(木) 18:19:26
>>128
(;´Д`)ハァハァ



ウッ
130123:2005/05/26(木) 23:05:24
いやぁ、わざわざストリング版を用意してるぐらいだからってことで、ちょっとは期待してたんですけどね。
単発の異様な遅さを回避できるなにかを仕掛けてくれてるんじゃないかって。

実は某組込ボードの取説に「insbを使えば高速」とうたってたのに、やってみたらまったく変わらなくて。
131デフォルトの名無しさん:2005/05/26(木) 23:28:54
>>119
Cで書いてコンパイラがどんなソースを出力してるか観察しる。
身近な成功例を真似するのは基本だぞ。

>>125
>>127
昔はメモリマップドIOのほうが速いと言われてたけど、今はどうなのかなぁ。
メモリの当該エリアがキャッシュ禁止だと、かなり遅くなるわけで・・・。

repを使っても毎回特権モードのチェックしてるのかなぁ。
それとも、バーストが効かないからダメダメなのかなぁ。
132デフォルトの名無しさん:2005/05/30(月) 22:25:04
CPUのエミュレータを作ってみたいんですが
それって基本的にswitchの塊になるんですよね。
そういうアプローチじゃなくて自己改変コードによって
動的に実行コードを作っていけたら効率が良いように
思えるんですがどうでしょう?
自己改変コードはキャッシュ書き換えのペナルティ大きいんで
逆効果ですかね?
133デフォルトの名無しさん:2005/05/30(月) 22:44:16
>>132
先ずは普通に作ってパフォーマンスを見極めてからにすれば?
134デフォルトの名無しさん:2005/05/30(月) 23:03:53
インストラクション毎にデバッガで追えなくてもいいなら
コンパイラの最適化と同じ
135デフォルトの名無しさん:2005/06/01(水) 03:21:27
っていうか今時 switch の塊のエミュレータなんて使ってないっしょ。
136デフォルトの名無しさん:2005/06/01(水) 13:48:51
>>135
じゃあどういうやつ?
俺の頭では、あとは関数ポインタくらいしか
思い浮かばないんだが・・。これは遅そいぐらいでメリットなさそう。
137デフォルトの名無しさん:2005/06/01(水) 14:00:00
>>136
コードテーブル+関数ポインタ。
138デフォルトの名無しさん:2005/06/01(水) 19:34:57
switch文が大きくなると、
自動的にジャンプテーブルにしてくれる、
という話を昔見たのだけど・・・
139デフォルトの名無しさん:2005/06/01(水) 20:21:09
動的コード変換が都合が悪い場合や移植性重視のときはswitchを使うな
自分の環境だと関数ポインタテーブルよりswitchの方が無駄なエピローグプロローグコードが生成されずに良好な場合が多かったので
長いswitchブロックを見ると自分のコードながらうんざりするが
140デフォルトの名無しさん:2005/06/01(水) 20:25:41
>>139
うっせハゲ
141デフォルトの名無しさん:2005/06/01(水) 20:40:03
switch
 メリット:  分岐予測可能
 デメリット: コードが見難い

ジャンプテーブル
 メリット:  コードが見易い
 デメリット: 分岐予測不可能
142デフォルトの名無しさん:2005/06/01(水) 21:09:14
そこでThreaded Codeですよ
143デフォルトの名無しさん:2005/06/02(木) 01:51:09
switch文内で書かずに、
それぞれの処理をする関数を呼ぶだけにすりゃいいじゃん。

マクロで、
ENTRY(0x00, NOP)
みたいなのを、
case 0x00: DoInstructionNOP(&context) ; break ;
みたいに展開してやりゃ、見やすくなるでしょ。
144デフォルトの名無しさん:2005/06/02(木) 02:03:11
switch並べてもcaseの数が多くなればコンパイラが
ジャンプテーブルにしてくれるよ。
145デフォルトの名無しさん:2005/06/02(木) 02:05:15
switch文が大きくなりすぎると、コンパイラが根をあげてHDDを
フォーマットしちゃうんだって。
146デフォルトの名無しさん:2005/06/02(木) 02:37:32
俺が現実に作るとなると
実際の命令の出現頻度をある程度(種類別に)調べておいて
頻度の高いもの数種類をifで先に処理し
残りをswitchにするかも。
その方が分岐予測的に良さそうな気がするから。

まあifで処理するかswitchで処理するかの判定に
ビットテーブル位は使うかも知れんけど。
147デフォルトの名無しさん:2005/06/02(木) 07:01:14
漏れなら先ず最初にテーブルで作ってみるがな。
148デフォルトの名無しさん:2005/06/02(木) 11:38:32
switchが使えるアセンブラの話をするスレはここですか。
あと、コンパイラが根を上げるアセンブラの話もここですね。
149デフォルトの名無しさん:2005/06/02(木) 14:15:18
>>148
インラインコンパイラも含めていいことになってるから
ギリセーフ。
150デフォルトの名無しさん:2005/06/02(木) 20:45:01
「nopさー(ry
151デフォルトの名無しさん:2005/06/02(木) 21:29:51
Z80で時計を作ってnopと繰り返しで正確な1秒を作ってた頃が懐かしい・・・
152デフォルトの名無しさん:2005/06/02(木) 21:30:24
>>149
ああ、含めていいんだ… インラインコンパイラ





























って、なんだ ?
153デフォルトの名無しさん:2005/06/02(木) 22:22:25
アセンブラのソース中にC/C++等のコードを混ぜることが可能なもの、ではないか?
154デフォルトの名無しさん:2005/06/03(金) 03:06:25
>>151
クロックジェネレーターって時計を作れるほどそんなに正確だったのかな?
155デフォルトの名無しさん:2005/06/03(金) 04:43:27
正確でしょ。安いものほど時計用のクロックを流用してたよ。
156デフォルトの名無しさん:2005/06/03(金) 07:51:54
マシンのクロックとか内蔵タイマで時計を作ると天文時計とはどんどんずれてくよ。
日常の時計が必要な場合はRTCデバイスを装備しないとダメ。
157デフォルトの名無しさん:2005/06/03(金) 15:36:54
>>156
ですよね 水晶とか必要ですよね
158デフォルトの名無しさん:2005/06/03(金) 15:52:31
今時の時計が少し進んだり遅れたりするPCのマザーボードには、
時計用の水晶が使われているのですが・・・。

その水晶の品質もあるけど、
発振回路の出来や温度などにもよるわけで・・・。
159デフォルトの名無しさん:2005/06/03(金) 19:44:57
本当に正確なものを求めるのならセシウムでないといけない

ていうか外界から影響を受けやすいようなもので作っても意味がない
160デフォルトの名無しさん:2005/06/03(金) 20:15:48
某マシンはRTC乗ってなかったな
起動のたびに現日時を入力させられた

161デフォルトの名無しさん:2005/06/03(金) 21:00:57
PCも電波時計を搭載しよう。
162デフォルトの名無しさん:2005/06/03(金) 22:01:42
( ( ( ( ( (゚∀゚) ) ) ) ) )
163デフォルトの名無しさん:2005/06/04(土) 00:41:57
正確な1秒を刻む時計はあるけど、
正確な一日を刻むのは日時計しか(ry
164test:2005/06/04(土) 18:11:42
wwwwwwwwww
165デフォルトの名無しさん:2005/06/06(月) 09:04:37
まず1日の定義から話を始めようか。
166デフォルトの名無しさん:2005/06/06(月) 12:40:58
俺が起床してから就寝して、また起床する直前までの間が1日としようか。
167デフォルトの名無しさん:2005/06/06(月) 12:58:06
PCの時計を1日とすればいいだよ
完璧だろ?
168デフォルトの名無しさん:2005/06/06(月) 21:05:52
>>166
デスマの時は長そうだな。
169デフォルトの名無しさん:2005/06/06(月) 22:16:55
マイメロ始まった時から
次のマイメロが始まるまで
これを元に一日を算出。
170デフォルトの名無しさん:2005/06/07(火) 18:05:43
>>169
Good sounds.
171デフォルトの名無しさん:2005/06/07(火) 22:17:41
bt 使用してスピンロックする排他処理をx86アセンブラを使用して書いてるんだけど
うまく排他がかからない。(Linux for SMP & pthread)
ひょっとして、システムで用意されてる排他処理関数を使用せずに
ユーザ空間で排他処理作成することって不可能?
172デフォルトの名無しさん:2005/06/07(火) 22:36:27
>>171
> うまく排他がかからない。

うまく排他がかかる状況は一つしかないんだけど、
うまく排他がかからない状況は星の数ほどあるわけで…。
173デフォルトの名無しさん:2005/06/07(火) 22:43:40
>>170は釣りなのかな。。。
174デフォルトの名無しさん:2005/06/07(火) 23:02:55
そういうときは正露丸

排他には歯に詰めてご使用くださいってあるし、間違いないだろう。
175デフォルトの名無しさん:2005/06/07(火) 23:04:22
>>171
lock使え
176デフォルトの名無しさん:2005/06/07(火) 23:05:52
>171
lock bt でおk
177171:2005/06/07(火) 23:44:02
lock btc、lock dec、lock incを使用したんですけどダメでした。(volatileな排他変数を使用)
不可分処理中にわざと sleep などでコンテキストスイッチを発生させてるのですけど
そういう処理はやってはいけないんですか?
(もし、不可分処理中に別スレッド(排他権限を獲得してない)に移っても排他変数を dec できないはず)
178デフォルトの名無しさん:2005/06/07(火) 23:54:51
CPU一個だとうまくいくのか?
179171:2005/06/08(水) 03:54:54
アセンブラで書いた排他スピンロック処理できたァ━━━(。A。)━━━ッ!!!!!    for Linux SMP & pthread

>>178
そんな次元でなかったです。単にコード間違ってただけでした。 orz

さて (´・ω・`) 寝るとするか。
180デフォルトの名無しさん:2005/06/08(水) 11:22:41
おいおい・・・
181デフォルトの名無しさん:2005/06/08(水) 15:26:07
つまり、まとめると正露丸が効いたということだな。
182デフォルトの名無しさん:2005/06/08(水) 17:12:30
さすが正露丸、CPUにまで効くとは。
183デフォルトの名無しさん:2005/06/08(水) 20:14:51
実際に正露丸を歯に詰めたら、凄まじく臭くて死にそうになったがな
184171:2005/06/08(水) 20:22:11
64bit の Linux SMP(Op x 2)でもうまくいってるし、完璧みたいだな。
185デフォルトの名無しさん:2005/06/08(水) 21:43:48
さすが正露丸。 64bit でも ok か。
186デフォルトの名無しさん:2005/06/08(水) 22:17:02
俺も正露丸買ってきて次のデバッグに備えるよ
187デフォルトの名無しさん:2005/06/08(水) 22:18:28
正露丸、正露丸って、全然面白くねーんだよ。
消えろボケが。
188デフォルトの名無しさん:2005/06/08(水) 22:21:53
歯に正露丸つめるのはやめとけ。
単に感覚をマヒさせてるだけで、症状はそのまま進行してるからな。
189デフォルトの名無しさん:2005/06/09(木) 21:01:22
アセンブラでクイックソートの書き方がわかりません。
教えてください。
提出が明日で切羽詰ってます。
考え方はどうでもいいのでソースをおながいします。
190デフォルトの名無しさん:2005/06/09(木) 21:13:17
>>189
call _qsort
191189:2005/06/09(木) 21:18:52
>>190
どーゆー意味ですか?意味不明ですw
192デフォルトの名無しさん:2005/06/09(木) 21:26:13

正露丸! 正露丸をお持ちの方はいらっしゃいませんか!
>>189 さんが困っています!
193189:2005/06/09(木) 21:29:17
てめーは引っ込め!正露丸ヲタが!!
194デフォルトの名無しさん:2005/06/09(木) 21:32:15
征露丸ください。
195189:2005/06/09(木) 21:34:31
193の書き込みは偽者です!
切羽詰ってるんです(汗)
何とかしてください
おながいしますw
196デフォルトの名無しさん:2005/06/09(木) 21:37:53
>>194-195
つ・・
197189:2005/06/09(木) 21:39:29
>>196
ありがとうございます
ついでにソースもください
切羽詰ってるんですw
198デフォルトの名無しさん:2005/06/09(木) 21:50:48
アセンブラスレとドット絵スレとローポリスレの惨状が
時代の変化を感じさせる今日この頃です。
199デフォルトの名無しさん:2005/06/09(木) 21:55:46
>>197
Cで書いてコンパイラに出力させたら?
200デフォルトの名無しさん:2005/06/09(木) 21:59:02
>>189
他の言語(含自然言語)でクイックソートを書いてそれを脳内コンパイルすればいい。
>>197
漏れは醤油がいいな。
202189:2005/06/09(木) 22:11:25
>>199
どーやってコンパイラに出力させるんですか?
VS.netの環境があります。
203デフォルトの名無しさん:2005/06/09(木) 22:14:28
>>202
プロジェクトの設定。
それ以上は該当スレへ。
204189:2005/06/09(木) 22:43:06
どうも参考になりましたw
明日おこられまつww
205デフォルトの名無しさん:2005/06/12(日) 23:26:27
いまどき汗でqsort書く必要ってどこにあるんだろうな。
206デフォルトの名無しさん:2005/06/12(日) 23:52:34
189に課題を出した方は成績つけられるだろ。
207デフォルトの名無しさん:2005/06/13(月) 00:08:21
masm バージョン8.00.50215.44でSSE2命令を使えるようにするには
どうすればいいのでしょうか?

.686/.MMX/.XMMは指定しています。
208デフォルトの名無しさん:2005/06/13(月) 05:53:20
>>207
DB
209デフォルトの名無しさん:2005/06/13(月) 06:36:12
>>207
.MMXが余計です。
210デフォルトの名無しさん:2005/06/13(月) 07:25:18
アセンブラ…ヾ(゚∀゚)ノ" フォーウ!!
211207:2005/06/13(月) 10:29:42
>>209
その通りでしたorz
212デフォルトの名無しさん:2005/06/13(月) 13:27:57
日々、このスレのレベルが低下してるな
213171:2005/06/13(月) 13:36:15
ふと、思ったが Opteron は HyperThreading を実装してないけど、
pause 命令は有効に働くんだろうか? nop 使用するよりもお徳なのかわからん。
AMD マニュアルにも載ってないし...うーむ、謎だ。
214デフォルトの名無しさん:2005/06/16(木) 22:30:14
ネトランライター橋本和明の新しいアセンブラ本が出ます。
前2冊は『悪書』『詐欺』『デタラメ』など色々言われているし、
いまさら騙される人はいるのかな?
こんな本買ったら1年は後悔し続けそう・・・

『アセンブラ読本 for Game ゼロからはじめるゲーム改造』
●橋本和明, leye (著) 発売日:2005/06/20
http://d.hatena.ne.jp/yaneurao/20050617

前2冊のレビュー
『いまどきのアセンブラの教科書』
http://d.hatena.ne.jp/yaneurao/20050602
http://www.amazon.co.jp/exec/obidos/ASIN/4839917183/250-2477672-5947432
『いまどきのアセンブラプログラミング』
http://www.amazon.co.jp/exec/obidos/ASIN/4839912025/250-2477672-5947432
215エルデス・モルデル:2005/06/16(木) 22:44:49
上の本についてのeagleOwlさんのレビュー

http://www.mysys.org/eagle0wl/etc/diary/diary.php?no=200502#20050208
http://www.mysys.org/eagle0wl/etc/diary/diary.php

この意見は参考になりましたか? はい/いいえ
216デフォルトの名無しさん:2005/06/17(金) 00:12:33
>>214
3冊も出てるってことは、売れてるってことだな
グチるより、儲けたモン勝ちか、、、
217デフォルトの名無しさん:2005/06/17(金) 18:37:08
>>216
1冊目は引っかかった初心者が結構いたけど、2冊目は発売直後に内容のひどさが話題になったから、
あんまり売れてないよ。3冊目は2冊目と同じ内容で他社から出して売ろうという魂胆みたいだね。

そういえば、2冊目は、『なぜか』yahooのセールスランキング集計書店では異常なまでに売れていたらしい。
218デフォルトの名無しさん:2005/06/17(金) 20:46:42
売れる本ってのは二つに分かれる。
良い本で話題になる本か、
悪い本で話題になる本だ。

腐ってる本でも、腐り度合いによっては話題となり売れるのさ
219デフォルトの名無しさん:2005/06/17(金) 21:15:48
MIPSにおいて、
キーボードから整数を10個読み取って配列に格納する方法を教えてください。
宜しく御願いします。
220デフォルトの名無しさん:2005/06/17(金) 21:48:07
>>218
それは言えてる。名前は言えないが、某○比○とか。
221デフォルトの名無しさん:2005/06/18(土) 03:03:01
いまどきの って Kやらアプリ改造入門のためだけなら使える?
222デフォルトの名無しさん:2005/06/18(土) 03:49:49
無理矢理使おうとすれば全然使えないとも言い切れないと思える気もしないでもないかもしれない。
223219:2005/06/18(土) 06:24:10
あげ
224デフォルトの名無しさん:2005/06/18(土) 06:59:23
悪いところを全部指摘できるようになればかなりの実力です!・・・とか
厳しいな
225デフォルトの名無しさん:2005/06/18(土) 09:12:26
>>221
アマゾンのレビューを見れば分かると思うが、間違いが多すぎて全然使えない。
そもそも、クラッカーやゲームの解析やってる人達からゴミ扱いされている本だよ。

「クラッカー・プログラム大全」とか「解析魔法少女美咲ちゃん」とかの、
まともな本を買った方が良い。他には「はじめて読む8086」とか。
それと、「Digital Travesia」という有名解析系サイトも要チェックかと。
226デフォルトの名無しさん:2005/06/18(土) 16:42:21
どこかにnasmのドキュメントの日本語版ってないの?
227デフォルトの名無しさん:2005/06/18(土) 19:03:03
>>226
昔、beroって人が訳してた。
エミュレータ関連の資料も書いてたことがある人。
http://www.bekkoame.ne.jp/~bero/
今はこのサイトはもうない。
エミュレータの資料の方のサイトはあるんだが…。
いろんな日本語訳があって便利だったのに。

で、nasmの日本語ドキュメントは保存してたからアプロダに上げとく。
http://ccfa.info/cgi-bin/up/src/up12589.zip
欲しければ早めに取ったほうがいいぞ。
228デフォルトの名無しさん:2005/06/18(土) 19:05:42
>>227
うpしてくれてありがとう。
229227:2005/06/18(土) 19:06:18
訳っていっても「ELF Object Format」
が「小妖精オブジェクト・フォーマット」
になってるような中途半端な段階のもの。
探せばどっかにもっとマシなものがありそうな気はする。
230デフォルトの名無しさん:2005/06/18(土) 19:06:29
>>227
Thx!
俺226じゃないけど。
231226:2005/06/18(土) 19:12:38
ちょっと酷いな
232デフォルトの名無しさん:2005/06/18(土) 19:53:23
あれって機械翻訳かけただけじゃなかったっけ?
233227:2005/06/18(土) 21:29:35
>>232
いや、少しづつ手を加えていた。
だけどこれに関してはまだほとんど手を加えてない段階だったと思う。
完成まで至ったものは少なからずいい品質のものがあった。
234デフォルトの名無しさん:2005/06/19(日) 00:12:09
英語はスラングさえなければいい訳が出来る

英と米でスラングも違うから書いた人の出身地まで考慮して
訳を進めるなんて芸当はできない
235デフォルトの名無しさん:2005/06/19(日) 00:15:14
次スレのスレタイは アセンブラ…ヽ(゚∀゚)ノフォーウ!! でおながいします。
236デフォルトの名無しさん:2005/06/19(日) 01:11:26
>>235
次スレが立つ頃には寒くなってるぞ
237デフォルトの名無しさん:2005/06/19(日) 02:59:44
>>227
アイアイサ
238デフォルトの名無しさん:2005/06/21(火) 22:48:04
俺コンパイラ用のアセンブラ書いてんだけど
アドレッシングモードが超面倒臭い
239デフォルトの名無しさん:2005/06/22(水) 06:00:33
そこでサボると、コンパイラのユーザから「アホなコードしか吐かない」って叩かれるよ。
頑張って最適なコードを吐くように作らなきゃ。
240デフォルトの名無しさん:2005/07/05(火) 16:41:14
ア・ドレッシングモード
241デフォルトの名無しさん:2005/07/05(火) 17:20:04
>>213
どうせなら、Opteron(AMD64)専用のアプリとして PAUSE なんか使わずに NOP 使っちゃえ!(w
242デフォルトの名無しさん:2005/07/05(火) 18:03:41
IA-32の話ですが、
どのCPU製品がCPUIDの0x80000002〜0x80000004に対応しているのかの一
覧表ってないもんでしょうか。
243デフォルトの名無しさん:2005/07/07(木) 04:40:43
NASMを使ってLinuxでアセンブラプログラミングしたいんですが
何かいい入門書orページありませんか?
ttp://www.nk.rim.or.jp/~jun/lxasm/asm00.html
↑は初心者向きとは思えません。。。
hello,worldをネットを見ながら打ち込んで動作させたのですが
命令各所が意味不明です
javaなら実用レベルなんですが。。。
dosのアセンブラ入門ページは見かけるのですがlinuxの物となると
見つかりません、お願いします。
244デフォルトの名無しさん:2005/07/07(木) 05:05:31
z80のアセンブラ関連で、一番イイよ!っていう推薦書みたいなのありませんか?
(できればまだ絶版になってない本で)
245デフォルトの名無しさん:2005/07/07(木) 06:49:57
>>244
できるZ80
246デフォルトの名無しさん:2005/07/07(木) 10:24:22
247デフォルトの名無しさん:2005/07/07(木) 11:54:25
C=A×Bのアセンブラのプログラムを教えてください
248デフォルトの名無しさん:2005/07/07(木) 12:00:06
>>247
push a
mul a, b
mov c, a
pop a
249デフォルトの名無しさん:2005/07/07(木) 14:40:29
ld r1 = [A]
ld r2 = [B]
mul r3 = r1,r2
st [C] = r0
250デフォルトの名無しさん:2005/07/07(木) 15:26:55
>>247 249の抽象コードで意味はわかると思うけど、3行目はほとんどのASMで
mul r2,r1 でr1=r2*r1という動作になる。3つのレジスタを同時に触るASMはあまりない。
4行目はもちろんその結果のレジスタを変数Cに入れるのだから、st [C]=r1ね。
251249:2005/07/07(木) 15:49:37
ああっ、ほんとだ。間違えてしまったorz
252デフォルトの名無しさん:2005/07/07(木) 16:51:07
結果レジスタを別指定できるCPUなんて珍しくないと思うが
ARMとか
253デフォルトの名無しさん:2005/07/07(木) 22:31:04
  .global _main
_main:
  mov.w r6,@-r7
  mov.w r7,r6
  mov.w #.LC0,r2
  mov.w r2,@-r7
  jsr @_printf
  adds #2,r7
  sub.w r2,r2
  mov.w r2,r0
  mov.w @r7+,r6
  rts
254デフォルトの名無しさん:2005/07/07(木) 22:59:03
アセンブリニングするには、何が必要ですか。
255デフォルトの名無しさん:2005/07/07(木) 23:04:48
まず脳みそ。
256デフォルトの名無しさん:2005/07/07(木) 23:05:31
>>252
ですよね〜
257デフォルトの名無しさん:2005/07/08(金) 00:49:24
258デフォルトの名無しさん:2005/07/08(金) 02:35:31
アセンブラって難しそうだけど、
mlb nba,abs
elt trf,kgb
msn co,ltd
みたいなかんじですね?
259デフォルトの名無しさん:2005/07/08(金) 03:13:50
>>258
2行目と3行目をひねったつもりだろうがつまらん。
きみはまずN88 BASICから始めたまえ。
260デフォルトの名無しさん:2005/07/08(金) 04:09:36
ご、ごごごごめんなさい
261デフォルトの名無しさん:2005/07/08(金) 21:53:52
ゴゴゴゴゴゴゴゴゴゴゴゴゴ・・・
262デフォルトの名無しさん:2005/07/09(土) 17:44:08
あれ、86系って(e)cx=0のときにrep movsb とかやると
16or32bitの最大回数転送じゃなくて何もしないんだっけ?

確かcx(ecx)=0でloop だと、 16or32bitの最大数ループしたよなあ。
263名無しさん@お腹いっぱい。:2005/07/09(土) 21:13:03
>>262
記憶違いだろ。
「REPプレフィックスがストリング命令に指定されたとき、ECXが0だとストリング命令は実行されない」
とちゃんと書いてあったぞ?
264デフォルトの名無しさん:2005/07/10(日) 16:10:36
いやそういう意味。
後半はloop命令で回したらってこと。

   xor ecx,ecx
lp1:
   movsb   
   loop lp1

265デフォルトの名無しさん:2005/07/10(日) 20:20:19
>>264
そりゃぁ、loopニモニックに到達する前にループから脱出することはできないからだね。
266デフォルトの名無しさん:2005/07/11(月) 09:14:52
スタックって難しいね
pushとpopがかみあわない
267デフォルトの名無しさん:2005/07/11(月) 15:07:34
先入れ先出しを守っていればいいはずだけど。

それにしても、関数を何回も呼び出したり再帰したりできるんだから
スタックというデータ構造はすごいな。
268デフォルトの名無しさん:2005/07/11(月) 15:10:22
先入れ先出しはキューだよ。 スタックは先入れ後出し。
  push R1
  push R2
  ・・・
  pop  R1
  pop  R2  ってやったらR1とR2が入れ替わって戻っちゃうよ。
269デフォルトの名無しさん:2005/07/11(月) 15:24:04
間違えました。スマソ
270デフォルトの名無しさん:2005/07/14(木) 16:36:59
func:
pop ax
dec ax
push ax
ret
271デフォルトの名無しさん:2005/07/14(木) 17:24:17
これが噂のデクリメント関数。
272デフォルトの名無しさん:2005/07/15(金) 16:36:48
これ最強。

func:
mov 4(%esp), %eax
dec (%eax)
ret
273デフォルトの名無しさん:2005/07/15(金) 16:43:27
ていうか、デクリメントするのを関数にしようとするのが人間国宝的発想だな。
274デフォルトの名無しさん:2005/07/15(金) 19:29:38
>>270のやつは戻り先のアドレスをデクリメントしてるよ…
>>272のやつはよくわかんね
275デフォルトの名無しさん:2005/07/15(金) 20:45:07
>>274
> >>272のやつはよくわかんね
引数に変数のポインタを渡して、その内容を-1してる。
(ポインタサイズを32bitとして)

文法がAT&T形式なんで、Intel形式のsrcとdstを逆に考えればいい。
(その他のアドレッシングの書き方はGoogleさんに聞くのだ)
276デフォルトの名無しさん:2005/07/15(金) 20:50:45
へぇ〜
277デフォルトの名無しさん:2005/07/16(土) 03:49:00
すごいすごい

で?
278デフォルトの名無しさん:2005/07/16(土) 05:45:05
質問なのですが、MLでは何でINVOKEで前方参照ができないのでしょうか?
INVOKE以外の命令ではみなできるみたいなんですが・・・
279デフォルトの名無しさん:2005/07/16(土) 15:46:49
アセンブリ言語の教科書
http://ruffnex.oc.to/kenji/bkasm/
NASM(The Netwide Assembler)やGAS(GNU Assembler)といったアセンブラを利用して、
Windows、Linuxアプリケーションの作成からブートセクタ関連のプログラミング、
そしてネットワークを扱ったアセンブラプログラミングまで幅広い内容を解説。
本書は、C言語など各種のプログラミング経験のある方はもちろん、
プログラミング知識の浅い初心者の方にも対応できるよう、
アセンブラの基礎から具体的な解説をした、純粋なアセンブリ言語の技術解説書である。
280デフォルトの名無しさん:2005/07/16(土) 18:19:29
間違って>>214のクズ本を買う初心者がいそう・・・
初心者の人は役に立たない類似本に注意しましょう。
281デフォルトの名無しさん:2005/07/17(日) 00:11:24
YASM
ttp://www.tortall.net/projects/yasm/

* AMD64 support
* NASM の文法も使用可能
* DJGPPで使われる COFF オブジェクト生成可能
* ELF32 と ELF64 オブジェクト生成可能
* 以下のプラットフォームに対応
* UNIX and compatibles (FreeBSD and Linux tested, GNU configure based autoconfiguration)
* DOS (using DJGPP)
* Windows (using Visual C++ or CygWin).
282デフォルトの名無しさん:2005/07/17(日) 00:16:30
「今日は体調が悪いので仕事をYASM」
283デフォルトの名無しさん:2005/07/17(日) 05:51:02
>>279
hack & krack so on... と書かれてるのが非常に不安
何でアセンブラはクラック系の本が多いんだろうね?
「真面目なアセンブラ」キボンヌ
284デフォルトの名無しさん:2005/07/17(日) 08:16:17
>>283
目次見てもその発言か?
さすがにクラックばっかの内容じゃないだろ
それとも一行でもクラックのやり方書いてあったらアングラ本なのか
285デフォルトの名無しさん:2005/07/17(日) 08:37:37
>>284
副題にそういう文字列を入れちゃうセンスが俺の不安をかき立てるんだよ
「これは厨房向けです」と帯に書いてあったら疑って掛かるだろ、普通
286デフォルトの名無しさん:2005/07/17(日) 08:41:24
それに、Hack と Krack の区別が付いてないのも不安だな
今時こんな人が居るんだね

確かに目次はマトモそうなんで、期待はしてるよ
287デフォルトの名無しさん:2005/07/17(日) 09:37:50
>>286
意図的なものだと思う。
本来区別できないものだと思うし、
無理に分離しようとするほうが不自然。
288デフォルトの名無しさん:2005/07/17(日) 09:44:10
というか、単純にその手の単語をちりばめておくと売れるからだろう。
帯などは、著者ではなく出版社でつけているだろうし。
289デフォルトの名無しさん:2005/07/17(日) 12:24:29
>>286
出版社をよくみろよな。それだけですべて説明がつくよ。
それにこの著者の前作のTCP/IPの本も
やたらハックだのクラックだの煽られてた割には
内容がちゃんとしててなかなか良かったぞ。
この本も別の出版社から出してればもっとうまい宣伝文句が使われただろうに。
290デフォルトの名無しさん:2005/07/17(日) 12:25:01
すまん、ageちまった。sage
291デフォルトの名無しさん:2005/07/17(日) 13:20:59
本来分離できないものだと「思う」

バカが「思った」ところで意味ない。

バカは黙って引っ込んでろよ。
292デフォルトの名無しさん:2005/07/17(日) 13:54:27
自分の考えと合わなかったら即全否定というのはよろしくないよ
293デフォルトの名無しさん:2005/07/17(日) 14:01:10
誰の、何に対して「よろしくない」んだか。
294デフォルトの名無しさん:2005/07/17(日) 14:31:47
ルサンチマン君がきたぞー
295デフォルトの名無しさん:2005/07/17(日) 17:07:08
crack だな。
296デフォルトの名無しさん:2005/07/17(日) 17:13:17
krack とも言うんだよ。ワールドカップの時に korea が corea だったのと同じレベルだが。
297デフォルトの名無しさん:2005/07/17(日) 17:47:45
俺は
Krack = ソフトウェアの解析、リバースエンジニアリングといった行為
Crack = サーバへの侵入、バックドアを仕込む、といった違法な行為
Hack = コンピュータについて深い部分まで習得すること
という認識なのだが、ぶっちゃけあんまり知らない。
詳しく教えてエロイ人。
298デフォルトの名無しさん:2005/07/17(日) 17:48:03
>>296
アフォですね
299デフォルトの名無しさん:2005/07/17(日) 17:58:43
K と C はコピープロテクトを破ったり、データを改ざんしたり、セキュリティホールを突いたり、
悪意ある解析・改変・侵入。K はより厨房用語なだけ。
300デフォルトの名無しさん:2005/07/17(日) 18:05:00
試しにMASMでベクトルを正規化する関数を作ってみたんですけど、
同じようなコードを書いてるにも関わらず、コンパイラが吐き出した関数
の方が10倍以上早いのは何ででしょう・・・。orz
というか、FPUを使う命令を一回でも使うと遅くなります。
301デフォルトの名無しさん:2005/07/17(日) 18:13:02
>>287
>本来区別できないものだと思うし、

明確な区別があるのに?
302デフォルトの名無しさん:2005/07/17(日) 21:49:23
メモリへのアクセスが一切ない俺のコードより
普通にアクセスしてるコンパイラのコードの方が速い。
なぜら?
303デフォルトの名無しさん:2005/07/17(日) 21:54:53
スパゲッティ
304デフォルトの名無しさん:2005/07/17(日) 22:23:16
スパゲッチュー
305300:2005/07/17(日) 23:26:24
インラインで書くと同じくらいの速度になるんだけど、なんでだろう。
306デフォルトの名無しさん:2005/07/17(日) 23:47:10
コンパイラが勝手にインライン展開してるだけじゃ
307300:2005/07/18(月) 00:16:39
やっぱりインラインにしても、速度は変わらなかった・・・orz
納得いかないけど、アセンブラで書くのは諦めるしかないか。
308デフォルトの名無しさん:2005/07/18(月) 01:23:54
>>301
明確とはとてもいえないように思う。
観念的なレベルでは定義されていても、
現実の事例では判別し難い場面は多い。
309デフォルトの名無しさん:2005/07/18(月) 02:05:22
>>308
Hack と Crack がどう違うのかなんて、ちょっと調べればすぐ出て来ると思うけど。

ttp://cruel.org/freeware/hacker.html
ttp://kfn.ksp.or.jp/~gauche/Languages/Column/column10E.html

確かに境界的な事例はあるだろうけど、「多い」というのは違う。
他人のウェブサイトを勝手に書き換えるのは Hack じゃないし、
他人のサーバに勝手に侵入してデータを引き出すのは Hack じゃない。
ゲームのバイナリを弄ってチートするのも Hack じゃないし、
ソフトウェアをただで使う為にプロテクトを破るのも Hack じゃない。
これらは全て Crack.
>>279 の本がどういうスタンスかは知らないけどね。
310デフォルトの名無しさん:2005/07/18(月) 07:35:08
昔、ハッカーってのはPCの知識が豊富な奴を指したんだっけか。
311デフォルトの名無しさん:2005/07/18(月) 08:27:12
ハッカーってのはMITの寮の屋根の上に車あげちゃうような奴のこと。
312デフォルトの名無しさん:2005/07/18(月) 12:16:43
そんでもって缶のサクマドロップでは一番不人気なんだよな。
313デフォルトの名無しさん:2005/07/18(月) 13:19:58
それは薄荷。
314デフォルトの名無しさん:2005/07/18(月) 14:15:25
>>309
他人のウェブサイトを勝手に書き換えるのは Hack (少なくともHackの一種)だと思う。
そのサイトに書かれている違いをどのように捉えるかという点で君は表層しか見ていない。

「ハッカーはものをつくります。クラッカーは壊します。」

サーバーに侵入してデータを破壊するのは確かに破壊行為だろうが、
テクニックを作り出すという点では創作行為だ。
もちろん、単に既存のスクリプトを使うだけといった創作的でない行為はHackじゃないと思うよ。
315デフォルトの名無しさん:2005/07/18(月) 14:36:38
>>302
コンパイラにアセンブルリスト出力させて読んで自分で調べろ。

多分おまいの5倍くらい頭のいいコードを
コンパイラ様は出力なさっておる。

頭のいいコンパイラ様が出力なさるコードを読むことが
アセンブラ学習の近道じゃないかな。
316デフォルトの名無しさん:2005/07/18(月) 16:48:37
ははぁ〜コンパイラ様ばんざ〜い!
317デフォルトの名無しさん:2005/07/18(月) 17:17:57
自分の書いたasmコードがコンパイラの吐き出したコードより遅い香具師へ。
普通そんなもんだよ。そこであきらめるか食い下がるかだ。
はるかに上は存在する。まあガンガレ。
318デフォルトの名無しさん:2005/07/18(月) 17:19:23
>>302
メモリアクセスよりもとんでもないネックがあるから
319デフォルトの名無しさん:2005/07/18(月) 18:03:27
>>314
いや、それは君が思ってるだけだよ。ハックはもっと日常的な物だ。
これ以上はスレ違いだし、長くなりそうなので、自分で研鑽を積んで欲しい。
320デフォルトの名無しさん:2005/07/18(月) 18:14:57
Fuck
321デフォルトの名無しさん:2005/07/18(月) 22:00:23
「ちょっと弄ったらうまくいくようになっちまったよ。はは」
という程度の謙遜を伴ったのがhack
「どうだい俺様の仕事は。このくらい朝飯前さ」
とか言い出したらハッカーとは言わない
322デフォルトの名無しさん:2005/07/18(月) 22:51:23
そうですねwwwwwwwwっうぇっwwwwwwwwwww
323デフォルトの名無しさん:2005/07/18(月) 23:36:50
ハッカーとクラッカーの違いは、ちょうど音楽のジャンルにたとえることができる。

ロック と ロックアンドロール
メタル と デスメタル
演歌 と J-POP

こんなものは、興味のない人からみれば皆一緒だ。
ただギャンギャンエレキギターが鳴っていて、不平不満を叫んでいるだけだったり、
誰も彼も同じような声で、同じコード進行の曲を歌っているようなものだ。
324デフォルトの名無しさん:2005/07/18(月) 23:38:21
だが、興味のある人からすれば
「それらは明確な違いがある」と主張するだろう。

それと同じことだ。
325デフォルトの名無しさん:2005/07/18(月) 23:55:08
カエルとケロヨンはちがう
まで読んだ
326デフォルトの名無しさん:2005/07/19(火) 00:13:44
>>279のバナーにあるhack & krack so on...だけで、
ここまで盛り上がれるマ板住人に萌え。もまいら最高〜。
でもスレ違いなので、この辺りで軌道修正してくれ。
327デフォルトの名無しさん:2005/07/19(火) 00:28:02
カエルとケロヨンの違いをアセンブラで表現してくれ
328デフォルトの名無しさん:2005/07/19(火) 20:53:57
カエル ret
ケロヨン retf
329デフォルトの名無しさん:2005/07/20(水) 11:58:02
>>300氏のコードに興味がある。
10倍って、別のところに原因がある気がする。
330デフォルトの名無しさん:2005/07/20(水) 20:19:40
http://www.amazon.co.jp/exec/obidos/ASIN/4887188293/
発売日に在庫切れってどゆことよ。
アマゾンちゃんとそろえとけよ。
買えねーじゃねーか!
331デフォルトの名無しさん:2005/07/20(水) 20:49:27
カエル push
ケロヨン pop
332デフォルトの名無しさん:2005/07/20(水) 21:32:31
モグラとモグタンだとどうなる?
333デフォルトの名無しさん:2005/07/20(水) 22:08:07
モグラ smsw
モグタン cpuid
334デフォルトの名無しさん:2005/07/21(木) 01:07:01
>>272
func:
movl 4(%esp) , %eax
decl (%eax)
ret
じゃだめじゃなかったっけ?
335デフォルトの名無しさん:2005/07/21(木) 10:29:50
>>334
確かに >>272 のままではだめだ。

>>334 でもいいが、以下の変更だけでもいい。
dec (%eax) → decl (%eax)
336デフォルトの名無しさん:2005/07/21(木) 14:01:40
>>330
今日が発売日だ。(都市部の大きな)本屋行ってみれば?
337デフォルトの名無しさん:2005/07/21(木) 17:03:58
call $
338デフォルトの名無しさん:2005/07/21(木) 17:55:32
>>336
今日ゲットできたよ。
ここ最近橋本の悪書ばっかりみてきたからかもしれんが、
本当にちゃんとしたアセンブラ本ですげー良かったよ。
339デフォルトの名無しさん:2005/07/22(金) 14:06:31
>>337
スタック使い切って、あぼーんでつね

こんな反応で桶?
340デフォルトの名無しさん:2005/07/24(日) 17:39:05
341デフォルトの名無しさん:2005/07/26(火) 13:40:34
VCのインラインアセンブラでmovq xmm0, [esi] って書いたら
アセンブルできなかったよ。
qword ptr が必要みたい。
342デフォルトの名無しさん:2005/07/26(火) 17:38:21
LED点灯プログラムの超基本です
アセンブラ初心者のボキに教えて下さい。

.cpu 300ha
.section prog1,code,locate=h'000000

p1dr .equ h'ffffc2
p1ddr .equ h'ffffc0

.section rom,code,locate=h'000100

mov.l #h'ffff00,er7

mov.b #h'ff,r0l
mov.b r0l,@p1ddr

mov.b #b'10101100,r0l
mov.b r0l,@p1dr

loop: jmp @loop

.end

mov.b #h'ff,r0l  これは出力用設定データらしいのですが、
なぜ#h'ffを使うのですか?
343デフォルトの名無しさん:2005/07/26(火) 20:06:55
>>342
それはアセンブラの問題と言うよりは
CPU内蔵I/O、つまりハードウェアの問題。
電気電子板で聞いたほうがいいよ。
344デフォルトの名無しさん:2005/07/26(火) 21:40:20
どこで聞こうがハード固有の仕様など答えられん
345デフォルトの名無しさん:2005/07/27(水) 01:00:19
答えられないなら反応しなくていいです
346デフォルトの名無しさん:2005/07/27(水) 01:10:14
347デフォルトの名無しさん:2005/07/27(水) 02:00:58
               .|   |  | |   |    |  | |   |   |   || | |
               .|   |  | レ  |    |  | |   |  J   || | |
    ∩___∩    |   |  |     J    |  | |  し     || | |
    | ノ\   ,_ ヽ  .|   レ |      |  レ|       || J |
   /  ●゛  ● |   .J      し         |     |       ||   J
   | ∪  ( _●_) ミ             .|    し         J|
  彡、   |∪|   |              .J                レ
 /     ∩ノ ⊃  ヽ
 (  \ / _ノ |  |
  \  "  /  | |
   \ / ̄ ̄ ̄ /
      ̄ ̄ ̄ ̄
348デフォルトの名無しさん:2005/07/27(水) 03:34:57
>>342 石はH8っぽいね。そうだとすると、P1DDRの初期値(リセット直後の値)は00で、DDRの
bitが0であるDRのbitは入力になる、とハードで決まってるの。(ユーザーズマニュアル参照)
だから初期化後にDDRにFFhを書くことでDRの全bitを出力に設定しているわけ。
そうしないとDRに何か書いてもその値が外に出ていかないから。
ちなみにDRにつながってるLEDは、0の所が光る回路になっていることが多いよ。
頭の、mov h'ffff00,ER7 は、「スタックポインタを初期化する」命令なので、このプログラムに
限って言えば無くても動く。(callとか使ってないから)
349デフォルトの名無しさん:2005/07/27(水) 23:28:44
>>342
こういうのって機種依存なんだから
>>342 の近くの人に聞いたほうがいいよ
350デフォルトの名無しさん:2005/07/28(木) 09:58:57
>>349
>>348みたいに答えてやれよ
351orz:2005/07/28(木) 15:38:37
>>349>>342の近くの人なんだよ
352デフォルトの名無しさん:2005/07/28(木) 21:20:28
俺、丁寧に答えてあげようと思っていろいろ資料しらべて、
長文の返事をオフラインで書いていたんだけど、

>答えられないなら反応しなくていいです

これ見てせっかくの長文Upする気無くして削除した。
同一人物じゃないかもしれんけどね、
とにかくヤル気なくした。
353デフォルトの名無しさん:2005/07/28(木) 21:24:20
ヤル気を無くした時は山芋に限るぜ
354デフォルトの名無しさん:2005/07/28(木) 21:37:18
>>353
精しく
355デフォルトの名無しさん:2005/07/29(金) 18:46:20
>>354
消化を助け、身体の抵抗力を高め、気力を増し、筋肉を強めるという働きをします
356デフォルトの名無しさん:2005/07/29(金) 20:17:41
>>355
アホか。単に消化がいいので、体内で素早くブドウ糖に消化吸収されて
脳の代謝が良くなるってだけの話。
357デフォルトの名無しさん:2005/07/29(金) 20:32:02
(0w0)ウェーイ
358デフォルトの名無しさん:2005/07/30(土) 20:14:00
>>356
大根とかに入ってる消化酵素アンナミラーズが含まれてるので
消化がいい というより、消化そのものを助けるのです
あと、これは熱を加えると壊れちゃうので生で食うのが良いです。
大根卸しを山芋に加えて消化酵素2倍、さらに普段より2倍高くジャンプ
さらに3杯おかわりすることにより
359デフォルトの名無しさん:2005/07/30(土) 20:37:44
アンナミラーズ?

ネタナノカマジナノカコピペナノカ…
360デフォルトの名無しさん:2005/07/30(土) 20:48:17
アンミラーズを最初に思い浮かべた俺を笑え
361デフォルトの名無しさん:2005/07/30(土) 21:46:07
アミラーゼのことですかね。
アンミラもだいぶ店舗が減って、さびしいもんだ。
362デフォルトの名無しさん:2005/07/30(土) 23:17:14
あと、血糖値を下げるから糖尿にもけっとう効果あるぞ

↑血糖と結構をかけてるんだ。 山芋だけにな。 うへへ
363353:2005/07/30(土) 23:54:09
俺の意図が伝わるためには
山芋じゃなくてむしろスッポンとでも書くべきだったのか…

まぁ結果オーライって事でひとつ。
364デフォルトの名無しさん:2005/07/31(日) 06:33:23
>>279の本、読んだ人、感想とかもっと詳しく教えて。
この作者のHP見てると、なにやら所々おかしなことが書いてあって「本当にわかっとんのかコイツ?」という感じなんだけど?
いまさら16ビットやBIOS使用が多いのが気になる。ネタ(知識?)があまりないのでむりやりページを埋めたのか。
365デフォルトの名無しさん:2005/07/31(日) 15:34:44
アミラーゼのとこはジアスターゼでしょ
366デフォルトの名無しさん:2005/07/31(日) 17:16:59
>>365
確かに苦沙弥っちはジアスターゼ大好きっ子だったが
今じゃジアスターゼもアミラーゼと呼ぶのだ
367デフォルトの名無しさん:2005/07/31(日) 19:16:59
お前ら博識だな
368デフォルトの名無しさん:2005/07/31(日) 20:53:49
369デフォルトの名無しさん:2005/07/31(日) 21:01:26
u○○○は駄目だろ。何を勘違いしたのか完全に思い上がっている。
取り巻き連中相手にのぼせちゃっているしな。
あんな内容のことを自慢げに話してもねぇ。。。。w
所詮はその程度ということを証明している。
370デフォルトの名無しさん:2005/07/31(日) 21:04:22
unko?
371デフォルトの名無しさん:2005/07/31(日) 21:11:58
>>369
お前誰に話してんの?
言ってることも意味不明だし。
372デフォルトの名無しさん:2005/07/31(日) 21:21:33
>>369はとりあえず塩兄ちゃんということで
373デフォルトの名無しさん:2005/07/31(日) 22:14:57
>>371
アンミラーズってアンナミラーズのこと?
374デフォルトの名無しさん:2005/08/01(月) 15:44:47
x = 100 - x;
みたいなコードってどう書くのが速いかな?
sub eax, 100;
xor eax, 0xffffffff;
inc eax;
みたいなの考えたけど…
375デフォルトの名無しさん:2005/08/01(月) 15:54:22
neg eax
376デフォルトの名無しさん:2005/08/01(月) 15:59:18
neg eax
add eax,100
377374:2005/08/01(月) 16:04:28
そうか、negってそういう風に使うんだ。
ありがとう。
378デフォルトの名無しさん:2005/08/01(月) 18:15:43
幼稚園児でもできる式の変形なんだが・・・
379デフォルトの名無しさん:2005/08/01(月) 18:30:44
>>378
幼稚園児に文字式の概念はないがな
380デフォルトの名無しさん:2005/08/01(月) 18:48:40
今の幼稚園児はどれだけレベル高いんだ
381デフォルトの名無しさん:2005/08/01(月) 19:03:49
いや、アセンブラだから低レベルだ
382デフォルトの名無しさん:2005/08/01(月) 19:15:45
山田君座布団全部持ってって
383デフォルトの名無しさん:2005/08/01(月) 22:47:08
山田君今時の幼稚園児連れて来て(;´Д`)ハアハア
384デフォルトの名無しさん:2005/08/07(日) 21:59:59
あやふやなので、オーバーフローフラグについてまじめな質問します。
例えば、以下のコードがあったとします。
mov al,0
sub al,80
これは、0 - 80(-128)を表しているので 0 - 80 = 0 - (-128) = +128となり
alは-128から127までの範囲までしか表せないので結果の+128はオーバーフロー
という意味でよいでしょうか?
"プログラミングの力を引き出す本"には、引き算は足し算にしてから計算すると書いてあったので
-(-128)の部分の2の補数をとると-128(10000000)になります。
つまり 0 - 80 = 0 - (-128) = 0 + (- 128) = -128になりオーバーフローフラグが
立たないことになるんですが。
このへんが意味が分からないです。
後、キャリーフラグは桁が上がったらセットされるって書いてあるけど
0101 + 0100 は1001なのでこれはキャリーフラグがセットされるんでしょうか?
385デフォルトの名無しさん:2005/08/07(日) 23:12:49
>>384
おいおい、負数の減算は加算だぞ。
> つまり 0 - 80 = 0 - (-128) = 0 + (- 128) = -128になりオーバーフローフラグが
じゃなくて、     ~~~~     ~~~~~
0 - 80H = 0 - (-128) = 0 + 128 = +128
最初の式と一緒だよ。

CFはレジスタの幅を超える桁上がり・桁下がりの発生を意味してるから、
個々bitの桁上がりとは関係ない。
386デフォルトの名無しさん:2005/08/07(日) 23:18:10
そういえば Z80には half carryフラグがあったな。
387デフォルトの名無しさん:2005/08/07(日) 23:25:09
>>385 ありがとう。CFについては納得できました。
でも、-1の2の補数(-(-1))とったら1です。
負数の引き算って2の補数をとって足し算ってだめなの?
-128でやると1000 0000から反転して0111 1111
+1して1000 0000になるから結局 -128になってしまう
からなんか変だ。
388デフォルトの名無しさん:2005/08/07(日) 23:48:37
>>387
それは、2の補数を取ったあとのビット列を、
無理矢理符号付き10進数で見るという間違いを犯してるから。

「2の補数を取る」というのは符号付き数と符号なし数の変換だから、
-128 = 80H の2の補数とったあとは、符号なし数として、つまり80H = 128として計算しないといけない。
(この過程で、実行する演算が減算から加算に変化してることを忘れないように)

10000000Bは2の補数とってもたまたま10000000Bだけど、
ビット列が同じでも値の意味は全く違う。
このへんが符号付き整数の一番ややこしいところではあるけどね。
389デフォルトの名無しさん:2005/08/07(日) 23:49:29
>>386
80x86にもAFってのがあるね。
390デフォルトの名無しさん:2005/08/07(日) 23:51:49
>>388
> 「2の補数を取る」というのは符号付き数と符号なし数の変換だから、
この表現はちょっとまずいか・・・しかし、いまいちいい説明を思いつかない/思い出せない。
391デフォルトの名無しさん:2005/08/08(月) 00:05:27
>388 どうもありがとう。
その説明(符号付き整数と符号なし整数の変換)で結構すっきりしました。
フラグの勉強はこれくらいにして、次に進みます。
392デフォルトの名無しさん:2005/08/08(月) 00:25:03
なんというか、2chで質問者と回答者が共に親切にやりとりを
しているのを久しぶりに見て、なぜだか涙が出そうになった
393デフォルトの名無しさん:2005/08/08(月) 08:55:48
>>392
おれも。号泣してしまった。
394全米:2005/08/08(月) 16:51:59
はいはいないたないた
395デフォルトの名無しさん:2005/08/08(月) 16:53:35
質問男?
396デフォルトの名無しさん:2005/08/09(火) 01:56:21
>>391
安心汁。
質問はひとつだが
おまいには2ちゃんと蛆TVがついてるぞ。
397364:2005/08/13(土) 05:49:15
>>368
できれば直接的な意見が聞きたい。
完全匿名でないと本音が出せないと思う。

>具体的に

例えばこれ。
>ttp://ruffnex.oc.to/kenji/crackme/reverse_engineering.html

この中でパックしたプログラムのアンパックを行っているが、これは本当のアンパックではない。
インポートテーブルの再構成をバイナリエディタで行っているが、パッカーが作った(ヘッダで明示された)インポートテーブルは最低限のものだから、オリジナルのインポートテーブルも書き換えないとダメ。
そうでないとWinXPのバージョンやモジュール構成がちょっと変わっただけで動作しなくなる。Win9xの場合はデバッグプロセスでクリエートされるとAPIフックされるのでこの再構成法では全く動作しない。
そもそもUPXがルックアップテーブルを削除してしまうので再構成が必要になるわけで、ルックアップテーブルがあればそんなことをする必要はないわけなのだが、そのことの特殊性についても触れていない。
PEフォーマットがよくわかってないとしか思えない。
PEについてはリンクがあるが、アレなサイトで間違いだらけ。

暗号化の部分も色々変。

>フリーズさせるのはまずいので、あらかじめ復号化されたデータのチェックサムを取っておきます。そしてそのチェックサムと比較して正しければ、99%の確立で正しいパスワードが入力されたと判断して、復号化したプログラムを実行します。

せっかく正解かどうか容易にわからないように作っているのに、チェックサムで判断してしまえば台無し。フリーズさせるのが正解。

>パスワードを探しあてるには、アルゴリズムを再現して、総当りでキーと平文を探すしかありません

総当たりの場合、別にアルゴリズムは再現しなくてもSDKレベルプログラミングの基本ができればOK。

>この方法は、パスワード入力以後のプログラムをデータとしてマシン語で持っておかなければならないので、大きなプログラムだとまず実用的ではありません。

この方法に関しては、フリーズの時点で実用的には問題ありだが、パッカーと同様の技術なので、大きなプログラムであってもそのこと自体に問題はない。nasmとかでincbinとかもできるし。
398デフォルトの名無しさん:2005/08/13(土) 05:52:09
>ttp://ruffnex.oc.to/kenji/text/api_hook/

>同じIATでも、前回のはPEフォーマットとして構成されたバイナリデータファイルのIATを変更したわけですが、
>今回のは、すでにメモリに読み込まれた状態でのIATのアドレスを取得しているので、同じインポートアドレステーブルであることに変わりはありませんが、微妙に違うかもしれないです。
>いや、インポートアドレステーブルであることに変わりはないですけどね、
>でもメモリに読み込まれた状態とじゃちょっと違う気がしなくもないような...あー、なんかややこしくなってきたので、この辺で止めときます(^^;。

PEがよくわかっていないとしか思えない。

そしてここから取得できるサンプルプログラム
>ttp://ruffnex.oc.to/kenji/text/api_hook/API_Hook.zip

この中の
>API_HOOK.CPP
で、
>// アドレスが一致したので、インポートセクションのアドレスを書き換える
と書いてある辺り。

システムDLLの事を全く考慮していないし、ちょっと変。
VirtualProtect()を使っているが、システムDLLには通用しないのでそれらをよけないと無駄。
逆にもしも通用した場合、あらゆるプロセスが共有しているわけだからフックDLLが入り込んでいないプロセスが死ぬ。少なくともWin98ではライト可能セクションにインポートテーブルを置いているのがあるから確実に死ぬ。
次の行でWriteProcessMemory()を使っているが無意味。ただ代入すべき。というかWriteProcessMemory(GetCurrentProcess())ならそもそもVirtualProtect()は必要ないわけだが。

このソースには他にもPFNMESSAGEBOXWの定義などバグあり。

まだあるけど、もっと書く?

まあ、扱っている内容自体は悪くないんだけどね。
399デフォルトの名無しさん:2005/08/13(土) 07:50:45
>>398
>API_HOOK.CPP
の該当部分については、別段変なことはしてないというか、
AdvancedWindowsに登場する定番コード。
代入ではなくWriteProcessMemory()を使ってるのは、
WPM()ならPAGE_READONLYが付いてもWPM自信が属性書き換えて
データを書き込むからだそうな(そういう意味ではVirtualProtect()呼ぶのは無意味)。

あと、プロセスメモリ内にある以上はシステムDLLだろうが何だろうが書き換えはできるし、
(そうでなきゃKERNEL32.DLLにブレークポイントしかけられない)
copy on writeでそのプロセス独自のコピーが作られるから、他プロセスには影響しない。
(このへんもAdvancedWindowsに記載あり)


件の本については先週実物みてきたけど、
あの程度の内容でハードカバーって時点でネタ確定、ざっとながめただけで置いてきた。
金もってる初心者なら買ってもいいんじゃない? いい勉強だと思うよ'`,、'`,、('∀`) '`,、'`,、
400マイク ◆yrBrqfF1Ew :2005/08/13(土) 08:13:05
アセンブリというのは
シェーダアセンブリの方か?チマチマした方か?
401デフォルトの名無しさん:2005/08/13(土) 08:21:57
ドトネトのオブジェクトにきまってるジャマイカ
402デフォルトの名無しさん:2005/08/13(土) 08:40:03
>>399
要約すると「『いまどきの…』とどっこいどっこい」でFA?

403デフォルトの名無しさん:2005/08/13(土) 10:24:18
いくら何でもそこまで酷くはないw
399と同じく「金持ってる初心者」にはいいかと。

『いまどき〜』は、アセンブリ初心者は無論、誰にとっても糞
404デフォルトの名無しさん:2005/08/13(土) 10:54:19
橋本和明のアセンブラ本は内容がひどすぎるからね・・・
パソゲー解析スレでも「買ったら後悔間違いなし」とか言われてるし。
405デフォルトの名無しさん:2005/08/13(土) 15:29:12
金を持っている初心者だから買ってみた。
ていうかそれほど高くないし、ページ数も思ったより多くない。

プログラミングやるのは初めてだけど、予備知識が少しあれば
普通に読み進めていける平易な内容。

逆に言えばこのスレの人には物足りないかもしれない。
現在、序盤のdebugコマンドを使って命令の動きを見ていくところ
406デフォルトの名無しさん:2005/08/13(土) 23:58:47
まだ序盤かよ
407デフォルトの名無しさん:2005/08/16(火) 15:40:56
アセンブリ言語はストイックですか?
408デフォルトの名無しさん:2005/08/16(火) 15:53:48
エロティックです
409デフォルトの名無しさん:2005/08/16(火) 16:34:39
A センズリ言語って?w
410デフォルトの名無しさん:2005/08/16(火) 16:51:58
それはイカクサイックです
411デフォルトの名無しさん:2005/08/16(火) 19:09:35
イカッセル
412デフォルトの名無しさん:2005/08/20(土) 08:02:19
621 名前:ppp1826.va-east.my-users.ne.jp 投稿日:2005/08/20(土) 07:53:27 ID:eLPWq2Y20
お願いします・・・
【板名*】 PC等->プログラム
【スレ名*】 アセンブラ… (´・∀・`)ヘー
【スレのURL*】 http://pc8.2ch.net/test/read.cgi/tech/1101390110/l5
【名前欄】 397,398
【メール欄】
【本文*】↓
>>399

>>代入ではなくWriteProcessMemory()を使ってるのは、WPM()ならPAGE_READONLYが付いてもWPM自信が属性書き換えてデータを書き込むからだそうな(そういう意味ではVirtualProtect()呼ぶのは無意味)。
だからそう書いてるんだが。>>自信

>>あと、プロセスメモリ内にある以上はシステムDLLだろうが何だろうが書き換えはできるし、
本当?そりゃ悪かった。今XPが使えないんで試せないんだが、少なくともWin98ではシステムDLL(のリードオンリー属性変更)にVirtualProtect()は通用しない。

>>そうでなきゃKERNEL32.DLLにブレークポイントしかけられない
だからWin98では仕掛けられないわな。
まあDRxならできるが。

>>copy on writeでそのプロセス独自のコピーが作られるから、他プロセスには影響しない。
本当?そりゃ悪かった。今XPが使えないんで試せないんだが、少なくともWin98では共有されている。
例えばKERNEL32やUSER32は、データやインポートテーブルは共有セクション上に置かれているので、例えプロセスごとにコピーが作られてもデータは共有される。
すなわちcopy on writeはコード(とかリソース等の)部分だけ、というわけだが。
Win98で共有されててWinXPで共有されていないって事は無いと思ったんだが、違うんか?
413デフォルトの名無しさん:2005/08/20(土) 08:31:36
>XPが使えないんで試せないんだが
試せよw
それで全部解決するだろ
414デフォルトの名無しさん:2005/08/20(土) 11:06:56
>>412
> >>そうでなきゃKERNEL32.DLLにブレークポイントしかけられない
> だからWin98では仕掛けられないわな。

ちょっと資料あさってみたけど、Win98だと0x80000000〜0xBFFFFFFFは全プロセス共有なのか。
とすると、ブレークポイントはしかけたらおかしなことになりそうだな。しらんかった。
ちなみに2000だと0x70000000あたりにロードされて完全にプロセス固有なので、
どうにでもできるし、なにしたって自プロセスにしか影響しない。

> 例えばKERNEL32やUSER32は、データやインポートテーブルは共有セクション上に置かれているので、
> 例えプロセスごとにコピーが作られてもデータは共有される。

データはともかく、IATは(KERNEL32等を)インポートする側が持ってるエリアだから関係なくないか?

あと、上記の通り2000(というかNT系一般)はシステムDLLを共有エリアに置かないので、
システムDLLのデータはプロセス間で共有されない。
415デフォルトの名無しさん:2005/08/20(土) 20:19:42
Adv(ry
416デフォルトの名無しさん:2005/08/25(木) 20:59:39
nasmんのアセンブラ環境を集めるがしんどい…
とりあえず本体はそろった!サンプル漁ってプログラミングだ!
サンプルが無いよ…
挫折しそうです。
417デフォルトの名無しさん:2005/08/25(木) 21:07:07
なにがしたいのかわからんけど、
勉強したいだけなら、適当なEXE逆アセンブルして眺めてみれば?
418デフォルトの名無しさん:2005/08/25(木) 22:05:55
>>416
んなアホな。
419デフォルトの名無しさん:2005/08/25(木) 23:02:31
Linuxならasmutilsがサンプルに使えるけど、同様のやつがWin32用にないかな…
420デフォルトの名無しさん:2005/08/25(木) 23:25:45
Windowsならとりあえずインラインアセンブラで一通りのこと覚えて、次に関数丸ごとアセンブラで書く程度で充分じゃないか?
421デフォルトの名無しさん:2005/08/26(金) 08:19:24
以前このスレで「アセンブラはコンパイラの一種」
と言ったらなんかめっちゃ叩かれたんだけど、
オライリーの何とかって本を立ち読みしたら同じ事が書いてあったぞバカどもが
422デフォルトの名無しさん:2005/08/26(金) 08:40:00
【アセンブラはコンパイラの一種】の検索

PC等 [プログラム] アセンブラ… (0w0)ウェーイ 421
PC等 [プログラム] 推薦図書/必読書のためのスレッド PART 19 767

おかしいなぁ、このスレは過去スレも全て取得済みのはずなんだが……
423デフォルトの名無しさん:2005/08/26(金) 09:22:22
正確になんて言ったかまで覚えてない。
とにかくアセンブラはコンパイラだという意味のことを言った。
424デフォルトの名無しさん:2005/08/26(金) 11:40:34
>>423
なんだ、暇だから祭りを誘発したかったんじゃないのか。
2chで学問上の分類なんて議論しても意味ないから
いいネタ振りだと思ったけど。

ヘルメットが帽子かどうかみたいなもんだな
425デフォルトの名無しさん:2005/08/26(金) 13:30:37
コンパイラってのは "C++ Compiler" とかってかかれんだよな。
C++に限らず星の数ほどある言語でも "LANG Compiler" だ。
でもアセンブラだけは "x86 Assembler" であって、"x86 Compiler"とは呼ばない。
オライリーの件も、「ある側面からみればアセンブラもコンパイラの一種といえなくもない」のような文が
脳内で"変換"されてできた例だろう。ふむ、そこまで高度な変換はコンパイルと言えなくもないね。

コンパイラとアセンブラには学問的な違いがあり、
世間的にも違いがあると認知されているから区別されるわけだが、
>>423はそれを覆そうという。いやはや、まったく正気の沙汰とは思えない。
426デフォルトの名無しさん:2005/08/26(金) 13:34:39
両方まとめてトランスレータだから似たようなもんだ
427デフォルトの名無しさん:2005/08/26(金) 13:50:19
>>416
漏れもつい最近nasm使い始めたばっかりだけど、
アセンブラ環境なんてnasmとgcc (MinGW)を用意するだけじゃん。
gmakeもあったほうがいいかな。

nasmのサンプルだったら午後のこ〜だあたりはどうだろう。
Windows用のMakefileとnasm.cfgを流用させて貰ったから、
書き始めが凄く楽だったよ。

ほんとにまだ何も分からないレベルなら、最初はコンパイラの
アセンブリ出力を眺めることから始めたら?
gccなら -S -masm=intel で出せるよ。
428デフォルトの名無しさん:2005/08/26(金) 13:52:23
ナイフはチェーンソーであるとの主張?
429デフォルトの名無しさん:2005/08/26(金) 15:23:53
最近のコンパイラはムチャクチャな最適化をしかけてくるので予備知識なしにアセンブラ出力なんか読んだら余計混乱するぞ。
430デフォルトの名無しさん:2005/08/26(金) 15:26:26
最適化しなきゃいーじゃん。
431デフォルトの名無しさん:2005/08/26(金) 16:43:53
>>430
それでも読めない罠
432デフォルトの名無しさん:2005/08/26(金) 17:06:35
>>423
単にアセンブラは"アセンブラ"であって、"コンパイラ"じゃないってことじゃないの?
「俺はパナの"Walkman"使ってる」っつたら叩かれたのと一緒で。
433デフォルトの名無しさん:2005/08/26(金) 17:12:13
どっちかと言うと、「漏れは布製の筆箱を使っている」と言うような違和感かと。
434デフォルトの名無しさん:2005/08/26(金) 17:27:52
アセンブリ
アセンブル
アセンブラ

英語の比較級みたいだ
435デフォルトの名無しさん:2005/08/26(金) 17:36:05
いや、全部英語だし。活用じゃなくて接尾辞だが。
436デフォルトの名無しさん:2005/08/26(金) 17:39:35
>>432
パナのウォークマンはないけど、アセンブラはコンパイラの一種。
パナのポータブルプレーヤをウォークマンと言うことはあるけど、
アセンブラをコンパイラと言うことはほとんどない。
どこが一緒なの? まったく逆じゃん。
437デフォルトの名無しさん:2005/08/26(金) 18:47:44
アセンブラとコンパイラは、人間が読みやすい言語を機械語に変換するという意味では大差ないが、
技術的な本質が全く異なるので、漠然とした違和感を覚える面々が多いのは全く当然。
「コンパイラの一種」ではなく、「トランスレータの一種」なら誰も文句言わないだろうけどね。

アセンブラのニーモニックは、基本的には1:1で機械語に対応していて、アセンブル行程も
ニーモニックに相当する機械語を単純に組み立てるだけ。ニーモニックで記述されている内容を
アセンブラが勝手に変更したりすることはありえない。
(原則として、だけど。実際にはアライメント調整や遅延分岐にpad入れたりすることはある)

コンパイラは、コンパイラ言語で書かれた内容を機械語(または中間形式)に変更するが、
機械語での実現方法は1つではないので、アセンブラとは違ってさまざまな結果になりうる。
むしろ、いかに良質な機械語のコードを出力するかが歴史的に競われている(最適化と言う)。

この、入力に対して処理系が意味的な変更を加えて出力するか否か、という違いが、
アセンブル(組み立て)と、コンパイル(編集)の本質的な違い。
アセンブラの出力には創意工夫というのはありえないけど、
コンパイラのそれは芸術と言っても過言ではない。
438ネタ投下:2005/08/26(金) 19:14:48
マクロアセンブラはコンパイラだ。
439逆もまた真ですか?:2005/08/26(金) 19:48:16
コンパイラはアセンブラだ。
440デフォルトの名無しさん:2005/08/26(金) 20:49:25
世の中には最適化アセンブラとか最適化リンカってのもあるからなー
441デフォルトの名無しさん:2005/08/27(土) 00:06:28
その手の「最適化」はアセンブラ/コンパイラとは別の話だろ?
実行バイナリに対して行ってもいいわけで、ツールに属すると思うが。
442デフォルトの名無しさん:2005/08/27(土) 00:10:18
>>437
ドラゴンブックの1.1の最初に
「コンパイラは、簡単にいうと、ある言語で書かれたプログラムを読み込んで、
それを等価な別の言語のプログラムに翻訳するプログラムである.」
とある。

アセンブラは、アセンブリ言語から機械語に翻訳するプログラムなので
コンパイラの一種である。

まぁ、そのあとでは
「コンパイラは、Fortranのような原始言語を、特定の計算機の機械語あるいは
アセンブリ言語へ翻訳するプログラムである、と一般に考えられている.」
とあるので、アセンブラをコンパイラと呼べば混乱するかも。
443デフォルトの名無しさん:2005/08/27(土) 00:24:23
>>442
アセンブラは基本的に翻訳をしない。ただ表記を変えるだけ。
444デフォルトの名無しさん:2005/08/27(土) 00:27:03
アセンブリ→2進数は立派な翻訳だろ・・
445デフォルトの名無しさん:2005/08/27(土) 00:31:13
アセンブラはコンパイラだという結論が最初に出てるのに、
なにをゴタゴタしているのかね。
446デフォルトの名無しさん:2005/08/27(土) 00:46:19
アセンブリ
アセンブル
アセンブラ

この違いを分かっていない低学歴がいるぽw
しかも、そんな香具師が本を出しちゃっているのが痛い
447デフォルトの名無しさん:2005/08/27(土) 00:58:18
>>427
>gccなら -S -masm=intel で出せるよ。
nasmは受け付けない罠
448デフォルトの名無しさん:2005/08/27(土) 01:11:32
>>436
ウォークマンはSONY製ヘッドホンステレオの商標である。
従って、パナのヘッドホンステレオはウォークマンではないし、そうとは呼ばない。
アセンブラはアセンブリ言語の翻訳系であって、コンパイラ言語の翻訳系であるコンパ
イラとは別物である。故に、アセンブラはコンパイラの一種ではない。
ひょっとして釣りか?

実際のコンパイラがそのような動作をするかどうかはさておき、
高級言語→(コンパイル)→アセンブリ言語→(アセンブル)→機械語
という流れが基本。
ハンドアセンブルとかハンドコンパイルをやった事のある香具師なら分かりそうだが。
449デフォルトの名無しさん:2005/08/27(土) 01:13:35
アセンブリ言語と機械語は1:1で相互変換できる。
コンパイラ言語と機械語は1:1で相互変換できない。

実際の処理系は、実行ファイル作るための書式をやマクロを持ってるから
無条件に成立するわけではないけど、本質的な部分で全く違う。

ま、素人にはどうでもいい違いなのは確かだが。
450デフォルトの名無しさん:2005/08/27(土) 01:16:17
本にコンパイラだって書いてあるんだからコンパイラだよ。
素人が知ったかぶったってもダメダメ。
451デフォルトの名無しさん:2005/08/27(土) 01:17:48
> ウォークマンはSONY製ヘッドホンステレオの商標である。
> 従って、パナのヘッドホンステレオはウォークマンではないし、そうとは呼ばない。

ウォークマンではないが、そう呼ぶこともある。
それぐらいわかれよ世間知らず。ひょっとしてアホなの?
452デフォルトの名無しさん:2005/08/27(土) 01:26:33
たとえ話で人を説得しようとするのは愚か者の所行である。

なぜなら、些細などうでもいい不適合部分を突っ込まれて、
議論がどうでもいい方向へ向かうから。
453デフォルトの名無しさん:2005/08/27(土) 01:31:22
>>452
激しく同意。悪いのは>>432
「些細などうでもいい不適合部分」ではなく
重要な不適合部分を突っ込んだ場合も、
例え話合戦に発展して議論が迷走していく。
454デフォルトの名無しさん:2005/08/27(土) 01:54:17
>>449
SPARCとかのアセンブラには命令スケジューリングをするものがある。
だから、アセンブラだから一対一の相互変換が可能とは限らない。
らしいYO
455デフォルトの名無しさん:2005/08/27(土) 01:58:44
○ 譬え話
△ 喩え話
× 例え話
456デフォルトの名無しさん:2005/08/27(土) 02:18:22
>>454
ニーモニックレベルでは基本的に対応してるでしょ、そういう話。

実際の処理系・実装系の話をするなら、MIPSあたりも遅延スロットにNOPいれたりとかするし、
x86は違うニーモニックが同じ機械語だったりする(シノニム。左シフトSHL/SALとかね)。

言葉遊びがしたいのならそれでもいいけど、
物事の本質と実例の例外は区別しておかないと、実際のところ使い物にならないよ。
457デフォルトの名無しさん:2005/08/27(土) 02:33:40
プロって単純なルーチンを書く時ってコンパイラなんかに任せておけんとばかりにアセンブリ言語で書いてしまうのですか?
458デフォルトの名無しさん:2005/08/27(土) 02:40:39
そういうことをやるのは、暇な素人と、偏執狂と、OS書いてる人だけ。
459デフォルトの名無しさん:2005/08/27(土) 02:51:48
変態だけですか。なるほど。
460デフォルトの名無しさん:2005/08/27(土) 04:50:18
偏執狂は解るが、暇な素人と、OS書いてる人まで変態の範疇に入れるのはどうかと・・・
461412:2005/08/27(土) 06:29:09
>>399
XPで確認したよ。確かにアンタの言う通りだった。NT系はシステムDLLエリアが存在しないのね・・・

オレの知識が古かったようだ・・・ちゃんと確認しなかったオレの誤り。

ゴメン。そのあたり訂正させてくれ。

すなわち、API_HOOK.CPPのシステムDLLうんぬんに関しては、オレの書いたのは9xの場合に限る、ということで・・・

だから作者に責任はないわな。

ただ、他のところは間違ってないと思う。

>>414
>データはともかく、IATは(KERNEL32等を)インポートする側が持ってるエリアだから関係なくないか?

なぜか(PEヘッダ上)共有フラグがついている。どうも共有DLLとしてロードできるにはいくつか条件があるようで、例えば書き込み可能フラグがついているセクションは共有フラグも一緒につけないとロード失敗するみたい。
462デフォルトの名無しさん:2005/08/27(土) 06:50:39
いいからAdvancedWindows嫁
463デフォルトの名無しさん:2005/08/27(土) 09:39:11
>>457
バイナリを直接打った方が速い事もある
464デフォルトの名無しさん:2005/08/27(土) 10:10:16
ないないw
465デフォルトの名無しさん:2005/08/27(土) 10:20:03
>>463
昭和のプログラマ発見!
466デフォルトの名無しさん:2005/08/27(土) 14:30:46
パンチに自分で穴あけたほうが速(ry
467デフォルトの名無しさん:2005/08/27(土) 16:13:36
アセンブラ技術者は
コンピュータ界を担う重要な人材であるのに
このスレで見るレベルの低さは何事か?
技術立国日本は終わった。
468デフォルトの名無しさん:2005/08/27(土) 16:15:36
「このスレで見る」からだよ
469デフォルトの名無しさん:2005/08/27(土) 16:18:50
2ちゃんで業界のレベルを計ろうとするなよw
470デフォルトの名無しさん:2005/08/27(土) 16:29:18
DAONE-
471デフォルトの名無しさん:2005/08/27(土) 23:22:18
>>467
お前の日本は随分狭いなw
472デフォルトの名無しさん:2005/08/28(日) 00:41:10
コンピュータ技術の中でも特に高度な専門知識が必要とされるアセンブラ
に素人の初心者が興味を持ち書き込みをしている、このスレを見れば
技術立国日本の将来は明るいな。
473デフォルトの名無しさん:2005/08/28(日) 02:02:42
ゲームのクラックには必須の知識だしな
474デフォルトの名無しさん:2005/08/28(日) 02:40:06
プログラミングの本だと思って読んだらゲーム改造本でガッカリすることが多い。
475デフォルトの名無しさん:2005/08/28(日) 02:50:39
箱入りの5000円ぐらいの本あったけどあれどうなの?
立ち読みできなくて買いあぐねてるんだけど
476デフォルトの名無しさん:2005/08/28(日) 02:51:57
アセンブリ言語の教科書か
あれは、
477デフォルトの名無しさん:2005/08/28(日) 07:08:07
何だよ!
478デフォルトの名無しさん:2005/08/28(日) 08:47:10
>>475
16bitプログラミングに異様にページ使ってるのが萎える
ま、かなりいい内容でつ
479デフォルトの名無しさん:2005/08/28(日) 11:21:14
迷ってる奴多いみたいだし、ちょっと本気で立ち読みしてくるか。
480デフォルトの名無しさん:2005/08/28(日) 11:29:25
>475
インラインアセンブラで最適化くらいしかしない漏れ的にはゴミだった。
481デフォルトの名無しさん:2005/08/28(日) 11:36:59
そりゃ良かったな
482デフォルトの名無しさん:2005/08/28(日) 12:29:28
インラインアセンブラは逆に最適化の妨げになるというのに…・・・
おまいレベルの最適化よりコンパイラに任せた方がずっと早いよw
483デフォルトの名無しさん:2005/08/28(日) 12:30:53
まだこんなやついるんだw
484デフォルトの名無しさん:2005/08/28(日) 12:52:52
コンパイラがあるからアセンブリプログラマはいらないと思う。
485デフォルトの名無しさん:2005/08/28(日) 16:41:50
>>482
カワイソス・・・
486デフォルトの名無しさん:2005/08/28(日) 17:11:01
Cellのようにvector型が出来たら
マジでインラインアセンブラいらねよな
487デフォルトの名無しさん:2005/08/28(日) 17:15:56
>>486
基本的に間違ってるよ君
488デフォルトの名無しさん:2005/08/28(日) 20:08:40
インラインアセンブリの内容も込みで最適化してくれないの?
489デフォルトの名無しさん:2005/08/28(日) 20:14:54
>>488
無理。インラインアセンブリのブロックで最適化がぶった切られる。
でもコンパイラの最適化より自分でやった方が速いなら使うべきだ。
>>482は最適化の才能がないからあんなこと言ってるだけだし。
490デフォルトの名無しさん:2005/08/28(日) 20:25:22
むしろインラインは、最適化をぶった切る為にあるんだろ?
ハードウェアのタイミング取ったり、書き込み保障のウェイト取ったりな。
491デフォルトの名無しさん:2005/08/28(日) 21:45:35
インラインアセンブリ記述を最適化するとかしないとか、喪前ら大丈夫か?

>>490
コンパイラが使ってくれない命令(SIMD系とか)を使うケースもあるな。
492デフォルトの名無しさん:2005/08/28(日) 21:53:56
最近ではSIMD命令なんかでもIntrinsicsで扱えるコンパイラのほうが多い気がするけどな。
CELLもそんな感じらしいし。
493デフォルトの名無しさん:2005/08/28(日) 21:54:30
はじめまして。今「アセンブリ言語の教科書」を読みながら
アセンブリ言語の勉強をしている初心者なんですが、
アセンブラって自作が可能なんでしょうか?
494デフォルトの名無しさん:2005/08/28(日) 22:01:03
自作可能じゃなきゃ、この世に存在せんだろ。
495デフォルトの名無しさん:2005/08/28(日) 22:01:08
よーく考えよー
496493:2005/08/28(日) 22:11:02
レスありがとうございます。
コンパイラを作るときのように、字句解析などを行ったりするんでしょうか?
それとも一行ずつ機械語に変換していくだけなんでしょうか?

もし変なことを言ってたらすいません。
497デフォルトの名無しさん:2005/08/28(日) 22:41:50
初心者杉
498493:2005/08/28(日) 22:56:41
ごめんなさい。
もう少し勉強してきます。
499493:2005/08/28(日) 23:30:13
「アセンブリ言語の教科書」にアセンブリ言語とマシン語の関係について書いていました。
何も調べずに質問して申し訳ありませんでした。
「アセンブリ言語の教科書を」を参考にもっと勉強しようと思います。
ご迷惑をおかけしました。
500デフォルトの名無しさん:2005/08/29(月) 00:27:06
>>492
確かに最適なコードを吐いてくれはするだろうが、
それが期待するコードである保証は全く無い。
精度落としても高速化したい場合とかね。
501デフォルトの名無しさん:2005/08/29(月) 00:36:06
>>500
いや、Intrinsicsって基本的に基本的に機械語命令と一対一で対応してるんだが。表記がCの関数になってるだけで。
502デフォルトの名無しさん:2005/08/29(月) 11:57:42
>>501
Intrinsicsはコンパイラの最適化が入る時がある。

x86命令の所要クロック計測スレ
http://pc8.2ch.net/test/read.cgi/tech/1103609337/22
503デフォルトの名無しさん:2005/08/29(月) 21:09:19
>>488-491
GCCではインラインアセンブリも最適化の対象になる。
504デフォルトの名無しさん:2005/08/29(月) 21:21:21
そらびっくり
505デフォルトの名無しさん:2005/08/30(火) 00:46:13
UCCのコーヒーは、もう少し糖分を最適化すべきだな。
506デフォルトの名無しさん:2005/08/30(火) 08:33:44
くっそー505より面白い事を考えようとしたが無理だった
507デフォルトの名無しさん:2005/08/30(火) 13:46:54
>>505
ふっ、価格優先パラメータ付けて最適化してるだろ。
508デフォルトの名無しさん:2005/08/30(火) 19:00:48
>>505
もっと構文糖を入れたほうがいい?
509デフォルトの名無しさん:2005/08/30(火) 21:49:00
アセンブラの勉強を趣味で始めてみたけどさっぱりわかんね
これを使いこなせる人ってすごい変態だと思った
510デフォルトの名無しさん:2005/08/30(火) 21:56:58
>>503
詳しく
511デフォルトの名無しさん:2005/08/30(火) 22:40:29
>>510
試してみれば?
GCCのインラインアセンブラは最適化の対象に成ってしまうが故に、
複雑な指定が必要。ウザい。
512デフォルトの名無しさん:2005/08/30(火) 22:45:45
>>509
そう思うのは君がアセンブラを必要とする
状況になっていないから。
アセンブラはCより1000倍簡単な言語。
513デフォルトの名無しさん:2005/08/30(火) 23:05:16
俺もレジスタの扱いが分からないよー
Cとの一番の相違点というか

どれ使うかは結構適当で良いのかな
中身は必ず戻さなきゃなのかな
514デフォルトの名無しさん:2005/08/31(水) 00:20:50
>>511
つ「volatile」
515デフォルトの名無しさん:2005/08/31(水) 02:30:55
>>513
関数電卓のメモリと思えばいい。
516509:2005/08/31(水) 18:54:26
>>513
同じ初心者さん?なんか仲間がいると安心するわ。
俺は今「プログラミングの力を生み出す本」で勉強してるけども
gasそのものよりgdbが何言ってるのか全然わからなくて混乱してる
517デフォルトの名無しさん:2005/08/31(水) 20:49:21
>>513
たとえばCALL命令で呼ばれたルーチンであれば、
RET命令で戻る時に元に(CALLで呼ばれた時点の状態に)戻しさえすれば、
どう使っても基本的には問題ない。
518デフォルトの名無しさん:2005/08/31(水) 21:35:40
>>515 >>517
ありがとうございます
と言うことはサブルーチン最初に、そのサブルーチンで使うレジスタの値を全てpush(M+)し、
サブルーチン最後に全てpop(MR MC)しなおすわけですか、結構大変ですねぇ

>>516
ちょっ、おまっ!同じ本じゃないですか「インテルCPUのGNUユーザへ」って奴だよね
実際はVC使っているのだけど、本の環境と違って複雑なアセンブラを吐いてくれるので参ってるよ…
それと「はじめての8086」で勉強してるっす
519デフォルトの名無しさん:2005/08/31(水) 22:32:12
>>518
よほどの心配性ならともかく、普通は全てのレジスタの値をCALLされる前の状態に戻す必要はない。
520デフォルトの名無しさん:2005/09/01(木) 00:12:56
関数の前後で変えちゃまずいのってebx, esi, edi, ebp, espだっけ?
521デフォルトの名無しさん:2005/09/01(木) 00:18:21
>>520
コンパイラによる。
522デフォルトの名無しさん:2005/09/01(木) 12:04:17
>>520
呼び出し規約による
523デフォルトの名無しさん:2005/09/01(木) 19:02:10
far jmpってどういう風に書くんだっけ?

jmp far 0x3000:0x0
ってかんじ?
524デフォルトの名無しさん:2005/09/02(金) 21:31:04
>>397-398の人、まだいますか?
できればリバースエンジニアリングやAPIフックだけじゃなく
そのHPの他の内容についてももっといろいろと突っ込んで欲しいのですが。
かなり勉強になるので。
525デフォルトの名無しさん:2005/09/03(土) 00:14:44
あ、専ブラ
526デフォルトの名無しさん:2005/09/03(土) 04:20:06
レジスタないプロセッサもあるよ
527461:2005/09/03(土) 05:45:30
>>414
>データはともかく、IATは(KERNEL32等を)インポートする側が持ってるエリアだから関係なくないか?
あっ、IATはDLL上のやつだから。
例えばUSER32上でKERNEL32からのインポートとか、NT系の場合KERNEL32上でNTDLLからのそれとか。

それと
>WriteProcessMemory(GetCurrentProcess())ならそもそもVirtualProtect()は必要ない
と書いてしまったが、これも9x系のみの話だった。
NT系はやはりVirtualProtect()が必要。不覚・・・
というか、代入を推奨。(負け惜しみ)
528デフォルトの名無しさん:2005/09/03(土) 08:00:47
>>461
おまえうざすぎ
ノイズバラ撒いてないでAdvancedWindows熟読しとけ
529デフォルトの名無しさん:2005/09/03(土) 09:24:21
だれかLoadLibraryを自前でかける人いませんか?

サンプルか資料のありかキボン

DLLを圧縮するタイプのツールは自己展開したあとで
似たようなことやってると思うんだが、どうやんのかワカンネ
530デフォルトの名無しさん:2005/09/03(土) 09:29:03
>>529
LoadLibraryを自分で書くなんて面倒なことは普通やらないよ。
普通GetModuleHandleからkernel32.dll指定でGetProcAddressして、
LoadLibrary自身を持ってくるハズ。
自分でLoadLibrary相当の事をやる場合はPEフォーマットとかの知識が必要。
UPXのソースを読むのが早いかも。
531デフォルトの名無しさん:2005/09/03(土) 09:39:43
UPXってLoadLibraryAとGetProcAddressはインポートしね?
532デフォルトの名無しさん:2005/09/03(土) 09:50:13
>>530
返事thx
メモリ上のイメージをDLLとして機能するようにしたいのです。

>>531
自己展開したイメージはメモリのどこかにあるでしょ。

LoadLibrary使うためにはいったんファイルに書き出さないといけないけど、
UPXで圧縮したDLLはそういうことやっていないと思う。

メモリ上のイメージのアドレス解決をLoadLibraryで出来るなら
話は早いのだが…
533デフォルトの名無しさん:2005/09/03(土) 14:45:08
>>532
CreateFileにFILE_FLAG_DELETE_ON_CLOSE付けてDLLを一時ファイルとして
作成する方法もある。
FILE_FLAG_DELETE_ON_CLOSEにGENERIC_READ, SHARE_READで
開いとけば一時ファイルをLoadLibraryできる。
一時ファイルをFreeLibraryした後にCloseHandleで閉じると勝手に削除される。
534デフォルトの名無しさん:2005/09/03(土) 14:52:07
FILE_ATTRIBUTE_TEMPORARYもいいんじゃないか?
535デフォルトの名無しさん:2005/09/03(土) 15:20:34
>>527
ああ、システムDLLがシステムDLLインポートする方の奴か。
(ユーザーモジュールがインポートする方かと思った)
まあAdvancedWindowsはほんとに良著なので、NT系でやるなら一読をお勧め。
高いけど値段なりの価値はある。

>>531
それは圧縮されてない外部のモジュールのインポート用かと。

>>532
LoadLibrary()はロードしたPEモジュールのハンドル(≒先頭アドレス)を返してるだけだから、
(実際は参照カウントの管理もやってるようなので厳密ではない)
きちんとPEの展開さえできるのなら、別段迷うようなことはないと思うけど。

PEの展開・構築法が分からないというのであれば、勉強しろとしか言えない。


遅レスだけど、「アセンブリ言語の教科書」眺めてきた。
デバッガで「本物の機械語」を実行させるってのはいい実例ではあるし、
記述も丁寧ではあるけど、時々おかしな日本語があったり、校正はいまいちかも。
何ぞのような悪書ではないけど、やっぱり金持ちにだけお勧めって感じ。
536デフォルトの名無しさん:2005/09/03(土) 21:53:39
>>535
>PEの展開・構築法が分からないというのであれば、勉強しろ

UPXのソース眺めてみます。どうもでした。
537デフォルトの名無しさん:2005/09/03(土) 22:24:48
あのーちょっと質問なんですが、
gdbってもしかして16bitや8bitのレジスタ(axとかal,ah)は見れないんでしょうか?
538デフォルトの名無しさん:2005/09/03(土) 22:38:47
>>537
eaxが見られれば十分だろ
539537:2005/09/03(土) 22:59:36
やっぱりeaxしか見れないんですね。
ありがとうございました。
540デフォルトの名無しさん:2005/09/03(土) 23:05:37
eaxが見えてればax, al, ahも見えてると言えるわけだが…
541デフォルトの名無しさん:2005/09/04(日) 00:02:00
おまえはメモリダンプが見えればクラスのメンバ変数値がわかるのかと
542デフォルトの名無しさん:2005/09/04(日) 00:03:24
>>541
判らんのか?
543デフォルトの名無しさん:2005/09/04(日) 00:52:38
レジスタに最適化された変数は、厄介。
544デフォルトの名無しさん:2005/09/04(日) 00:58:28
>>534
FILE_ATTRIBUTE_TEMPORARYでもいいけど自動削除されない。
あと、どっちもTerminateThreadとかの強制終了ではファイル残っちゃうから、
完全性を求めるなら自分でメモリからロードするしかないかと。
545デフォルトの名無しさん:2005/09/04(日) 01:15:15
>>541
パディングが入る可能性がある構造体と、レジスタを一緒くたにすんなよ。
eax と ax,al,ah の関係も知らないなんてど素人以下。
546デフォルトの名無しさん:2005/09/04(日) 01:42:54
>>541
メモリダンプだけじゃ厳しいけど、アセンブルリストがあればクラスのメンバ変数も分かるよ。

ただ、ここでメンバ変数が話題に出てくる脈略は分からない。
547デフォルトの名無しさん:2005/09/04(日) 02:16:08
そんなこともあろうかと思って漏れのPDAにはバイナリ値をdouble値に変換するプログラムを載せてあるぜ。
#勿論その逆もできるが。
548デフォルトの名無しさん:2005/09/04(日) 14:14:14
541のボケっぷりと総ツッコミにワロタ

>547
関数電卓に hex <-> float/double の変換機能があればいいのに。
549デフォルトの名無しさん:2005/09/04(日) 15:21:43
>461や>541が自分の無能ぶりを公表するスレはここでつか
550デフォルトの名無しさん:2005/09/04(日) 18:09:56
>>461は無知だが無能ではない。
>>541は単に無能。

この差はでかい。でかすぎるっ
551デフォルトの名無しさん:2005/09/05(月) 17:08:35
>>544
FILE_ATTRIBUTE_TEMPORARYとFILE_FLAG_DELETE_ON_CLOSEは組み合わせられるだろ。
強制終了の解決ではないが。
552デフォルトの名無しさん:2005/09/06(火) 07:42:06
アセンブラを勉強しなくてはならなくなりました。
お勧めの本や勉強方法があったら教えていただけませんか?
553デフォルトの名無しさん:2005/09/06(火) 09:19:29
>>552
ワンボードマイコンとクロス開発環境。
コレ最強。
554デフォルトの名無しさん:2005/09/06(火) 09:24:21
アスキーからEX-80だかのワンボードマイコンのエミュレータがCDでついた書籍が出てなかったっけ?
555デフォルトの名無しさん:2005/09/06(火) 10:25:15
「はじめての8086」が一番
556デフォルトの名無しさん:2005/09/06(火) 10:35:48
アセンブラだけは、体で覚えないと身に付かない。
557デフォルトの名無しさん:2005/09/06(火) 11:11:28
アセンブリやりすぎてCとかがわからなくなってきたおw
558デフォルトの名無しさん:2005/09/06(火) 11:44:27
>>551
組み合わせてどうするの?
この方法はどのみち一度ファイルに吐くんだし。
559 :2005/09/06(火) 15:02:53
アセンブラとbrainfuckってどっちが難しい?
560デフォルトの名無しさん:2005/09/06(火) 16:00:36
brainfuckは難しいんじゃなくてマンドクサイだけ。
561デフォルトの名無しさん:2005/09/06(火) 16:28:48
アセンブラの方が簡単だよ
562デフォルトの名無しさん:2005/09/06(火) 20:12:43
アセンブラの方が楽に一票。
563デフォルトの名無しさん:2005/09/06(火) 20:30:06
つーか比べるなw
564デフォルトの名無しさん:2005/09/06(火) 20:51:15
書き/読みにくさトーナメントでもやるか。
出場はアセンブラ、BrainF**k、Unlambda、WhiteSpace、他に何かある?
565デフォルトの名無しさん:2005/09/06(火) 21:24:00
読みにくさと言ったら括弧だらけのLISP・・・と言ったら一部で怒られるな。
FORTHはその上を行くかな。
566デフォルトの名無しさん:2005/09/06(火) 21:39:40
>>564
アセンブラとかBrainF*ckなんぞ普通の言語じゃん
WhiteSpaceはさすがにネタ言語だけどな

俺としては全力でprologを推すね。
567デフォルトの名無しさん:2005/09/06(火) 22:01:00
C++のtemplate・・・
568デフォルトの名無しさん:2005/09/06(火) 22:09:36
LISP の括弧はそれ程障壁にはならなかった
むしろマクロが…
569デフォルトの名無しさん:2005/09/07(水) 00:35:41
Z80を積んだシャープかカシオのポケコンで勉強が一番
入門には簡単で良いかな?
570デフォルトの名無しさん:2005/09/07(水) 01:00:15
HQ9+を挫折した俺が最強だと思う。
571デフォルトの名無しさん:2005/09/07(水) 17:42:50
MSNじゃない、MFS。ん?MFCだったっけ・・・あれ。
572デフォルトの名無しさん:2005/09/07(水) 18:54:40
BrainF*ckスレできくべき擦れ違いですまんこだけど
手軽に遊べるBrainF*ck実装系紹介きぼん

BrainF*ckが気軽とは思えないけど、、、
573デフォルトの名無しさん:2005/09/07(水) 19:40:01
いい加減うざい
574デフォルトの名無しさん:2005/09/07(水) 19:59:00
>>572
自分でインタプリタ書くのが一番手軽。
十数行で書けるから。
575デフォルトの名無しさん:2005/09/07(水) 20:31:07
ttp://yosirin9.hp.infoseek.co.jp/tips/no2/tips_no2.htm
これ見てCPUクロック計測ツール書いてみた。unix+gcc専用。
Boost使ってるけど、無ければ stdint.h で代替できるかも。

begin-base64 644 cpuclock.cc.gz
H4sICK7OHkMAA2NwdWNsb2NrLmNjAG1TS2/TQBC++1eMXEVKmpBHCxzIQ0Jp
DjnwUJNIHCpZznqTWPglex1SKn5Mw/qCKlFxKZWQEByoUKFckDhzLL0VcWfW
3jycZA/e2W+++WZ3ZrxlOsQKDQo10w2YT3W7oWzNMRIwwzL7y1DfRV5JOEyH
FUee11CWvKFjoqc4QjAMTGcIjm7TwNMJBcSra2CsVlWUOXKkAC7iOgEDTADt
bmv/YbelNZ/0HnehDveQLBjs0KMGHUCIpPt3NQZNyyXPNSbd8gRDyjQS2+SQ
WDSbi71JErFE+O4OEhPSyByOCtK23BdSTCxN0wNb02DsWjozUWnuEUslXmga
cOAcMBVKJdjf63aa8OHz+c9Pp/wyOov+RNPoOuLR++hvdPrt49Vvfiu8/Ix/
4W/4268n33/xEz7lN8dTfo0oT8v7BgtIIq+kPbY7hkyG6pMCZCqSsYlgCEJ5
A+EBqHVfheyiALlCCsI65NIRq/EivVoQez/eKZFHYxJXo/m0194D/gPiayIJ
P0R8jAnw24vLd//4Ob/hV/zi+PVcO7dUfJ+y0HcWfYE8ZAOGfSAa0QNWk91u
LD8CajXY3UEVIfAqPRU21YPQp8lkrM3EjNWnA9enOHNrQ1SdcwOLUi9bWUJm
0fqAUX9z8Oq7EuodmXB2Y7yz+AFs3XSywtD9IcHZHOn+9rY4jHPKUepVcRbM
WE4UUCuOM2MIt1r6Z6pCPm8uOptE5+urxUnEEm+pviKRPMVww75FZXsejV5i
QsmHSjleRXkn4oZMNGZBxYMKaKjCoo5hSU1Zmtazdlfr9JrNVqdTxZL8B/K0
MJevBAAA
====

アセンブラ初めてなので変なとこあるかも。
ってか gcc/gas って文法が変態チックで困る。
576デフォルトの名無しさん:2005/09/07(水) 23:16:50
そもそも、>552は何の石で開発することになったんだ?
基本は変わらないつっても結構クセの強い石もあるし。
577デフォルトの名無しさん:2005/09/08(木) 17:33:10
うちの大学の先生、SH2かSH4の設計に関わったそうだ
578デフォルトの名無しさん:2005/09/10(土) 00:09:47
age
579デフォルトの名無しさん:2005/09/10(土) 00:10:24
MISSったょorz まぁ、ageとくわ
580デフォルトの名無しさん:2005/09/10(土) 14:45:05
>>577
なんでゼロ拡張loadを基本命令にしなかったんだよこのアホ!

とお伝えください。
581名無しさん@そうだ選挙に行こう:2005/09/10(土) 18:17:36
SH4は44マトリクス×4ベクトル演算が1命令で出来たなあ

懐かしい
582名無しさん@そうだ選挙に行こう:2005/09/10(土) 20:05:14
なんで4bitシフトがないんだろうな。
583名無しさん@そうだ選挙に行こう:2005/09/10(土) 20:52:39
シフトはライブラリ呼んでたなあ
584デフォルトの名無しさん:2005/09/16(金) 15:04:12
質問です。

Can the effective address 61496h be accessed from the segment address 1884h?
why or why not?

で、答えはNOなんですが、どうしてアクセスできないのかわかりやすく教えてください!
585デフォルトの名無しさん:2005/09/16(金) 15:33:50
>>584
それは何のアセンブラの話だ。
586584:2005/09/16(金) 15:36:07
書くの忘れてました。。
intel (80x86) のアセンブリです。
587デフォルトの名無しさん:2005/09/16(金) 15:52:28
>>586
うーん、8086でいいのかな。
それなら説明は簡単なんだが。
即ち、8086ではメモリアドレスは単純に次の式で表される。
(セグメントアドレス)*10h+(オフセットアドレス)
したがって、セグメントアドレスが1884hであれば次の範囲にアクセスできる。
1884h*10h+0h〜1884h*10h+ffffh
これを計算すれば、
18840h〜2883fh
となる。
問題のアドレスは61496hだから、当然アクセスできないことになる。

80286のプロテクトモード、80386以降の場合はこれに該当しないので
その問題の前提条件がない限り説明できない。
588584:2005/09/16(金) 16:06:03
>>587

わかりやすい説明ありがとうございました。
明日のテスト、なんとかなりそうです。
589デフォルトの名無しさん:2005/09/16(金) 17:23:28
テスト(プ
590デフォルトの名無しさん:2005/09/16(金) 17:50:30
余計なこと書かなきゃいいのに。
591461:2005/09/17(土) 05:49:32
>>529の考えてることはおそらく、CreateRemoteThread(LoadLibrary())みたいなもので起動済みプロセスに何かのDLLをこっそり注入すること。だがLoadLibrary()すると簡単にモジュール列挙されてしまうので、別の方法をとりたい。

もしそうなら・・・

リンカで設定して、DLLの側をうまく作っておきさえすれば、手抜きのPEローダーで構わない。
1. セクションのファイルアラインとメモリアラインを一致させること。ヘッダのサイズが1000hにできれば完璧。
2. 固定アドレスロードにする。
3. バウンドインポートにする。
まあ、3は大いに問題ありなので、インポートテーブルだけは解決するように作ればよい。後はDLLプロセスアタッチをシミュレートする。

逆に言えば、ちゃんとしたローダーを作るには1/2/3を解決すればよい。完全なのはもう少し処理が必要だが。
作りたかったらwinnt.hに載っている構造体とdbghelp.hに載っている関数をよく調べること。

それから、DLLは作らずに、VirtualAllocEx()で確保した領域に、EXEが自らのコードを部分的にコピーして動作させる、という方法もある。
そっちの方法は「アセンブリ言語の教科書」の著者のページに書いてあり、ソースコードも置いてある。多分Advanced Windowsにも載っているのだと思われるが。
592デフォルトの名無しさん:2005/09/18(日) 19:36:15
今こそアセンブラの時代だと思いませんか。

いい意味にしろ悪い意味にしろハッキングにはアセンブラが重要で自由自在だし
アセンブラができれば女にもモテるのでファッキングも自由自在ではないでしょうか。
593デフォルトの名無しさん:2005/09/18(日) 19:39:20
        ____    
       /  ./  /|         !
     _|  ̄ ̄ ̄ ̄.|  |___     ∧∧
   /  |_____.|/  /    (・ω・ )  誰だ!!
    ̄ ̄~  |し  |  ̄ ̄     _| ⊃/(__
        し⌒ J       / └-(____/


         ____    
       /  ./  /|         ?
     _|  ̄ ̄ ̄ ̄.|  |___     ∧∧
   /  |_____.|/  /    (   )  気のせいか・・・ 
    ̄ ̄~  |し  |  ̄ ̄     _|  /(__
        し⌒ J       / └-(____/


         ____
       /  ./  /|    こちらスネーク
     _|  ̄ ̄ ̄ ̄.|  |___   糞スレへの侵入に成功した
   /  |_____.|/  /
    ̄ ̄~  |し  |  ̄ ̄
        し⌒ J
594デフォルトの名無しさん:2005/09/18(日) 19:39:29
さぁ!!アセンブラで君もフリーファッキングライフ!!
595デフォルトの名無しさん:2005/09/19(月) 01:49:12
どうも「アセンブラ」の意味をはき違えている人がまだいるようです・・・
596デフォルトの名無しさん:2005/09/19(月) 01:55:22
5分もあれば誰でもアセンブラ使いにはなれるからな。
アセンブリ言語ソース書けるかどうかは知らんけど。
597デフォルトの名無しさん:2005/09/19(月) 08:17:39
ようし基礎的な事は把握した!
実地で試してみるぜ!とりあえずVCのコンパイラが吐いたのを読んでみるか
これで俺も「アセンブラ理解してると違うよ」とか言っちゃう身分だぜウフフ



……なんだこりゃ知らねー命令セット大杉 orz
598デフォルトの名無しさん:2005/09/19(月) 11:02:22
>597
そうか?
VCの吐く命令って割と限られてるっぽいけど。
最適化も人間がやるみたいにキチガイ地味てるって程でもないし。

昔GCCの吐いたコード逆汗ったら凄まじく汚かった記憶がある・・・
599デフォルトの名無しさん:2005/09/19(月) 14:14:33
それってたぶんGCCの中の人のハードコーティング部分じゃないかと。
コンパイラが吐く命令列はシンプルと相場が決まっている。
600デフォルトの名無しさん:2005/09/19(月) 16:14:22
ところで600げと
601デフォルトの名無しさん:2005/09/20(火) 01:45:51
>>397-398
指摘サンクス!
後で修正しておきます。
602デフォルトの名無しさん:2005/09/20(火) 10:03:36
クラッキング・バイブル
セブンアンドワイで予約したら
流通の関係でセブンだけ1週遅れて販売て
キャンセルして書店回ったろうか

お願いです。もう待ちきれません(´・ω・`)
603デフォルトの名無しさん:2005/09/21(水) 00:28:21
Pentium Mでは値を3倍するとき、

imul EAX, 3



mov ecx, eax
shl eax, 1
add eax, ecx

ではどっちが速いでしょうか。
というか、クロック表ってWeb上に転がってないですか?
604デフォルトの名無しさん:2005/09/21(水) 00:33:14
>>603
メモリ・レジスタ間オペレーションのスループットが上がってSSE2が追加されてる以外は
Pentium 3とほぼ同じだよ。
結論から言うと後者のほうかな。
605デフォルトの名無しさん:2005/09/21(水) 00:35:54
lea eax, eax[2*eax]
の方が速い気がする。
606デフォルトの名無しさん:2005/09/21(水) 00:38:08
eax懐かしい

なにげにデコーダネックになりそうな気もするがどうだろう
607デフォルトの名無しさん:2005/09/21(水) 00:51:19
っていうか386以降のx86で3倍、5倍、9倍、及びそれらの2^n倍するときは
>>605が定石。
リアルモードでも使えるよ。
608デフォルトの名無しさん:2005/09/21(水) 00:56:32
IA-32 Intel(R) Architecture Optimization Reference Manual(英語)
ttp://www.intel.com/design/pentium4/manuals/248966.htm
Prescott/その他のNetburst/PentiumM のレイテンシ/スループットがのっている
ただPentiumMはあまりのっていない

インテル アーキテクチャ最適化リファレンス・マニュアル
ftp://download.intel.co.jp/jp/developer/jpdoc/iaopt_j.pdf
デコーダ向け命令の仕様が役に立つと思われ

leaに一票
609デフォルトの名無しさん:2005/09/21(水) 01:08:00
leaってアドレス生成ユニット使うんだっけ?
RISCから入った俺的にはにわかに信じがたい。

本当に数をこなしたいときはMMX/SSE2使うのがいい希ガス
610デフォルトの名無しさん:2005/09/21(水) 01:28:42
leaはシフトと加算に分解されるだけだと思うんだが…
似たようなのがARMにあった希ガス
611デフォルトの名無しさん:2005/09/21(水) 01:57:46
奥が深そうですね
ありがとうございました
612デフォルトの名無しさん:2005/09/21(水) 02:00:46
>>610
いや、普通はアドレス生成ユニットが処理する。
P4だけは違ったかも。
613怒シロート:2005/09/21(水) 03:14:18
アセンブラの勉強をして、どんな事に役に立って、どんなことができますか?
また、完全にマスターするまでには一般的にどのくらいの勉強時間が必要ですか?
もしかしたら、仕事の関係上勉強しないといけないかもしれないので、教えて君スマソですm(__)m
614デフォルトの名無しさん:2005/09/21(水) 03:28:59
基本的に、バイナリを吐ける高級言語(C, C++ など)をどれか一つでもマスターしていることが条件
全体を生産性の高い言語で記述して、速度を稼ぎたい部分にのみ使う。
移植性や可読性を犠牲にするから、本当に必要なところでだけ使うのがセオリー。

また、指数オーダーの時間がかかってる部分を倍数オーダーにするとか、
アルゴリズムの見直しは大前提。


高速化以外では、ハードに近い部分の処理をするときとか、
本当の熟練者にしか縁の無い話だが、コードの解析を困難にするためとか。

615デフォルトの名無しさん:2005/09/21(水) 03:32:55
>>613
どの程度の時間がかかるかは人にもよると思う。
私は、あなたのスキルをレベルを知らない。

基本情報技術者のCOMET-2/CASL-2あたりからはじめてみたらどうですか?
シミュレータなんかも出回ってるし、アレが近道だと思われ。
616デフォルトの名無しさん:2005/09/21(水) 08:39:51
>>614
さすが業界の人
617デフォルトの名無しさん:2005/09/21(水) 11:59:44
いまどき書ける必要のある業界って
先端のゲーム屋、超タイトな組み込み系、
コンパイラ屋、それに組み込みとOS屋の一部、ぐらいじゃないか?

それでも最低限のことぐらい知っておかないと、
コンパイラ一つろくに扱えんと思うけど。
デバッグの時に役に立つこともあるかな。

完全にマスターするには、何をもってマスターとするかによるな。
アセンブリをなんとなく書くだけなら1日でできる。
プロセッサというものについての基本的理解、
というなら数ヶ月単位か。
まあ高級言語からアセンブリソース吐かせて
解説見ながらステップ実行でもさせれば多少は理解も進むんじゃないのかねぇ。
618怒シロート:2005/09/21(水) 16:50:07
まったくの無知識なので、あまり理解できませんが、完全マスターは凡人にはムリポってことですかねorz
619デフォルトの名無しさん:2005/09/21(水) 17:22:16
> 仕事の関係上勉強しないといけないかもしれないので、
なんの仕事?

620デフォルトの名無しさん:2005/09/21(水) 18:03:05
どんな言語でも(完全マスターは)難しい
621デフォルトの名無しさん:2005/09/21(水) 18:23:36
まぁ漏れは日本語に完全マスターたけどな
622デフォルトの名無しさん:2005/09/21(水) 18:29:46
でけれねに?
623デフォルトの名無しさん:2005/09/21(水) 18:30:14
>>621
嘘つくなw
624デフォルトの名無しさん:2005/09/21(水) 19:11:12
仕事上必用な石のマニュアルを見て「命令セット」を理解できること、だね。
それがASMを理解できるかどうかということ。「マスター」なんかしないでいい。
チップが出る度に命令セットを覚え直す必用がありそうに思えるが、たいてい
殆ど同じだから。-->メモリ<-->レジスタ間の移動、加減算、シフト・・・これがほとんど。
チョット高級チップなら乗算・除算がハード命令になっているけど、精度が足りるかビミョーだし。
625デフォルトの名無しさん:2005/09/21(水) 19:44:11
>>618
凡人が完全にマスターしたらもう凡人ではなくなっている。
626デフォルトの名無しさん:2005/09/21(水) 21:32:22
>>625
あぁ、目から鱗が。
627デフォルトの名無しさん:2005/09/26(月) 11:04:29
アセンブラを完全マスターすることなど
一生ありえない
628デフォルトの名無しさん:2005/09/26(月) 18:32:44
>>627
別に「完全マスター」しなくとも、飯が食えればそれでいいさ・・・・・
629デフォルトの名無しさん:2005/09/27(火) 01:25:05
630デフォルトの名無しさん:2005/09/27(火) 01:31:16
簡易電卓なんてつくれねーよ‥‥
631デフォルトの名無しさん:2005/09/27(火) 17:13:40
>>629
おおーさんく〜です
632デフォルトの名無しさん:2005/09/29(木) 15:22:36
add esp, 8
pop eax; pop eax
pop eax; pop edx
lea esp, [esp + 8]
pentium系でどれが速い?
633デフォルトの名無しさん:2005/09/29(木) 15:52:57
inc esp
inc esp
inc esp
inc esp
inc esp
inc esp
inc esp
inc esp
634デフォルトの名無しさん:2005/09/29(木) 18:15:30
クロックステート調べろ タコ
635デフォルトの名無しさん:2005/09/29(木) 19:45:32
アセンブラを授業科目に追加され、この超基本計算結果が全くわからない俺です

1: MOV #100, R1
2: CLR -(R1)
3: CLR -(R1)

CLRはクリアだと習ったのに、答えは0では無いといわれてパニック・・・
教科書見ても具体的な方法が載っておらず・・・叩かれる気分で言います。教えてください。
636デフォルトの名無しさん:2005/09/29(木) 20:35:51
>>635
レジスタをカッコで囲むと何を意味するか述べよ
637635:2005/09/29(木) 20:51:45
処理する前にレジスタの内容を減らす?で合ってますかね・・・かなり低レベルですいません。
()に意味が有るというのも今知ったので・・・
638デフォルトの名無しさん:2005/09/29(木) 21:07:45
>>637
授業ならテキストがあるだろ。
カッコは基本だから書いてあるはずだ。
まずテキストを熟読しろ。
639デフォルトの名無しさん:2005/09/29(木) 21:17:53
>>638
それが載っているはずだと思ってずっと熟読しているのですが、配布された資料に括弧の式はいくつか出ていて、括弧の意味も載っておらず、
答えすら載っていない状況で、独学しようにも答えがあっているかどうかすらわからない状況です。
教科書にも括弧の式はかなり使われているけど意味は載っておらず、これもまた答えが載っていないので結果がわかりませんでした。
数学のように1つでも回答例が有れば良かったのですが・・・
640デフォルトの名無しさん:2005/09/29(木) 21:39:12
>>639
>独学しようにも答えがあっているかどうかすらわからない状況です。
ここで聞く前にまず担当教官に質問しに行きなさい。
641デフォルトの名無しさん:2005/09/29(木) 21:41:12
あ、肝心なこと忘れてました。行ってきます。
642デフォルトの名無しさん:2005/09/30(金) 06:43:17
MIPS系?

x86とPPC以外は全然解らん。
Itaniumなんかは神レベルの人間じゃないと直に叩けそうにない
643デフォルトの名無しさん:2005/09/30(金) 12:29:57
VAXだろ?

RISCじゃCLRはまず使わん。
しかし、しょぼい問題だな。
644デフォルトの名無しさん:2005/09/30(金) 13:39:05
m68kくさい
645641:2005/09/30(金) 13:39:05
友人7人ぐらいで担当教員に聞きに行きました
「さぁ〜、載ってないがそれぐらいは分かるでしょ。考えなさい」
といわれて帰ってきました。

>>642-643
良くわからないですがPDP-11?と言う言葉が教科書に頻出しています。
646デフォルトの名無しさん:2005/09/30(金) 14:14:29
またえらく化石な物が出てきましたな。
m68kあたりが読めればなんとかなるか。
647デフォルトの名無しさん:2005/09/30(金) 18:22:15
>>645
「アドレッシングモード」でググってみな。
648デフォルトの名無しさん:2005/09/30(金) 20:01:34
>>645
どこの学校か知らんが、担当教官の質を疑ったほうがよさそうな予感。
649デフォルトの名無しさん:2005/09/30(金) 22:23:37
>>645
けいおー?

「-(R1)」の意味は ↓の「モード4」
ttp://www.nak.ics.keio.ac.jp/class/asm/

CやJavaの演算子を知ってると理解しやすい。
650デフォルトの名無しさん:2005/10/01(土) 04:46:52
>>632
Pentium系って何よ。互換品を含まないPentiumシリーズだとして、一般的には

pop eax/pop eaxとpop eax/pop edxは同じ。
addはその後でpush/popしないならpop/popより高速。
leaはそれに加えて、前でespにアクセスしないならadd以上。
ただしPenMだとpop/popの方がよかったような気もする。
651デフォルトの名無しさん:2005/10/01(土) 07:23:05
1: MOV #100, R1
2: CLR -(R1)
3: CLR -(R1)
まずレジスタの値を2減らし、その値を対象番地とする、と書いてあったね。
だから、2.で98番地をクリヤ、3.で96番地をクリヤ、その後R1は96になっているでしょう。
652461 = 397 = 398:2005/10/01(土) 10:46:57
>>601
で、結局、どれがあなたのレスだったの?

>>524がそうかな、と思ったんだが。

HP、期待してます。とりあえずデバドラのを・・・

>>613
Webに初心者向けのアセンブラの学習ページがいくつもあるから。それですぐに覚えられる。日本語のもいくつかある。

>>614の言うようにバイナリを吐ける高級言語をマスターしている必要は必ずしもないと思う。オレは一番最初はBASICインタープリタで次にマシン語だったし。
まあその頃に比べたらアセンブラもまるで高級言語みたいになったので、他をあまりよく知らずにアセンブラを始めてもいいんじゃないか? 実際オレはCより先にアセンブラをマスター(?)したし。

と言うかむしろ逆。バイナリを生成する言語を扱うプログラマは、アセンブラを読み書きできることは必須。そうでなければまともなプログラムは書けないし、第一デバッグができない。

マシン語やアセンブラを覚えれば何ができるか?

ヤバイ発言を期待してるんだろうけど、まあ言える範囲で言うと・・・

およそどんなバグでもつきとめて潰せるようになる。他人のつくったソフトのバグまで(^^;)

>>615の言うような試験のみで使われる言語を覚えても何もできない。x86で覚えるべき。

>>618
昔のパソコンでは素人がBASICで組んだやつでも何かしらマシン語が使ってあったりした。
高級言語の補助的な使い方なら誰でも組めると思うし、そうするのが利口な使い方。
オレはフルアセンブラで組む時もあるが・・・(^^;)
653デフォルトの名無しさん:2005/10/01(土) 10:50:04
うざい→(^^;)
654デフォルトの名無しさん:2005/10/01(土) 10:52:00
同意。
つーかキモイな。
655デフォルトの名無しさん:2005/10/01(土) 10:56:46
>(^^;)
気持ち悪い
656デフォルトの名無しさん:2005/10/01(土) 11:01:06
そもそも高級言語はコンピュータの仕組みをよく知らない人でも
プログラムを作成できるように作られたものなのだが。
657デフォルトの名無しさん:2005/10/01(土) 11:04:23
(^^;) ←氏ね
658デフォルトの名無しさん:2005/10/01(土) 13:23:53
>>656
そりゃ違うんじゃないか?
主に生産性の向上だと思うんだが。
659デフォルトの名無しさん:2005/10/01(土) 14:14:00
>>658
>>656と「生産性の向上」は矛盾しない。
660645:2005/10/01(土) 15:46:00
>>647 >>648 >>649 >>651
ありがとうございます。
なんとかいけそうです。
661デフォルトの名無しさん:2005/10/01(土) 16:02:41
アセンブリわかってたら高級言語も理解しやすいよね
Cのポインタとかとくにそう思う
662デフォルトの名無しさん:2005/10/01(土) 16:02:49
スレ違いかもしれませんが、失礼します。

『PC-9801プログラマーズBible』を片手に当時のゲームの
アセンブラソースを読んでいるんですが、
movah,004h
int07Fh
という「INT 07Fh」の意味が載っていなくて困っています。

どなたかご存知の方、または情報の在りかでもよいので
教えていただけないでしょうか。
書籍関係は絶版ばかりで入手も困難でした…。
663デフォルトの名無しさん:2005/10/01(土) 16:08:05
>>662
ソフトウェア割り込み。

0番地から始まるベクターアドレステーブルからの間接参照割り込みさ。
664662:2005/10/01(土) 16:27:23
>>663
ありがとうございます。
書き方が曖昧ですみません。INTが割り込み命令であることは
理解していたのですが、「07Fh(AH=04h)」で何が行われるのかが
分かりませんでした。

『PC-9801プログラマーズBible』に載っているのは、
INT 018h, 01Bh, 021h, 033h, 067hあたりで07Fhに該当する情報が
ありませんでした。
665デフォルトの名無しさん:2005/10/01(土) 16:39:32
>>664
そりゃ、未公開ファンクションだからじゃねえの?
666デフォルトの名無しさん:2005/10/01(土) 16:44:29
使えるかどうかはわからんが。
ttp://lrs.fmi.uni-passau.de/support/doc/interrupt-57/INT.HTM
667デフォルトの名無しさん:2005/10/01(土) 16:45:43
668662:2005/10/01(土) 17:08:28
>>665-667
皆様、ありがとうございます。
ご紹介いただいたURLなどを参考にしたところ、おそらく
常駐ソフトなどが割り込み処理を仕込んでいるのが07Fhの
割り込みベクタということのようでした。

調べてみたところ、確かに040h〜07Fhのベクタ番号は
ユーザ用となっていました。また、解析中のソフトも別に
サウンドドライバを常駐させて使用するものでした。

実際に何が行われるのかは常駐ソフトのほうも合わせて
解析していこうと思います。回答いただいた方々、本当に
ありがとうございました。
669614:2005/10/01(土) 19:04:38
>>652
俺的にはPowerPCもx86も叩くので、あんまりハード依存のコード書くのはお勧めできない。
WinとMacじゃただでさえプリミティブな部分で互換性がないんだから極力共通化したいわけよ。

パフォーマンスの必要なところで、MMX/SSEとかAltiVecとか使いたいときだけ使ってる。
それでも自作のIntrinsicsのラッパー使って共通化できる部分は共通化し、極力
アセンブラを使わないように努力はするけどね。
たとえばIntel謹製コンパイラ+Intrinsicの組み合わせならx86でもx64でもそのまんま使えて
ハイパフォーマンスなコード書けるし、それですむならそうやったほうがスマート。

つか、レジスタの中身って全部見る必要ある?
普通にデバッグ用にマクロ切ってprintfとかで変数追っかければいいんちゃうの?

俺も趣味で書いてるプログラムでSIMDを使った高速化を多用するほうだが、
アセンブラで全部記述できるほど小規模なコードは書かない。
ただでさえSTLやBoost、自作テンプレート使いまくりで数千行あるようなコードだ。

あと、アセンブラから入った人って、構造化やOOがわかってないっていうか、
どうでもいいようなところで無根拠な「パフォーマンス」に拘って可読性を犠牲にするような
コーディングやる奴がいるから手に負えない。
コンパイラの最適化より自分が正しい、みたいな。
おまいのオナニーのせいであとで読む奴が困るんだよと。

いずれにせよCやC++は基本だから最初にやっとくべきかと。

あと、組み込みならRenesasとかNECのワンチップマイコンのほうが一般的だから
x86アセンブラが役に立つとも思えないけどなw
670デフォルトの名無しさん:2005/10/01(土) 20:38:05
>>669
長文キモスwwwwwww
671デフォルトの名無しさん:2005/10/01(土) 21:05:52
>(^^;)
気持ち悪い
672デフォルトの名無しさん:2005/10/01(土) 23:58:05
神→(0w0)ウェーイ
673デフォルトの名無しさん:2005/10/03(月) 02:45:54
>>659
アセンブラ屋が自分で使うために言語を開発したってのと、
人に使わせるために言語を開発したってのは違うんジャマイカ?

>>669
役に立つ、立たないじゃなく、学ぶための方策だろ。
そりゃARMでもやっといた方が役に立つのは間違いないが、
実機も環境も無かろうに。
674デフォルトの名無しさん:2005/10/03(月) 04:36:08
>>673
身近なARMといえばiPod?
675デフォルトの名無しさん:2005/10/03(月) 04:47:12
開発環境の入手性も含めるとPalmとかPocketPCのほうがよくね?
676デフォルトの名無しさん:2005/10/03(月) 04:49:34
ゲームボーイアドバンスだろw
ちなみに、ミクロじゃケーブルが使えない
677デフォルトの名無しさん:2005/10/03(月) 05:02:16
GBA開発はケーブルと1CD Linux付きで本まで出てるしな。
LinuxザウルスもXScaleだからいちおうARM互換ではある。
678デフォルトの名無しさん:2005/10/03(月) 17:49:20
GBA開発の解説してるところはどこもお粗末だがな・・・
あの本も例に漏れず
679デフォルトの名無しさん:2005/10/03(月) 22:05:22
そりゃ、任天堂に睨まれないように、当たり障りのない事しか書けないだろうさ。
680デフォルトの名無しさん:2005/10/04(火) 16:48:45
そーゆーレベルじゃなくてな・・・
まぁスレ違いだから止めとく
681デフォルトの名無しさん:2005/10/04(火) 17:08:29
とうとうここにも湧いたかとオモタヨ、、、
682デフォルトの名無しさん:2005/10/04(火) 18:19:11
そういえば最近見掛けないな。
いいことだが。
683デフォルトの名無しさん:2005/10/04(火) 21:25:56
アセンブラって潔癖には合わない?
684デフォルトの名無しさん:2005/10/05(水) 00:23:19
はいはいわろすわろす
685デフォルトの名無しさん:2005/10/06(木) 06:59:30
>(^^;)
気持ち悪い
686デフォルトの名無しさん:2005/10/06(木) 20:23:31
そうですか(^^;)
687デフォルトの名無しさん:2005/10/06(木) 20:32:11
次スレのタイトルには是非 (^^;) を
688デフォルトの名無しさん:2005/10/07(金) 12:28:05
pico16ってなんですか?
689デフォルトの名無しさん:2005/10/07(金) 14:06:53
たぶん食べ物です。
690デフォルトの名無しさん:2005/10/07(金) 19:29:28
アセンブラ… (^^;)気持ち悪い
691デフォルトの名無しさん:2005/10/07(金) 20:15:49
アセンブラ… (^ω^;)

これでいいんじゃね?
692デフォルトの名無しさん:2005/10/07(金) 20:46:30
(^ω^;) ←この顔むかつくからやめろ
693デフォルトの名無しさん:2005/10/08(土) 07:09:42
オナヌーしていて聞き逃した('A`)
694デフォルトの名無しさん:2005/10/08(土) 07:10:31
ゴバクシマシタ('A`)
695デフォルトの名無しさん:2005/10/08(土) 12:03:50
アセンブラ… (^盆^;)
696デフォルトの名無しさん:2005/10/08(土) 14:15:23
(`ω´)
697デフォルトの名無しさん:2005/10/08(土) 14:16:50
>>696
決定

アセンブラ!(`ω´)
698デフォルトの名無しさん:2005/10/08(土) 14:31:23
馬鹿じゃねーの
699デフォルトの名無しさん:2005/10/08(土) 14:40:35
おお、やねうらお先生だ
700デフォルトの名無しさん:2005/10/08(土) 16:16:12
cmp ebx, ecx
の結果によりjmp命令を使わずに
ebx > ecx
なら正を
ebx < ecx
なら負を
ebx == ecx
なら0を
eaxレジスタに格納したいのですが、いい方法はありませんか?
701デフォルトの名無しさん:2005/10/08(土) 16:22:48
>>766

cmov
http://www.x86.org/secrets/opcodes/cmov.htm


って思ったけど、正負ってのが具体的な定数じゃないならこれでいいんじゃねーのか?

mov eax, ebx
sub eax, ecx
702デフォルトの名無しさん:2005/10/08(土) 16:23:01
>>700
符号付きシフトかな?
703デフォルトの名無しさん:2005/10/08(土) 16:42:56
ebx, ecx共にunsignedな数として扱いたいです。
eaxはsignedな数です。
704デフォルトの名無しさん:2005/10/08(土) 16:51:59
>>703
x86の符号付整数は2の補数表現なんで、そのまま使えるよ。
たとえば 1 - 2 は0xFFFFFFFFになるが、そのまま-1の意味になる。
705デフォルトの名無しさん:2005/10/08(土) 17:00:36
>701さんそれだと

mov ebx, 0ffffffffh
mov ecx, 0
で比較したときにeaxに0ffffffffhが入るので
eax < 0となってしまいます。
706デフォルトの名無しさん:2005/10/08(土) 17:09:36
ソフトのキャプションを変更したいのですが、バイナリエディッタで見てみると
キャプション名と同じ名前の部分が100近くあって、全て変えると不正終了します
C言語のソースからならわかるのですが、exeファイルをバイナリエディッタや逆アセンブラ上などから
ここがキャプション、という部分を判別する方法はありませんか?
初歩的な質問ですが教えていただけると助かります、よろしくお願いします
707デフォルトの名無しさん:2005/10/08(土) 17:37:03
>>706
板違い
resource hacker使え
もう二度と来るな
708デフォルトの名無しさん:2005/10/08(土) 22:13:18
>>700
sub ebx, ecx
edx = (0 - c) * 2 + 1
add ebx, -1
eax = (0 - c) & edx

ってとこか?
709デフォルトの名無しさん:2005/10/08(土) 23:41:07
>>708
そんな糞面倒な事しないで、算術シフトで一発だって。
710デフォルトの名無しさん:2005/10/09(日) 10:22:02
>>709
すまん。一発で済ませる方法がわからん。
711デフォルトの名無しさん:2005/10/10(月) 00:58:08
>>700
sub ebx, ecx
sbb eax, eax
add ebx, 0ffffffffh
adc eax, eax

b > c で a = 1
b = c で a = 0
b < c で a = -1

ebx を破壊するけど最近のCPUなら 3clock 以下かな?
今考えついたものだけど、なんか見覚えがあるような。
これ以上いい方法は思いつかなかった。
算術シフト1発ってどうやるのん?
712デフォルトの名無しさん:2005/10/10(月) 07:19:50
>>711
それだと、
eax = 0;
if (ebx < ecx) eax--;
if (ebx != ecx) eax++;
なので、
ebx < ecx : 0
ebx == ecx : 0
ebx > ecx : 1
になんないか?

cmp ebx, ecx
sbb eax, eax
cmp ecx,ebx
adc eax, eax
でいいんじゃね?
713デフォルトの名無しさん:2005/10/10(月) 08:30:30
>>712
eax += eax;
が抜けてる
714712:2005/10/10(月) 08:47:45
ホントだ。
adcの解釈間違えてる。
テラハズカシスwww
715711:2005/10/10(月) 09:07:27
>>712
うっ、単純にcmp2回で済むとは……
変に難しく考えすぎたかな。
EBX非破壊だし、そっちのがいいですね。

あと、>>711 の後ろの方は、>>710 のいうとおり
if (ebx != ecx) eax = eax + eax + CF;
なんで、 EBX < ECX のとき、 -1 + -1 + 1 = -1 です。
716デフォルトの名無しさん:2005/10/10(月) 09:13:18
しまった。 上の、 CF のところは 1 ですね。
その条件式が真のときは必ずCF=1なんで。
717デフォルトの名無しさん:2005/10/10(月) 10:56:12
おまいら、if使っちゃjmp使ってるのと同じだろうが。
ったくもう、これだからアセンブラ知らない奴らは困るよ。
718デフォルトの名無しさん:2005/10/10(月) 11:07:50
MMレジスタに転送してpcmp*使えばいいじゃん
719700:2005/10/10(月) 17:18:25
で、
cmp ebx, ecx
sbb eax, eax
cmp ecx,ebx
add eax, eax
adc eax, eax
でいいのけ?
720デフォルトの名無しさん:2005/10/10(月) 17:30:39
>719
ウルセーバカ、テストくらいテメーでしろハゲ!
721デフォルトの名無しさん:2005/10/10(月) 18:38:04
cmp ebx, ecx
lahf
rcr eax, 1
and eax, 0x80002000
xor eax, 0x00002000

>709
シフト系は無理じゃね?

>719
ウルセーバカ、テストくらいテメーでしろハゲ!
722デフォルトの名無しさん:2005/10/10(月) 18:59:36
jmpを使わずに、ってところが
なんかの課題っぽいよな
723700:2005/10/10(月) 19:38:41
テストは望むところだけどね。
>>722
コンパイラ作ってます。
724デフォルトの名無しさん:2005/10/10(月) 20:06:10
>>723
>>711-712なんか比較と加減算の3命令しか使って無くて、
算数レベルの明快な論理で書かれているのに……
検証するにしたって、漏れは711を投稿する前に総当たりのテストを
rubyで書いたけど、たったの10行程度で済むよ?

さっぱりやる気が感じられないんだけど。
725デフォルトの名無しさん:2005/10/10(月) 20:10:07
>>724
rubyそこまで使いこなせない。弟子にして・・・
726デフォルトの名無しさん:2005/10/10(月) 20:40:59
>ウルセーバカ、テストくらいテメーでしろハゲ!
なんかワロタ

>>724
2の64乗通り、全部通したってわけじゃないと思うけど、
ebx=[0x00000000, 0x00000001, 0x7fffffff, 0x80000000, 0x80000001, 0xffffffff]
ecx=[0x00000000, 0x00000001, 0x7fffffff, 0x80000000, 0x80000001, 0xffffffff]
この辺りの組合せ?
727700:2005/10/10(月) 20:50:04
つーかset??あるからこれ使い道ありませんでしたw
ごめんよ
728デフォルトの名無しさん:2005/10/10(月) 23:58:27
全ての算術に応用出来る奥の手をお教えしよう。
ebxとecxをアドレスにしたマトリックステーブルを作る!
すげえな俺。どんな計算も数ステップでこなしちゃうんだぜ。
729デフォルトの名無しさん:2005/10/11(火) 00:01:08
>>728
Pentium!!!(Coppermine)あたりでは有効な手だったけど
最近のCPUではレイテンシが増えてるからあんま使えない。
730デフォルトの名無しさん:2005/10/11(火) 00:17:13
>>725-726
2の64乗はやってられないので、ワードサイズを8bitとして2^16通り計算した。
rubyはスレ違いで申し訳ないけど、折角なので書いておこう。

def cmp711(b, c)
 b -= c     # sub bl, cl;  b -= c
 a = -(b[8])  # sbb al, al;  a = 0 - CF
 b &= 0xff
 b += 0xff   # add bl, 0ffh; b += 0xff
 a += a + b[8] # adc al, al;  a += a + CF
end

(1<<8).times do |i|
 (1<<8).times do |j|
  r = cmp711(i, j)
  p(['NG', i, j, r]) if (r != (i <=> j))
 end
end

空行除いて12行なので、10行程度といって差し支えないでしょう。
実際はもっと読みにくい書き方してたからさらに短かったし。
今気づいたが add ebx, ffffffffh は、 sub ebx, 1 でもいいのか。
どのみち>>712 には敵わないけど。


あと最後に、
(ノ`д´)ノ ┫:・’ >>727
731デフォルトの名無しさん:2005/10/11(火) 02:15:19
>727
氏ね。
732 :2005/10/11(火) 02:43:57
サブルーチンから返るまえにリターンアドレスをポップして
一気に2つ上層のサブルーチンに返る技ってなんていうの
もし名前あったら教えて
素人ですまそ
733デフォルトの名無しさん:2005/10/11(火) 03:28:18
>>732
フレーム・ポインタがあった時も考慮するの?
734デフォルトの名無しさん:2005/10/11(火) 05:41:42
>>732
中間のサブルーチンでコールせずジャンプしたい気もするけど。
何にしろ名前なんてあるんかねぇ。
735732:2005/10/11(火) 05:48:18
>>734
ある条件では1つ返って、ある条件では2つ返るという場合にです

>>733
フレーム・ポインタは考慮してません
736デフォルトの名無しさん:2005/10/11(火) 07:03:32
たぶんunwindという技
C++例外処理やLISPなんかで使うよ
737デフォルトの名無しさん:2005/10/11(火) 08:14:02
x86上で動いているWindows2000のユーザーモードで、
割り込みを使ったプログラムを何か書いてみたいと思うのですが、
どんなものが可能でしょうか?

役に立たなくてもいいので、高級言語では実現しづらいことが出来るような
Windows特有のサンプルプログラムを作りたいと思っています。CD21などは使わない方向で。
738737:2005/10/11(火) 08:22:47
どんなものが可能でしょうか、というのはあまりに漠然としていたので
補足させてください。

PC-9801、MSDOS時代のアセンブラしか知らないので、
今復習を兼ねて色々とアセンブラでプログラムを作っていますが、
コンパイラは優秀で速度的に問題はないし、
Windows APIなどもC言語で呼ばれることを前提とされているので
アセンブラで書くメリットがある分野が昔に比べてとても狭くなっている気がしました。

そこで、最終的には何かデバイスドライバを作ることを勉強しようと
思っているのですが、その前段階として、Windowsからハードウェアに触ることの出来る部分を
まずは作ってみようと考えたのですが、知識不足からアイデアが思いつかず、737の質問をさせてもらいました。

割り込みに限らず、WindowsからハードウェアにWindows APIを介さずにアクセスする方法って無いですか?
VRAMでも何でも結構です。よろしくお願いします
739デフォルトの名無しさん:2005/10/11(火) 10:40:43
>>738
NT系ではWindowsからハードウェアにWindows APIを介さずに
アクセスする方法は無いんじゃないかしら。

おっしゃるようにデバドラ書くしかないと思いますよ。
740デフォルトの名無しさん:2005/10/11(火) 10:42:43
CD21って何かと思ったらDOSのint 21か…?
NTのユーザモードからI/Oを直接叩くのはムリ。
できるようにしてくれるソフトウェアはあったと思うけど。

CPUID/RDTSCぐらいしかないんじゃないかな。RDMSRも特権命令扱いらしいし。
9x系使うかDDK使うかした方がいいんジャマイカ?
741デフォルトの名無しさん:2005/10/11(火) 11:44:52
PCIバスとそのOSでの扱いについて
を知らんとどうにもならんと思う
742デフォルトの名無しさん:2005/10/11(火) 12:36:12
>>738
VRAMならDirect3DのAPIからアドレスを得て直接アクセスすることができるよ。
in/out命令をユーザモードで使いたいなら、GIVEIOをググってみる。
743真正700:2005/10/11(火) 19:51:50
719, 723, 727
は私ではありません。

いままでアク禁をくらっていてレスできませんでした。

>711さん、>712さん、>721さん、>724さん、>730さん、
皆さん本当にありがとうございます。
私は>712さんの書かれた方法を使わせていただきたいと思います。

失礼いたします。
744偽700:2005/10/11(火) 20:14:35
今まで悪かったな
745デフォルトの名無しさん:2005/10/11(火) 20:17:27
酷い自演を見た
746真正700:2005/10/11(火) 20:23:06
。゚(゚´Д`゚)゜。ウァァァン
747デフォルトの名無しさん:2005/10/11(火) 20:31:48
(0w0)ウェーイ
748デフォルトの名無しさん:2005/10/11(火) 22:10:35
一気に脱力
749デフォルトの名無しさん:2005/10/12(水) 13:13:07
MASM32によるアセンブラ入門:パート1
ttp://japan.internet.com/developer/20051012/25.html
750デフォルトの名無しさん:2005/10/12(水) 13:55:44
普通にインライン使った方が簡単じゃないのか。
751645:2005/10/12(水) 18:47:30
お久しぶりです
>>648さんの言うようにちょぃこの担当疑問な点が出てきました。
今日提出だった課題ですが、生徒はほぼ全員一発合格したにもかかわらず、先生が黒板で模範解答を行ったところ、答えと違った答えになり
「あれ?これでまちがっとるんか?そんなはず無いぞ」
と愚痴りながら5分後、ようやく間違いに気づき、「多分5億ぐらいになる」と一言残し、模範解答が謎なまま授業が再開されました。
ってことだけ報告して消えます。ではでは。
752デフォルトの名無しさん:2005/10/12(水) 18:50:39
糞講師だな
753デフォルトの名無しさん:2005/10/12(水) 19:22:40
MASMってフリーウェアなのか…?
754デフォルトの名無しさん:2005/10/12(水) 19:43:55
その糞講師の名前晒してみろ
俺の弟子かもしれん
755デフォルトの名無しさん:2005/10/12(水) 19:48:12
実質フリーってことだったと思う。
EULAに詳しく書いてあるんだろうが、俺が使ってるのはgasかNASMなので知らないや。
ttp://en.wikipedia.org/wiki/MASM
756デフォルトの名無しさん:2005/10/13(木) 05:31:53
本家のMASMならSDKの中に入っているジャン
757デフォルトの名無しさん:2005/10/18(火) 23:16:59
アセンブリ言語の教科書という書籍で学習しているのですが、
誤植が多すぎる気がするのですが、
p.119のPROGRAM_ENDラベルはPRINTラベルに行った時点で
メモリ開放のシステムコールが呼ばれているので絶対に呼ばれないと思うのですが
なぜですか?
758デフォルトの名無しさん:2005/10/18(火) 23:32:05
>>757
そんな事言っても、絶対にその本は買わないからな。
よってその質問には答えられないw
759デフォルトの名無しさん:2005/10/18(火) 23:46:07
漏れのほんのp.119には
キーの寿命と削除
 オリジナルファイルやその完全なキャッシュファイルを持っている
ノードが全てオフラインになると、そのファイルはダウンロードできな
くなるので、〜〜〜
って書かれてるけど?
>757の本おかしくね?
760デフォルトの名無しさん:2005/10/18(火) 23:48:25
>>759
おまえの頭がおかしいよ。
761デフォルトの名無しさん:2005/10/19(水) 00:30:57
>>757
想像でレス。
それは人間向けのラベルだろ。
コメントと同じ。
762デフォルトの名無しさん:2005/10/19(水) 00:37:10
>>758
アセンブリ言語の教科書興味あったんだけど
買わん方がいいんか?
763デフォルトの名無しさん:2005/10/19(水) 01:05:16
アセンブラに本なんているか?
命令セットわかればいいだけだろ?
764デフォルトの名無しさん:2005/10/19(水) 01:45:06
「独習アセンブラ」
なんつーか、意表をつかれた感じw
765デフォルトの名無しさん:2005/10/19(水) 02:07:02
アセンブラで、どんな事ができますか?
766デフォルトの名無しさん:2005/10/19(水) 02:17:44
>>765
アセンブルができます。
767デフォルトの名無しさん:2005/10/19(水) 03:09:48
>>763
より効率的なコーヂングを学ぶ、とか・・・
768デフォルトの名無しさん:2005/10/19(水) 16:25:33
>>762
バリバリのプログラマがC言語入門なんて本買わないだろ。
アセンブラ使いなんてそれだけですでにプログラミング初心者じゃないんだから、
そもそも本なんて買う必要なし。
初心者なら独習アセンブラとアセンブリ言語の教科書両方かって勉強しる。
769デフォルトの名無しさん:2005/10/19(水) 18:43:15
Kenji Aikoたんの本だろそれ。
俺も持ってるけどMMX/SSE使うときくらいしか使わないし、それですら
VC++のx64用コンパイラ対応のためにIntrinsicsに置き換え進めてるけどな。

あの本は学習用じゃないよ。彼の酔狂ぶりを見て楽しむもの。
770デフォルトの名無しさん:2005/10/19(水) 19:18:14
誤植が修正されて、あの無駄な外装がなく、
索引とレジスタ一覧がついていれば広く浅く学ぶには最適だと思うんだけどな。
それが直れば文句なし、かも。
771デフォルトの名無しさん:2005/10/19(水) 20:47:14
>>757
多分誤植です。
今から調べてサポートページ更新しときますです。
ホント誤植多いですよね、申し訳ないです。
772デフォルトの名無しさん:2005/10/19(水) 20:50:29
さ、作者さんですか?
お疲れ様です。
773デフォルトの名無しさん:2005/10/19(水) 20:51:00
愛甲健二本人キタ━━━━━━(゚∀゚)━━━━━━ !!
774デフォルトの名無しさん:2005/10/19(水) 23:31:12
TCP/IPの教科書も持ってるよ。
775771:2005/10/20(木) 00:16:19
>>757
指摘ありがとうございました。
サポートページの正誤表に追加しました。
>>772
このスレ勉強になるのでたまにのぞかせてもらってます。
アセ本の批判にヘコみながら(笑)。
でも批判も今後の参考になります。
>>774
おお、ありがとうございますです。
でもその本信じられないくらい売れなかったっぽいです。
頑張って書いたんですが…残念。

なんかスレ違いになりそうなんでこの辺で。
776デフォルトの名無しさん:2005/10/20(木) 00:17:09
生粋のネラーだw
777ハーピィ:2005/10/20(木) 01:08:34
E・∇・ヨノシ <777ゲット♫
778デフォルトの名無しさん:2005/10/20(木) 10:22:26
>>775
本買いましたよ。
素敵な本をありがとう。
779デフォルトの名無しさん:2005/10/20(木) 10:30:03
俺もその本を買ってみるか。どんな本なの?作者以外の誰か、忌憚ない意見plz
780デフォルトの名無しさん:2005/10/20(木) 10:42:12
立ち読みすればよかろう
781デフォルトの名無しさん:2005/10/20(木) 13:31:19
まさか著者が降臨するとはおもわなんだ。
買ってみたくなるな。
782デフォルトの名無しさん:2005/10/20(木) 13:32:51
>俺もその本を買ってみるか。どんな本なの?
誤植が多い、外装が無駄 、金持ちの初心者なら買え
という意見が大多数。
あとは立ち読みで判断しる。
783デフォルトの名無しさん:2005/10/20(木) 23:08:00
>>779
多少の難はあるけど、入門書としてならかなりマシな部類だと思うよ。
ただ、既にアセンブリでプログラミングしてる人が改めて購入するようなものではないかと。
784デフォルトの名無しさん:2005/10/20(木) 23:11:42
すいません、超初心者な質問で申し訳ないのですが、
キャリーというものが良く分かりません。
4ビットの演算の場合、
最上位ビットが溢れ出ることを指し示していると
思うのですけど、
この場合はつまり、オーバーフローが起きるわけですよね?
ということは、CFとOFが同時に、1になるということで宜しいのでしょうか?
785デフォルトの名無しさん:2005/10/20(木) 23:18:26
さてAikoタン儲の俺様が来ましたよ。

立ち読みすると店員に激しく睨まれる罠。
カバーはずす必要あるし、中からボール紙とか出てくるし。

まぁ貴様らとりあえずこれ嫁。
http://ruffnex.oc.to/kenji/bkasm/?link=_talk
どっかで見たような語尾だな。

ま、それはさておき、逆に外装が凝ってる割には安いんでないの?
あれくらいの分量で紙もあんま良くないのに4000とか結構ザラだしね。
あと、雑誌より薄いようなA4で5000円の本とか当たり前だし(まあ大学の教科書だけどw)、
広く浅く覚えるには良いと思う。

あと、「ネットワークの教科書」について。
たしかにあんまり役に立つことは載ってない。

余談だけど、俺ちゃんがネットワーク関連プログラミングの本でかなり実践的だと思ったのが
「TCP/IP解析とソケットプログラミング」でつね。高いけど。
「マスタリングTCP/IP」みたいに漠然と理論だけダラダラ書かれてるのよりは断然良いね。
きわめつけは巻末にIBMのメインフレーム用のアセンブリコードがギッシリw

「ハッカーの教科書 完全版」についてはまだ読んでない。
786デフォルトの名無しさん:2005/10/20(木) 23:18:58
>>784
キャリーが立たなくてもオーバーフローが立つことはある。
787784:2005/10/20(木) 23:22:26
>>784
そうなのですか?
正直、さっきからずっと悩んでいたのです。
CFが起きればOFが発生するのなら、二つにわける必要が無いのではないかと。
もし宜しければ、キャリーが立たなくてもオーバーフローが立つことはある
という状況を教えていただけ無いでしょうか?
788784:2005/10/20(木) 23:23:06
すいません、アンカーミスです。
>>786さんでした。
789デフォルトの名無しさん:2005/10/21(金) 01:51:15
>>787
たとえば4ビットレジスタREG1とREG2での演算の場合、
CF = (REG1 + REG2) >> 4
OF = ((REG1 & 7) + (REG2 & 7)) >> 3


アセンブリの本ならヘネパタかパタヘネでも買っておけばいいんでないか?
C言語のK&Rに相当するかと。
790デフォルトの名無しさん:2005/10/21(金) 02:15:17
>>784
オーバフローフラグの概念を間違って理解している気がする。
ざっとおさらいしておくとこうなる。

・キャリーフラグ
加算による桁上がり(キャリー)、減算による桁下がり(ボロー)を表す。
・ゼロフラグ
演算結果がゼロに等しいことを表す。
・サインフラグ
演算結果を符号付としたときに負であることを表す。
・オーバーフローフラグ
加算、減算の結果が符号付数値の範囲を超えたことを表す。

4ビットレジスタを考えたとき、そのレジスタをデクリメント(-1)したときの振る舞いはこうなる。
レジスタ値→結果(キャリー:ゼロ:サイン:オーバーフロー)
1111→1110(0:0:1:0)
1110→1101(0:0:1:0)
1101→1100(0:0:1:0)
1100→1011(0:0:1:0)
1011→1010(0:0:1:0)
1010→1001(0:0:1:0)
1001→1000(0:0:1:0)
1000→0111(0:0:0:1)
0111→0110(0:0:0:0)
0110→0101(0:0:0:0)
0101→0100(0:0:0:0)
0100→0011(0:0:0:0)
0011→0010(0:0:0:0)
0010→0001(0:0:0:0)
0001→0000(0:1:0:0)
0000→1111(1:0:1:0)
791790:2005/10/21(金) 02:22:31
さてと、デクリメントとは-1である。即ち、レジスタちと1との数値比較となる。
前スレの振る舞いを元に比較結果をまとめてみよう。
レジスタ値→符号なしで1と比較:符号つきで1と比較
1111→>:<
1110→>:<
1101→>:<
1100→>:<
1011→>:<
1010→>:<
1001→>:<
1000→>:<
0111→>:>
0110→>:>
0101→>:>
0100→>:>
0011→>:>
0010→>:>
0001→=:=
0000→<:<
このように符号なしの場合はキャリーフラグとゼロフラグで比較できるが、
符号つきの場合はサインフラグとオーバーフローフラグも見る必要がある。
792デフォルトの名無しさん:2005/10/21(金) 22:22:15
アニメだなんて、なんて非生産的なものに興味を持つかな。
まあ、音楽鑑賞やテレビ鑑賞、化粧だって非生産的なのは事実だが。
793792:2005/10/21(金) 22:23:02
激しく誤爆スマソ.......
794デフォルトの名無しさん:2005/10/21(金) 22:35:07
馬鹿、ここの住人は 0と1を見てるだけで、アニメが楽しめるんだぞ! >792
795デフォルトの名無しさん:2005/10/21(金) 22:36:06
もはやマトリックス
796790:2005/10/21(金) 22:47:18
自分で書いてて言うのもあれだが、>791が一瞬AAかなにかに見えた。
797デフォルトの名無しさん:2005/10/21(金) 23:28:33
(><)わかんないです!
798784:2005/10/21(金) 23:31:18
皆さん、返信有り難うございます。
オーバーフローとは、キャリーが生じて
桁が溢れることだと思っていたのですが。

例:4ビットの場合
(1010)2 + (0111)2 → (10001)2

オーバーフローフラグは、 加算、減算の結果が符号付数値の範囲を
超えたことを表す。
つまり、4ビットならば、加算、減算によってMSBに影響を与えてしまったら
ということですよね?
というかは、もしかしてオーバーフローが発生したら
オーバーフローフラグに1がセットされる、というのは
間違いということで、良いのでしょうか?
799デフォルトの名無しさん:2005/10/22(土) 02:44:53
アセンブラ… (><)ワカンナイデス
800デフォルトの名無しさん:2005/10/22(土) 03:27:15
800
801デフォルトの名無しさん:2005/10/22(土) 14:13:09
>>794
PCソフトなんかのCDを再生した音で
何のCDがわかるやつがいるとか。
802デフォルトの名無しさん:2005/10/22(土) 16:10:41
昔は1200bps程度の転送速度でカセットテープに記録していたから、ビット密度での音程の変化を聞き取れた。
例えば、プログラムとデータはちょっと聞いただけですぐ区別がついたし、同じデータでもオール0のデータと
適当に数値の入ったデータも慣れれば聞き分けできた。
803デフォルトの名無しさん:2005/10/22(土) 16:13:12
プログラムの頭出しは自分の耳でやってましたが何か?
別名人間シークヘッド。
804デフォルトの名無しさん:2005/10/22(土) 16:14:36
紙に穴空けてました
805デフォルトの名無しさん:2005/10/22(土) 16:26:13
俺も演歌とポップスを聞き分けられる
806デフォルトの名無しさん:2005/10/22(土) 18:48:44
>>805
sugeeeeeeeeeeeeeeee!!
807デフォルトの名無しさん:2005/10/22(土) 19:25:10
作者自身が向学心が在る本のほうが良いかなと思ったけど。
解りやすいかどうかは、じっさいに読んでみないとわからないな。

イラストとかサンプルとかが一杯入っていて、下手に文字数が多くなくて、
行間に書き込みができる本がほしいかも。

意外とWebでの断片的な情報って、頭に入りづらいんだよな。
なんでだろ?
本だと、一貫性があるせいなのか、すらすら頭に入りやすい事が多い。
でも、スキャナにかけて、どんどん捨てていかないと部屋が狭くなるし‥

808デフォルトの名無しさん:2005/10/22(土) 19:27:47
独習アセンブラとかPentium マシン語入門編あたりで。
809デフォルトの名無しさん:2005/10/22(土) 19:32:50
>>807
しっかりとした書式をとったWebサイトでないとネットなだけに話半分に無意識のうちに見てしまうのと、
なんだか、ダイヤルアップしていた時代の名残で、どうにも早く読んでしまう癖があるからですかね.....少なくとも僕はそんな感じです。

あぁ、「アセンブリ言語の教科書」やっと、GNUアセンブラにいけそうです。ようやくWindowsから離れられる.....。
Linuxには入ったばかりですけど..。
810デフォルトの名無しさん:2005/10/22(土) 19:36:19
GNUコンパイラでIntel/MS形式のアセンブリコードは使えるが逆は無理。
GNU→Intel形式の変換スクリプト知らない?

手動変換して検証するのも結構骨が折れるんだけど。
811デフォルトの名無しさん:2005/10/22(土) 20:15:00
>>807
手書きでメモを取る人は、Webの場合も適当なエディタでメモを取りながら読み進めるといいかもしれない。
812デフォルトの名無しさん:2005/10/22(土) 21:20:43
確かに本とWebはなんか違うね。
813デフォルトの名無しさん:2005/10/22(土) 21:34:19
目が疲れるってのがあると思う。
814デフォルトの名無しさん:2005/10/22(土) 21:38:21
本は編集が入るから良くも悪くもワンパターン
815デフォルトの名無しさん:2005/10/22(土) 21:50:24
そこにモノがあって、3次元で、目が疲れず、簡単に操作できるからじゃね?
816デフォルトの名無しさん:2005/10/22(土) 21:55:58
書籍はモニタとは独立して読むことができる
つまりデュアルモニタなんだ
817デフォルトの名無しさん:2005/10/22(土) 22:52:54
でもなんかウェブより書籍のほうが理解できるね
818デフォルトの名無しさん:2005/10/22(土) 23:05:00
本は編集されるから誤植が少ないけど、ずっと直せない
Webはすぐ直せるけど、間違いも多い気がする
819デフォルトの名無しさん:2005/10/22(土) 23:29:27
俺は本読んでも理解は出来るが頭に残らん
重複しながら小分けに情報が入ってくるほうがよく分かったりする
もちろん間違いや抜けがなければの話だが
820デフォルトの名無しさん:2005/10/22(土) 23:35:52
人間は古来より書物から情報を得ていたわけだから
自然淘汰で書物から情報を得にくい人間は死んでいったんでしょう
(昔はPCないじゃんという突っ込みはなし)
んでもって、その子孫たちは書物から情報を得やすいように適応していると。

何世代か後にはwebと書籍を比べるとwebのほうが理解しやすいって
人間が大勢いることでしょう。
821デフォルトの名無しさん:2005/10/22(土) 23:43:53
>>820
ヒント:自然淘汰は生存環境の変化
822デフォルトの名無しさん:2005/10/22(土) 23:47:02
俺的に
まず語句の意味をあえて理解せず、本を見てサンプルを入力
実行結果を確認し、ステップ実行で、各行での実行結果を自分で解析してその語句の意味を理解する
理解できたら書籍に載ってある意味と理解した内容が同じかどうか見てみる
間違っていたらもう一度チェックする
繰り返し(ただこれは他言語での話し...)
823デフォルトの名無しさん:2005/10/23(日) 00:10:43
bigfile冗長......
824デフォルトの名無しさん:2005/10/23(日) 00:18:35
>821
あ、うん、こ

これからはコンピュータから情報を得ることが多くなるんじゃないかな
って思ったの。

生存環境というか情報環境が書籍からwebに変わると思うんですけどね。
825デフォルトの名無しさん:2005/10/23(日) 00:21:48
進化論は、淘汰されるべき種は新しい環境で生きていけない種であることが前提。
コンピュータで情報を得ることが精子に直結するとは思えない。
どうみても精子です。ありがとうございました。
826デフォルトの名無しさん:2005/10/23(日) 01:25:31
>>825
それ、面白いとでも思ってんの?
827デフォルトの名無しさん:2005/10/23(日) 01:25:54
「アセ教書」のp.208に出ている
$ ld -oformat binary -o a.img charput
を打ったらbinaryなんてファイルはないと怒られました。
どうしてですか......Linux、Winからきた僕がそんなに嫌いなの........。
あぁ、やっぱりシェルコマンドから覚えなきゃ駄目なのかな.....鬱。
828デフォルトの名無しさん:2005/10/23(日) 01:51:13
>>827
ハイフン足りない。
--oformat binary

829デフォルトの名無しさん:2005/10/23(日) 10:10:01
ところで独習アセンブラってどんな感じの内容?
830デフォルトの名無しさん:2005/10/23(日) 11:02:48
凡庸だが「いまどき」のようなカスではない。
他の独習シリーズ(XMLとかSQLとか)と同じレベルでアセンブラを語るのは異論があるだろうけど・・・
ま、箱に入ったりしてないから実際に立ち読みしてみれ。
831デフォルトの名無しさん:2005/10/23(日) 11:06:33
どんな本でも「いまどき〜」なんかと比べないであげて下さいw
832デフォルトの名無しさん:2005/10/23(日) 11:19:39
最近妙にアセンブラが注目されてるけど何か原因だ?
833デフォルトの名無しさん:2005/10/23(日) 11:33:45
>>832
つ[チータ]
834デフォルトの名無しさん:2005/10/23(日) 11:58:43
シェーダとかじゃないのか
835デフォルトの名無しさん:2005/10/23(日) 12:09:40
>>828
あ、ありがとうです....。'-'が抜けていただなんて、うっかりしてました。
早くLinuxになれなきゃ。
836デフォルトの名無しさん:2005/10/23(日) 12:32:04
( '-')っ (0w0)ウェーイ
837デフォルトの名無しさん:2005/10/23(日) 15:58:44
シェーダーはアセンブラほど複雑じゃないからな。
838デフォルトの名無しさん:2005/10/23(日) 18:00:50
昔のCPUは、減算器が無かったので、
2の補数を加算することで補っていたのですよね?
今のCPUは、どうなんでしょう。
839デフォルトの名無しさん:2005/10/23(日) 18:19:32
>>838
今も同じじゃないの?
840デフォルトの名無しさん:2005/10/23(日) 18:23:09
むしろ違いが分らない
841デフォルトの名無しさん:2005/10/23(日) 18:51:11
>>835
Windowsでもldの仕様は同じはずだと思うけどなぁ。
842デフォルトの名無しさん:2005/10/23(日) 18:55:56
>>838 減算器はそれを高速にやるものだが
843デフォルトの名無しさん:2005/10/23(日) 20:04:44
>>841
windowsのldって何だよ
844デフォルトの名無しさん:2005/10/23(日) 20:13:43
リンカだろ?
845デフォルトの名無しさん:2005/10/24(月) 01:20:17
アセンブラってあれか?
0と1のみで書くあれのことか?

きもいでつねー
846デフォルトの名無しさん:2005/10/24(月) 01:23:12
でつとか言っちゃってw
847デフォルトの名無しさん:2005/10/24(月) 02:58:21
スヌーピーをいじめるなよ。
848デフォルトの名無しさん:2005/10/24(月) 19:52:47
なんだこのネタくさい進行は
849デフォルトの名無しさん:2005/10/25(火) 01:59:10
CALL/RETはCで言うと関数にあたると聞いたのですが
レジスタの値は全てのCALL/RET間でデフォルトで共有されるのですか?
Cで言う引数をとるような命令があるのでしょうか?

ネ タ に 見 え る か も し れ ま せ ん が マ ジ レ ス で す
850デフォルトの名無しさん:2005/10/25(火) 02:03:09
>>849
最後の行でネタに思えるんだが…
Cで作った関数や関数呼び出しのコードをCコンパイラでアセンブリ出力
して見てみれば?
851デフォルトの名無しさん:2005/10/25(火) 04:31:10
>>849
スタックについて勉強しる
852デフォルトの名無しさん:2005/10/25(火) 06:37:39
>>849
CPUによる。
853デフォルトの名無しさん:2005/10/25(火) 11:40:47
MODEが24,24で作成されていたアセンブラを31,ANYで再アセンブラし
たのですが出来上がったロードモジュールは相変わらず24,24のまま
でした。アセンブルは正常終了しているのに何故31,ANYにならない
のでしょうか?
854デフォルトの名無しさん:2005/10/25(火) 15:20:32
Cからアセンブラで作成した関数を呼び出す方法のドキュメントとかがコンパイラについているものだが。
最近は無いのか?
855デフォルトの名無しさん:2005/10/25(火) 15:50:47
その手合いは、マニュアル漁るよりぐぐった方が早いこともしばしば。
キーワード: ABI
856デフォルトの名無しさん:2005/10/27(木) 22:45:42
GNUアセンブラの入門のほうで
こんなコードがありました
pushl %ebp ;; (*)
movl %esp, %ebp ;; (**)
pushl $hello
call printf
leave ;; (***)
ret
*,**,***で行っていることがいまいちよくわかりません...。
なぜ、わざわざebpレジスタにespレジスタの値を入れたりせず、
eax, ebxなど他のレジスタを使ったりしないのはなぜなのでしょうか?
call printfとなにか関係があるのでしょうか...。
857デフォルトの名無しさん:2005/10/27(木) 22:52:43
>>856
標準スタックフレーム
858デフォルトの名無しさん:2005/10/28(金) 00:32:47
>>856
自動変数の格納場所の確保だよん
スタックエリアに作るんだよねぇん
859856 :2005/10/28(金) 10:21:01
>>857,>>858
どうもありがとうございました。
「標準スタックフレーム」でぐぐったら見事に十件ヒットして
ひとつ面白そうな文献を見付けることができました。
大学から帰ったら読んでみます。
860デフォルトの名無しさん:2005/10/28(金) 10:27:42
>>856
printfはcdeclだから本来callの後に引数として積み上げた$helloの分の
add esp, 4でもしないといけない。
でも直後のleaveによってmov esp, ebp; pop ebpされるから省略されたと考えられる。
というわけだから一応
>call printfとなにか関係があるのでしょうか...。
この答えとしては関係ある、ということになる。他のレジスタ使ってもいいが
leaveの動作見ても判るようにebpはそういうことする専用レジスタだから。
861デフォルトの名無しさん:2005/10/28(金) 10:35:17
フラグレジスタってなぜ必要ですか
862デフォルトの名無しさん:2005/10/28(金) 10:45:01
>>861
必要というわけではなく設計でフラグレジスタを採用しただけ。
たとえばたいていのRISCアーキテクチャではフラグを採用せず
条件分岐は「レジスタが0か否か」程度になってることが多い。

…ってなことよりも根本的な質問をされてるような気もするが。
863デフォルトの名無しさん:2005/10/28(金) 10:46:36
>>861
フラグレジスタにはどんな種類があるか調べろ。その過程で自ずと必要性の有無がわかる。
864デフォルトの名無しさん:2005/10/28(金) 22:30:03


【拷問ビデオ】恋人がAVに出演してた【許すな!これはAVじゃない】
http://ex10.2ch.net/test/read.cgi/news4vip/1130499649/

865デフォルトの名無しさん:2005/10/29(土) 15:58:04
初歩的な質問ですいません。
学校で8085アセンブラの勉強をしているんですが、これは
8086の本を買っても対応できますか?
866デフォルトの名無しさん:2005/10/29(土) 16:00:47
やめとけ
867デフォルトの名無しさん:2005/10/29(土) 16:12:12
やめといたほうがいいですか・・・。

私の大学のアセンブラの講義が、教科書を使わずに自分でwebに上がっているテキストを印刷して持ってくるという
スタイルでやっているんです。
しかしそのテキストに書いてある内容があまり良くなく、困っています。
(講義も、分かる人にしか分からない感じで進められる・・・0
そのためamazonで8085関係の書籍を買おうと思っったのですが、「現在取り扱いしていません」となっていて
廃盤になっているようです。

何かお勧めの本や、これやっときゃ8085もわかるよ的なものがありましたら
教えていただけないでしょうか?お願いします。
868デフォルトの名無しさん:2005/10/29(土) 16:15:21
分かる人がいるんだったら教えてもらえばいいんジャマイカ
869デフォルトの名無しさん:2005/10/29(土) 16:28:42
>>865
8085は、8080の後に出てきたCPUで8080とニモニックに互換性がある。
しかし、それ故に8085アセンブラの本は皆無に等しい。
因みに8bitCPUには余りにも有名なZ80があるが、これも8080の上位互換命令セットを持っている。
但し、こちらはニモニックがインテル形式ではなくザイログ形式となるため、見た目の互換性はない。

従って、8085アセンブラの講義に使えるのは8080の書籍くらいしかないと思われる。
#私自身は8085もザイログ形式で書いてたけどね。
870デフォルトの名無しさん:2005/10/29(土) 16:47:35
>>869
丁寧な説明ありがとうございます。
講義では「intelのすっげー昔のCPUだよ」くらいの説明しかされなかったので
大変助かりました。

とりあえず8080の書籍を探してみます。
871デフォルトの名無しさん:2005/10/29(土) 18:08:12
どうせ机上の空論でああだこうだやるだけなんだから
そんな事なら、インストラクションセットだけあれば十分だろ?
872デフォルトの名無しさん:2005/10/29(土) 18:44:53
そこでCASLですよ
COMETですよ
873デフォルトの名無しさん:2005/10/30(日) 18:18:18
>>865
8085は命令的には8080をちょっと改良したもの。
8086は16bitアーキテクチャで8085との命令の互換性はない。
Z80は8080とバイナリレベルでほぼ上位互換。
まだZ80の本は見かけるからそれを見ればそれなりにわかるはず。
ただし、Z80はニーモニックが違うことと命令が大幅に拡張されているから
注意しないといけない。
できれば8080の本を見たほうが良い。
それとあわせて8085の拡張命令がわかればそれですむはず。
8086の本を見ても8085の事はほとんどわからない。
ハードウェアを弄るならそれなりに参考にはなるが。

しかし今ごろ8085をやってなんの意味があるんだ。
まだZ80をやるほうが色々と便利だと思うが。
874デフォルトの名無しさん:2005/10/30(日) 18:24:19
8085で追加されたのって、ハードがらみの2命令だけだった希ガス。
その二つをマクロで作ればザイログ表記でも使えるというのが味噌。
#勿論それらのCPUの違いを承知の上でならば。
875デフォルトの名無しさん:2005/10/30(日) 21:28:56
RIM(Read Interrupt Mask) と SIM(Set Interrupt Mask) ですね。
非対応なアセンブラを使う時は、DB 20H とか DB 30H でコーディングしたりします。
876デフォルトの名無しさん:2005/10/30(日) 21:42:43
皆さん、アセンブラは何使っていますか?
877デフォルトの名無しさん:2005/10/30(日) 22:03:53
こないだまではMASM使ってた。
最近はアセンブリ書くの面倒だからもっぱらIntrinsics使ってる。
878デフォルトの名無しさん:2005/10/31(月) 16:53:03
アセンブラってニーモニック参照しながら組むのが基本だよな。
勉強ならプロセッサにこだわることもないんじゃね?
俺もここ最近勉強始めたけど、z80とか6502(学校の図書館に分かり易い本があった)
とかで勉強してるし。つか、昔のプロセッサの方がシンプルで良いな。
RISCとかCISCとか、プロセッサ独自の細かい違いはまた別だろうけどね。
879デフォルトの名無しさん:2005/10/31(月) 17:17:41
>>878
あおりではなく、純粋な興味なんだけれど、
アセンブラの勉強ってどんな勉強をしているのか教えてもらえませんか?
880デフォルトの名無しさん:2005/10/31(月) 20:19:39
>>878
そこでCASLですよ
881デフォルトの名無しさん:2005/10/31(月) 20:56:39
>>878
勉強でやるなら、
・資料が入手しやすい→独学しやすい
・ユーザーが多い(多かった)→人に質問しやすい
・現役で活躍中(エミュレータ含めて)→実際に動かせられる
あたりの要素を考慮して選べば、多少幸せにスタートできる。

Z80/8080、6502あたりなら上の全部の条件を満たすから、
初心者にはお勧めだな。8bitは仕組みも単純だし。
(電子系に強ければH8とかのPICって道もないではないが)

CASLでもいいけど、実装がないのが微妙だな(エミュレータはあるが)。
882デフォルトの名無しさん:2005/10/31(月) 21:05:41
初めて読む8086を買いましたが時代を逆行したかと思いました......。
たしかに大切そうなことが書いてありますが、MASMばかりですね.....。
883882 ◆QmXBz55CBA :2005/10/31(月) 22:09:28
xpのコマンドプロンプトのdebugコマンドでdiskcopy.comをいったんメモリに読み出して、
そのままwコマンドを打ってファイルに書き出したのですが、バイナリエディタで開いてみると内容がまるっきり変わってしまっていました。
いったいこれはなにが起こったんでしょうか....?
884デフォルトの名無しさん:2005/10/31(月) 22:09:32
そこでIntelのSIMD命令の勉強ですよ。
わりと実用性は高いと思う。
885デフォルトの名無しさん:2005/10/31(月) 22:41:45
>>883
それ、拡張子はCOMだけど、中身EXE(Win2kでそうだから、xpも多分同じ)。
セグメントの展開とかBSSの確保とかシンボルの再配置とかいろいろされてるから、
ファイルイメージとメモリイメージはかなり違う。

VectorあたりからDOS時代のシンプルなコマンドひろってきて試したほうがいいと思うよ。
あのへんなら確実に純粋なCOMだから、ダンプしてもほとんど一緒のはず。
(凝った奴だと独自にセグメント操作したりしてるからめんどい)
886デフォルトの名無しさん:2005/10/31(月) 22:54:20
>>883
xpのdiskcopy.comは名前こそ.comだが実際には.exe形式なので、loadした時点で再配置されている。
従って、そのままでは元の形にはwriteできない。
887886:2005/10/31(月) 22:55:22
げげん、被った。

先頭2バイトが'MZ'なら.exe形式ね。
888882 ◆QmXBz55CBA :2005/10/31(月) 23:13:11
>>885,>>886さん
どうもありがとうございました。
確かに先頭2バイトは'MZ'でした。exe形式(32ビット??)だといろいろと妙なことをやるみたいですね...。
nasmでサンプルコードを書いて16ビットコードを吐かせて本に載っていたことと同じことをやったら
しっかりと同じものが書き込まれていました。
よかったです、本当にありがとうございます。
889886:2005/10/31(月) 23:36:07
>>888
32bitとは直接関係ないよ。16bitでも.exe形式で作れる。
つーか、.com形式は単一セグメントモデルだから、
大きなプログラムは必然的に.exe形式にする必要があった。
#まぁ、アセンブラでそげなもんを作るわけでもないだろうから.com形式だけでもいいとおもうけど。
890CASL ◆ukjpFpULac :2005/11/01(火) 18:39:10
CASLUを使って

10進数の100を16ビットの2進数で表現したときに、
その値の中に含まれる0の個数を、メモリに格納するプログラムの作成。
プログラムの終わりの部分は、下記で、0の個数は、ANSの領域に格納される。

CNS DC 100
ANS  DS 1
   END
わかった人は教えて下い。


891デフォルトの名無しさん:2005/11/01(火) 19:01:27
LEA GR1, 13
ST GR1, ANS
892デフォルトの名無しさん:2005/11/01(火) 19:49:03
古っ
893デフォルトの名無しさん:2005/11/02(水) 02:25:46
何故に CASL なのかと。
894デフォルトの名無しさん:2005/11/02(水) 19:32:29
質問!
DOS のプログラムから WindowsNT 系のDOSプロンプトと本物の
MS-DOS Version 4.X, 5.X と区別する方法ってある?
AH=30hのINT 21hやINT 2Fhでは区別ができん。

今は一応環境変数でOS=Windows_NTというものを検索してごまかしているけど
もっとスマートな方法ない?

895CASL:2005/11/02(水) 21:27:08
891は890の答えなのでしょうか?
次に、
アセンブラ言語CASLUを使って

4桁の16進文字列(0−9、および、A-Fの文字を組み合わせ
た文字列)を入力しそれを10進数に変換して、メモリに格納
するプログラムを作成せよ。
プログラムの終わりの部分は、下記で、変換した10進数は、ANS
の領域に格納されるものとする。


IBUF DS 4
ILEN DS 1
C000F DC #000F
ANS  DS 1
   END
わかった人は教えてください
プログラムをCASLで書いてください
896デフォルトの名無しさん:2005/11/02(水) 21:32:17
>>894
int 21h, ax=3306hでVer.5.50(bx=3205h)が返ってくれば
NT系のコマンドプロンプト。
897デフォルトの名無しさん:2005/11/02(水) 23:38:01
>>896
ありがとぉ
898デフォルトの名無しさん:2005/11/02(水) 23:52:40
>>895
宿題はム板の宿題スレでどうぞ
899デフォルトの名無しさん:2005/11/03(木) 00:00:17
>>898
いや既にマルチだし
900デフォルトの名無しさん:2005/11/03(木) 02:59:48
VMを作りたいと思います。
たたき台になりそうな資料がありましたら教えてください。
901デフォルトの名無しさん:2005/11/03(木) 03:08:49
VTやPacifica対応のCPUが出てきたらゾロゾロ出てくるんじゃないの?
902デフォルトの名無しさん:2005/11/03(木) 07:46:44
PC-98エミュレータくらいいくつもあるし、それ参考にすれば?
903デフォルトの名無しさん:2005/11/03(木) 12:11:44
>>900
Bochs のソースとかはどう?
904デフォルトの名無しさん:2005/11/03(木) 18:29:31
>>895
>>891のコードが、それ(だけ)を教官のところに持っていったら

 「おまえ、俺をバカにしてるだろ」

と言われる種類のものであることを見抜けないなら勉強するだけ無駄。

さっさと学校やめちまえ。
オマエみたいなのに業界に来られたら困る。
905デフォルトの名無しさん:2005/11/03(木) 20:35:12
ちなみにCASL II (COMET II)では LEA は無くなったので(旧CASLにはあった)
正しくは
  LEA GR0, 13
ではなく
  LAD GR0, 13
だったりする。
906905:2005/11/03(木) 20:36:32
訂正
×GR0
○GR1
907デフォルトの名無しさん:2005/11/13(日) 16:01:13
ぜとはちほしゅ
908デフォルトの名無しさん:2005/11/13(日) 18:30:30
ぜっぱちじゃないのか
909デフォルトの名無しさん:2005/11/13(日) 21:18:51
Z8?
あれは面白い石だった。
910デフォルトの名無しさん:2005/11/14(月) 22:00:00
age
911デフォルトの名無しさん:2005/11/18(金) 18:44:55
高級言語プログラマのためのアセンブラ入門
ttp://www.cbook24.com/bm_detail.asp?sku=4797332816

発売: ソフトバンク クリエイティブ
ISBN: 4-7973-3281-6
本体価格: \3,500
発売日: 2005/11/30
サイズ: A5判
ページ数: 456
著者: 林晴比古
912デフォルトの名無しさん:2005/11/18(金) 18:50:20
今年はアセンブラの本がたくさんでてるよね
913デフォルトの名無しさん:2005/11/18(金) 19:04:51
>著者: 林晴比古
これって何人いるの?
914デフォルトの名無しさん:2005/11/18(金) 19:15:13
目次を見るだけで悪本の香りが漂うな
915デフォルトの名無しさん:2005/11/18(金) 19:28:21
MacOS Xでアセンブリやりたいんだけどどこかいいサイトないかな?
916デフォルトの名無しさん:2005/11/18(金) 19:34:53
氏のC言語の本は良かったが、Javaのは糞本だった。
少なくともプログラミングをやったこと無い人には
これでJavaを理解しろと言われても無理だろう。入門書としては
全く薦められない、そういう感じの本だった。

917デフォルトの名無しさん:2005/11/18(金) 19:44:07
入門書は結城本で決まりでしょ
918デフォルトの名無しさん:2005/11/18(金) 20:17:23
>>917
激しく同意
919デフォルトの名無しさん:2005/11/18(金) 20:25:28
本人乙。
920デフォルトの名無しさん:2005/11/18(金) 20:34:33
>>916
あれが良本かよ
921デフォルトの名無しさん:2005/11/18(金) 20:41:11
林晴比古のは読んでないんだけど、パラパラめくった感じ
なんか厨臭さを感じたんでスルーした記憶が
922デフォルトの名無しさん:2005/11/18(金) 22:14:38
他のCの本なんて糞ばっかじゃん。
結城浩の方が遥かに厨房臭いぞ
923デフォルトの名無しさん:2005/11/18(金) 22:23:29
結城ってCの入門書書いてんの?
てっきりJavaの話かと思ってたよ
924デフォルトの名無しさん:2005/11/18(金) 22:32:17
結城本ってJavaだろ?

と思って検索したら、Cもあるみたいだね。

でもやっぱり結城浩はJava関連の書籍で評価したいところだ
925デフォルトの名無しさん:2005/11/18(金) 22:50:25
はじめて読む486を買いましたが対象のOSがDOSやらWindows3.1になっていて
この書籍を読むのが大変苦労します。
言語処理系もだいぶお古なようです。
XP上で16ビットプロンプトに切替えてできないこともないのですが
ノートが大変遅いためXPを起動するだけで一苦労です。
これを制限があまりないLinux上でできれば一番いいと思うのですが、
ところで、この書籍を最近手にされてお読みになった方は
どのように実習されたんでしょうか?
御存じの方がいらっしゃいましたら是非ご教授下さい。
926デフォルトの名無しさん:2005/11/18(金) 23:24:41
はじめて読む486はOSを書きたい人間が読むものであって、OSに守られた上でなにかしたい人間には向かない。
927デフォルトの名無しさん:2005/11/18(金) 23:28:32
つまりLinuxのコミッタを目指す奴用か
928デフォルトの名無しさん:2005/11/19(土) 00:33:28
>>925
中古で適当なPC-98買ってきたら?
929デフォルトの名無しさん:2005/11/19(土) 00:54:21
QEMUなんかのエミュレータ+Digital Marsあたりのコンパイラ+nasmかなんかで一通り環境は構築できそうだが。
サンプルコードがそのまま通るかどうかはともかく。
930デフォルトの名無しさん:2005/11/19(土) 07:14:56
Digital Marsなんか薦めるなよw
931925:2005/11/19(土) 09:12:33
>>926-930
ご意見ありがとうございます。
おっしゃるとおりOSを書きたいなと思っていた次第で
この本を終えたらA.S.タネンバウム教授の本を買って作ろうと考えています。
新しすぎることがこんな弊害になるとは....。
中古PC-98などを探してみましたが100円のものから万単位するもの
まであるんですね。それにしてもでかいです...。
Win3.1がFD12枚も使うなんて全く知りませんでした。
金銭的余裕も今あんまりないし、どうしましょう...。
932デフォルトの名無しさん:2005/11/19(土) 09:15:37
そのノートPCのHDDを消しても良いのならFATパーティションを確保して、
何かDOSでも入れられないかと言ってみる。
933デフォルトの名無しさん:2005/11/19(土) 14:44:11
アッカーマン関数をINVOKEと.IFを利用しないでmasmの環境で書きたいのですが、再帰がうまくできなくて困っています。どこか参考になるページなどありましたらご掲示いただけますでしょうか。よろしくお願いします。
934デフォルトの名無しさん:2005/11/19(土) 14:57:27
>>929
qemuとdigitalmarsはいいんだけど、nasmをmasmにすれば書きやすくなる。
入手法はお約束っぽく『ml.exe プロセッサパック』でぐぐる。

OSを書きたいのなら、アセンブラなんて泥臭いところは既存のをぱくってきて、
自分なりの試みをできる部分だけをC++とかで書くのが効率的だと思う。
特定のHWを決め打ちにするとかコンセプト次第でアセンブラレベルでガリガリ書く必要も出るだろうけど、
普通そういうのは無いからね。
935925:2005/11/19(土) 20:18:37
>>932,>>934
お返事が遅れてしまってすみません。
とりあえずはこの環境をなるべく崩さずに
教えていただいた方法をいろいろ試していけるとこまでやってみたいと
思います。
いろいろアドバイスありがとうございました。
936デフォルトの名無しさん:2005/11/19(土) 21:06:19
開発環境まで一緒にしないと何もできない程度の応用力じゃ、
OSどころかアプリすら書けるかどうか怪しい。

今の環境残したいなら、開発システムはFDからブートさせればいいんじゃない?
それ以上のことは、ファイルシステムさわるようになってからでも遅くない。
937デフォルトの名無しさん:2005/11/21(月) 23:21:23
925じゃないが、CUIを知らずに育ったGUIっ子のオレみたいなのにとっては
環境の入手が困難で資料も少ない昔の環境ってのは結構キツいものがある。

それはそうと、NASMの日本語資料みつかんね.....
時間の経過と共に資料がどんどん無くなってくのな....オレもDOSの時代に生まれたかったyo。
938デフォルトの名無しさん:2005/11/22(火) 00:31:51
>>937
なくなってるんじゃなくて、探し方が下手か、元々(ネットに)ない。
・・・まあ、なくなっていく資料もあるけどね、特にメーカー公式系の情報は。

DOSが現役だった頃、フリーの定番CコンパイラといえばLSI-Cだったけど、
MS-CあたりとはとはABIや識別子の変換規則が違うものだから、
定番のライブラリとかがほとんど使えなくて悲しい思いをしたなあ。
貧乏学生に買えるようなシロモノじゃなかったからね、MS-Cなんて。PC自体持ってなかったけど。

情報源も書籍か雑誌しかないから、田舎じゃどう転んでも入手できない情報もあった。
そもそも情報があるってこと自体知らないなんてザラだった。
雑誌のプログラマが平気でN-88BASICのBIOSルーチン呼び出してるのが不思議だった。
なんでそんなこと知ってるんだよって。解析資料が出版されてたんだけど。
大学生協で技術書が棚いっぱいに並んでるのを見たときは冗談抜きで幸せだったなあ。

今ならOMF(昔のMS LINKで扱えた.OBJの形式)の資料もネットで簡単に手に入るから、
LSI-C付属の文書とにらめっこすれば、ラッパー噛ますなりOBJ書き換えるなりして
無理矢理つなぎ合わせるくらい楽勝だなあ、とふと思った今日このごろ。
今更だけどね。
939デフォルトの名無しさん:2005/11/22(火) 05:59:24
Microinstructionの質問なのでここで質問していいのか分かりませんが
該当するスレが見つからなかったもんですからここで。

'imul'というMic-1には実装されていない掛け算のmicroinstructionを
作りたいのですが、下のであってますでしょうか?
アイディアは間違ってないと思うんですが
テンポラリー変数としてOPCをこんな風に使ってよいものか分かりません。

imul1 OPC = MAR = SP = SP-1; rd
imul2 H = TOS
imul3 MDR = TOS = MDR + OPC
imul4 Z = H = H-1; if (Z) goto imul5
else goto imul3
imul5 TOS = MDR; wr; goto Main1
940デフォルトの名無しさん:2005/11/22(火) 20:00:03
x86(i686)上でアセンブラを書いてるんですけど、
アフォみたいにレジスタが少ないんですけどなんとかなりませんか?
941デフォルトの名無しさん:2005/11/22(火) 20:00:49
メモリ使え
942デフォルトの名無しさん:2005/11/22(火) 20:21:34
適当にレジスタ使いまわしとくとCPUが勝手に内部レジスタに読み替えてくれる。
943デフォルトの名無しさん:2005/11/22(火) 20:45:52
x64なら16本ぐらい汎用レジスタがあったと思う。

x86はガンバレ。マジ頑張れ。
アセンブリ書く目的がMMXやSSEなら、Intrinsicsを使ってみるという手がある。
944デフォルトの名無しさん:2005/11/22(火) 21:13:19
むしろ
8086を一遍かじって
少ないとはいえアドレッシングに全てのレジスタが使える幸せをかみしめろ
945デフォルトの名無しさん:2005/11/22(火) 21:15:04
どうせなら8080をかじれ
946デフォルトの名無しさん:2005/11/22(火) 22:00:13
やっぱり6502でござるよニンニン
947940:2005/11/22(火) 22:03:25
>>941
だってぇー、メモリアクセスしたく無いんだもん。 ><

>>942
x86-64の奴をポーティングしようとしたら、あまりの少なさに俄然としたんだお。 ><
948デフォルトの名無しさん:2005/11/22(火) 22:04:15
>>947
じゃぁ、頑張れ。
949940:2005/11/22(火) 22:04:50
>>947
>>942じゃなくて>>943だった。 ><
950940:2005/11/22(火) 22:10:13
しょうがないから、ebpとespぶっ壊す事にしたお。 ><
951デフォルトの名無しさん:2005/11/22(火) 22:21:39
>950
ちょwwwおまwww
952940:2005/11/22(火) 22:35:37
movで汎用レジスタからxmmレジスタに転送できない件について

あったら便利なのにな
953デフォルトの名無しさん:2005/11/22(火) 22:35:52
ぶっちゃけ、レジスタ二つにスタックがあれば何でも出来る


…よね?
954デフォルトの名無しさん:2005/11/22(火) 22:52:08
DOSのファンクションコールが呼べない。
955デフォルトの名無しさん:2005/11/22(火) 22:57:13
AXとDXがあればDOS呼べるぞ

CP/M時代のファンクション限定だがな
956デフォルトの名無しさん:2005/11/22(火) 22:58:47
>>953
ip と fl もレジスタであることは認識しているか?
957デフォルトの名無しさん:2005/11/22(火) 23:04:39
>>956
953の言う2つのレジスタはきっとその2つに違いない。
演算に伴う入出力はは全てメモリからという仕様に違いない。
958デフォルトの名無しさん:2005/11/22(火) 23:10:28
スタックポインタが・・・
959デフォルトの名無しさん:2005/11/22(火) 23:13:26
メモリが無いんだよ。
四則演算とpush popだけ。
オーバー・アンダーフローは例外かな
960デフォルトの名無しさん:2005/11/22(火) 23:20:37
理論的な話だけなら、レジスタ1個で何でも計算できるけどね。
メモリは無限に必要だけど。
961デフォルトの名無しさん:2005/11/22(火) 23:27:21
プログラムカウンタとスタックポインタ以外は0ページ空間にあるCPUを設計したことはある。
ぶっちゃけ、0ページがレジスタみたいなもんだけどw
962デフォルトの名無しさん:2005/11/22(火) 23:48:27
>>952
??
movd じゃだめなの?
963デフォルトの名無しさん:2005/11/22(火) 23:55:10
>>961
6502 みたいな 8bit CPU の時代ならいざ知らず、
今それやると激しく遅そうだな。
964デフォルトの名無しさん:2005/11/22(火) 23:59:42
>>963
Z8(≠Z80)がそれに近いね。
965デフォルトの名無しさん:2005/11/23(水) 00:37:15
で、次スレどうするよ?
966デフォルトの名無しさん:2005/11/23(水) 00:42:44
>>963
常にon casheと思えばさほどでもなさそうってわけないよなあ。
コードが書きやすくなるとか、CPU自体の構造が簡単になるってあたりが利点じゃない?

>>965
このペースなら980でもいいんじゃね?
967940:2005/11/23(水) 00:43:37
>>962
スマソ
それがあったね
968デフォルトの名無しさん:2005/11/23(水) 01:50:05
「x86アセンブラ入門」

CQ出版

大貫 広幸 著
B5判 304ページ
定価2,310円(税込)

2005年12月15日発売予定!
969デフォルトの名無しさん:2005/11/23(水) 12:58:41
970デフォルトの名無しさん:2005/11/23(水) 16:50:58
http://pc8.2ch.net/test/read.cgi/tech/1132158642/359

これはどうなってるんですか?
971デフォルトの名無しさん:2005/11/23(水) 16:58:37
そのスレの事はそのスレで聞け
または自分で試せ
972デフォルトの名無しさん:2005/11/23(水) 17:02:49
一体アセンブリだけで何冊俺に読めと?
973デフォルトの名無しさん:2005/11/23(水) 17:20:36
move $a0, $(´・ω・`)知らんがな
li $v0, 4
syscall
974デフォルトの名無しさん:2005/11/23(水) 18:04:11
やねうらおが今年中に
これぞ!っていうアセンブラ本出すとかいってたけど、
あれはどうなった?
975デフォルトの名無しさん:2005/11/23(水) 18:27:15
>>970
mainの後ろの ret と int 0x20 は不要。
976デフォルトの名無しさん:2005/11/23(水) 18:30:19
>>975
もうちょっと勉強してから出てこいよw
977デフォルトの名無しさん:2005/11/23(水) 22:37:05
int20は確かに要らないが、こんなのが唐突に出てくる文脈が
読めない漏れはVIPPERにはなれなさそうだ。
978デフォルトの名無しさん:2005/11/23(水) 23:22:57
>>977
どうやって終了するんだ。
979デフォルトの名無しさん:2005/11/24(木) 00:04:01
アセンブラ… やらないか? ウホッ!(AAry
980デフォルトの名無しさん:2005/11/24(木) 00:24:28
>>978
(プログラム実行前にDOSがスタックの先頭に0000hを入れる)
   ↓
main からスタート
   ↓
func のアドレスをスタックに積む
   ↓
(最初の) ret で func にジャンプ
   ↓
文字列表示
   ↓
(func 最後の) ret で 0000h にジャンプ
   ↓
0000h にはCP/Mとの互換性から、あらかじめ "INT 20h" のコードが入っているため
プログラムが終了する。
981デフォルトの名無しさん:2005/11/24(木) 00:34:10
>>2の過去ログの順番ごちゃごちゃだな。ソートして番号付けると、こうかな。

アセンブラ… (´・∀・`)ヘー (Part8)
http://pc8.2ch.net/test/read.cgi/tech/1101390110/
アセンブラ… (°Д°)ハァ? (Part7)
http://pc5.2ch.net/test/read.cgi/tech/1093519463/
アセンブラ… (;´Д`) ハァハァ (Part6)
http://pc5.2ch.net/test/read.cgi/tech/1087897801/
アセンブラ… (*´д`*)アハァ… (Part5)
http://pc5.2ch.net/test/read.cgi/tech/1076157613/
アセンブラ… (゚д゚)ウマー (Part4)
http://pc2.2ch.net/test/read.cgi/tech/1060928704/
アセンブラヽ(`Д´)ノモルァ (Part3)
http://pc2.2ch.net/tech/kako/1040/10402/1040297337.html
アセンブラヽ(`Д´)ノモルァ (Part2)
http://pc3.2ch.net/tech/kako/1016/10169/1016991911.html
アセンブラ… (・∀・)イイ! (Part1)
http://pc.2ch.net/tech/kako/1002/10022/1002267809.html

>>980新スレよろしく。
982デフォルトの名無しさん:2005/11/24(木) 00:46:10
スレタイはどうすべ?
983デフォルトの名無しさん:2005/11/24(木) 01:00:09
(0w0)ウェーイは、なんか妙に残るというか気に入ってしまったからな
次も良いの頼むぜ
984デフォルトの名無しさん:2005/11/24(木) 01:02:25
たてますた。

アセンブラ… ヽ(゚∀゚)ノフォーウ!
http://pc8.2ch.net/test/read.cgi/tech/1132761638/
985デフォルトの名無しさん:2005/11/24(木) 01:07:04
>>980
そっか、callじゃないからmainには戻ってこないんだった。勘違いしてた。
986940:2005/11/24(木) 01:09:43
>>984
そのスレタイ、あんまりいくないお。  ><
987983:2005/11/24(木) 01:34:15
>>984
OKOK、許容範囲だ
988デフォルトの名無しさん:2005/11/24(木) 03:58:46
真似して一丁書いてみたぞw

cseg segment
assume cs:cseg

org 100h
main:
mov ah,09h
mov dx,offset msg
int 21h
mov ah,4ch

msg db "ヘ!? ダメポorz", '$'

cseg ends
end
989デフォルトの名無しさん:2005/11/25(金) 20:14:39
990デフォルトの名無しさん:2005/11/26(土) 00:31:31
埋め
991デフォルトの名無しさん:2005/11/26(土) 03:26:45
普段何も発言出来ない私が梅
992デフォルトの名無しさん:2005/11/26(土) 03:28:42
1日200レスしか出来ない俺が埋め
993デフォルトの名無しさん:2005/11/26(土) 08:05:17
うめー
994デフォルトの名無しさん:2005/11/26(土) 15:10:05
うまー
995デフォルトの名無しさん:2005/11/26(土) 15:12:53
995
996デフォルトの名無しさん:2005/11/26(土) 15:32:34
996
997デフォルトの名無しさん:2005/11/26(土) 16:37:57
997
998デフォルトの名無しさん:2005/11/26(土) 16:38:29
998
999デフォルトの名無しさん:2005/11/26(土) 16:39:31
999
1000デフォルトの名無しさん:2005/11/26(土) 16:39:40
(0w0)ウェーイ


アセンブラ… ヽ(゚∀゚)ノフォーウ!
http://pc8.2ch.net/test/read.cgi/tech/1132761638/
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。