アセンブラ… Part 12at TECH
アセンブラ… Part 12 - 暇つぶし2ch262:デフォルトの名無しさん
08/01/01 13:50:30
>>260
どこかにその法則を説明しているサイトなり書籍はないですか?
というとか誰かアセンブラを習うのに最適な学習書を紹介してください

263:デフォルトの名無しさん
08/01/01 14:20:46
>>262
URLリンク(gcc.gnu.org)

264:デフォルトの名無しさん
08/01/01 15:19:25
>>262
asm-cだけわかればいいのか?
結局、石のアーキ知らないと、asm使う意味が薄いよ。
x86とppcじゃ違いすぎ。

265:デフォルトの名無しさん
08/01/01 16:26:57
昔、ボーランドのTURBOシリーズでCやPASCAL(Delphi)やらからAssmを呼び出す為の説明が在ったのを思い出した。

266:デフォルトの名無しさん
08/01/01 17:39:36
calling convention gcc でぐぐれ。stdcall fastcall cdeclでもいいぞ。


267:デフォルトの名無しさん
08/01/07 01:08:01
regparm使って破綻しそうな予感。

268:デフォルトの名無しさん
08/02/09 21:38:01
久しぶりにbinutilsのスナップショットきた。
asでも-marchのサポートとかが入ったから遅れたのかな?

269:デフォルトの名無しさん
08/02/12 17:32:51
コードをエンコードしてセクション名ブランクにしてセクションの属性を
IMAGE_SCN_CNT_INITIALIZED_DATA | IMAGE_SCN_MEM_READ | IMAGE_SCN_MEM_WRITE
にしてる実行時デコード型プログラムの逆アセ面倒くせー!!

はぁ、ちょっちスッキリした。

270:デフォルトの名無しさん
08/02/12 19:44:45

IA-32(x86) GASでよかったら
「プログラミングの力を生み出す本 インテルCPUのGNUユーザーへ」
URLリンク(ssl.ohmsha.co.jp)
なんてどうかな?
NASMにシフトするにしてもGASは知ってて損はないとおもうし
スタックフレームの説明ぐらいなら書いてありますよ

271:デフォルトの名無しさん
08/02/14 02:54:50
人生nopだ。

272:デフォルトの名無しさん
08/02/14 19:45:38
>>271
イ㌔

273:デフォルトの名無しさん
08/02/15 19:57:29
死ぬということじゃなくて,
何もせずに時(クロック)だけが進んでいく,って意味じゃまいか

274:デフォルトの名無しさん
08/02/15 21:08:24
hlt
後で起こしてくれ

275:デフォルトの名無しさん
08/02/16 00:25:46
俺なんか here: jmp here してるんだぞ

276:デフォルトの名無しさん
08/02/23 11:17:37
Windows32プログラミングするのにお薦めのアセンブラ、デバッガってなんですかね。

インラインアセンブラと EXDEB使ってるんだけど、32bit部分対応で微妙に使いにくい。

277:デフォルトの名無しさん
08/02/23 11:25:01
>>276
アセンブラが使いにくいのかデバッガが使いにくいのかどっちだ。

278:デフォルトの名無しさん
08/02/24 02:49:40
>>275
暖房器具ですか?
つうか"jmp $"でいいんでないかい。

>>277
デバッガじゃないかい。
機械語レベルでまともなデバッガなんて絶滅したと思うが。




279:デフォルトの名無しさん
08/02/24 15:39:58
教えてください。
int __stdcall AsmFunc(int *v1, int *v2);
という関数の中身をMASMで書きたいのですが、下のように書いてもうまく動作しません。
v1に数値3hを代入したいだけなのですが、何も変化がありません。アセンブル、コンパイル、リンクでエラーは出ませんでした。
// asmfunc.asm
_AsmFunc@8 PROC PUBLIC
 push  ebp
 mov  ebp, esp
 mov  eax, 3h
 mov  dword ptr [ebp + 8], eax
 leave
 ret  8
_AsmFunc@8 ENDP
// test.c
int v1, v2, ret;
ret = AsmFunc(&v1, &v2);
どう書くのが正しいですか?

280:デフォルトの名無しさん
08/02/24 15:40:49
age忘れ

281:デフォルトの名無しさん
08/02/24 15:51:39
mov  ecx, dword ptr [ebp + 8]
mov dword ptr [ecx], eax
こうじゃない?

282:デフォルトの名無しさん
08/02/24 15:55:59
>>281
ありがとうございます!その通りでした。
上のソースでは、v1の参照先ではなく、v1そのものに入れてしまっていたんですね。
助かりました。

283:デフォルトの名無しさん
08/02/24 18:45:07
279ですが、逆アセして色々調べたところ、下の1行で良いことがわかりました。
mov  dword ptr 8[ebp + 8], eax
MASM特有の記法でもない様子なので、これで行こうと思います。

284:デフォルトの名無しさん
08/02/24 19:28:17
インラインアセンブラでasmの前に _ が
一個の場合と二個の場合の違いを教えてください。


285:デフォルトの名無しさん
08/02/24 19:32:25
コンパイラのマニュアル読め

286:デフォルトの名無しさん
08/02/24 20:19:03
インラインアセンブラの記法はコンパイラ独自

287:デフォルトの名無しさん
08/02/24 22:04:50
ちなみにVisual C++だったらどっちでも同じだな。

288:デフォルトの名無しさん
08/02/27 12:57:59
Visual C++の場合
_asm は/Zaオプション使用時には未定義になるが
__asm は/Zaオプション使用時でも有効

289:ヽ・´∀`・,,)っ━━━━━━┓
08/02/27 23:08:56
asmだか__asmのどっちかって規格の予約語じゃなかったっけ?
はずされたんだっけ?

290:デフォルトの名無しさん
08/02/27 23:20:36
とりあえず C++ の規格には asm がある。
どういう意味になるかは処理系定義。

291:デフォルトの名無しさん
08/02/27 23:26:04
ANSI規格の解説も読めない白痴が来るとスレがひたすら引き締まる

292:ヽ・´∀`・,,)っ━━━━━━┓
08/02/27 23:28:10
アンシー(笑)

スイーツ(笑)

293:デフォルトの名無しさん
08/02/27 23:33:06
7.4 The asm declaration
An asm declaration has the form
 asm-definition:
  asm { string-literal } ;
The meaning of an asm declaration is implementation-defined.
[Note: Typically it is used to pass information through the implementation to an assembler. ]

294:ヽ・´∀`・,,)っ━━━━━━┓
08/02/27 23:46:55
__asm__ はCのほうな

295:デフォルトの名無しさん
08/02/27 23:56:26
asm は J.5.10 にあるようだが、
__asm__ なんてどこ探してもないぞ。

296:ヽ・´∀`・,,)っ━━━━━━┓
08/02/28 00:15:58
gcc

297:デフォルトの名無しさん
08/02/28 00:25:21
自分から規格の話振っといて
何で処理系依存の話してるんだ?

298:ヽ・´∀`・,,)っ━━━━━━┓
08/02/28 00:28:57
いいえ、ケフィアです。

299:デフォルトの名無しさん
08/02/28 11:55:32
>>297 病気の子なんだからほっときなさい


300:デフォルトの名無しさん
08/03/04 12:18:28
aboneばかりだが前後の状況から察するに
またあいつ負けてるのか

301:デフォルトの名無しさん
08/03/04 17:29:58
MSVCについてくるアセンブラソースを、勝手に流用したらタイーホ?
例えばx86用strcpy.asmをGAS用に移すとか。

302:デフォルトの名無しさん
08/03/04 18:39:56
ライセンス嫁

303:デフォルトの名無しさん
08/03/04 22:43:27
>>301
そりゃダメだろ。

まあ、strcpy() あたりだとどう書いても似たようなものになるとは思うが。

304:デフォルトの名無しさん
08/03/05 12:01:48
>>301
MSVCRT.DLLをリンクする程度だったら
それはシステムライブラリ扱いだからモウマンタイ?

ていう話ではない?

305:301
08/03/05 12:26:41
やっぱり黒か…
ライセンスを探したがどこにも無くて。

x86でNULLを探すための、アライメントを考えた4バイトを一気に調べるソースが、とても参考になったから使わせてほしかったけど、止めておきます。

306:デフォルトの名無しさん
08/03/05 12:37:20
単独でルーチンにもならんような、部分的なテク(イディオム)をまねするぐらいなら
問題ないな

307:デフォルトの名無しさん
08/03/05 16:18:57
>>306
現時点の業界内での常識的判断からは「問題ない」かも知れないが、
訴訟などでイチャモンをつけられる可能性は否定出来ない。
仕事のコードは 判っている範囲ではクリーンにせざる得ない世になっている気がする。


308:デフォルトの名無しさん
08/03/05 22:08:10
>>304
.dll のリンクはまた別の話だろ。

それがダメなら、Windows のアプリなんか作れないだろ。

309:デフォルトの名無しさん
08/03/05 22:46:02
かといって
for(i=0;i<max;i++){
の行をコピペしただろとか噛み付かれることまで気にすんのは杞憂がすぎるよーな。
つか strcpy ぐらいなら gas に移植しなくても gcc が標準で同等版もってそうな
気がするけど。

310:デフォルトの名無しさん
08/03/06 13:33:57
原則に戻ろう
創造性のあるコードをコピーすることが違法

311:デフォルトの名無しさん
08/03/06 14:43:52
人間は違法


312:デフォルトの名無しさん
08/03/08 07:55:54
違法だが合憲

313:デフォルトの名無しさん
08/03/10 23:18:58
どなたか教えてください。
参考書を見ながら学習中ですが、1.の環境で2.のファイルを3.のコマンドでビルドした結果4.のアセンブリコードを得ました。コールして欲しいsys_writeがコールされず、実行ファイルは思った動作になりません。
5.のように修正し、6.で実行ファイルを生成すると思った動作になります。
何が問題となって3.のコマンドでsys_writeコールが生成されないのかわかりません。


314:デフォルトの名無しさん
08/03/10 23:19:37
1.環境
CPU:AMD-K6(tm)
gcc version 4.1.2
GNU ld version 2.17 Debian GNU/Linux
ldconfig (GNU libc) 2.3.6

2.ファイル hello-asm.c
#include<unistd.h>
char message[]="Hello, world!\n";
int sys_write(int fd, const void *buf, int len){
int ret;
asm("int $0x80" : "=a" (ret) : "a" (4), "b" (fd), "c" (buf), "d" (len));
return ret;
}
void sys_exit(int stat){
asm("int $0x80" : : "a" (1), "b" (stat));
}
void main(){
sys_write(1, (void*)message, sizeof(message));
sys_exit(123);
}

3.コマンド
gcc -nostdlib -save-temps -Wl,--entry=main -Wl,-t -o hello-asm -O2 -finhibit-size-directive -fno-ident -fomit-frame-pointer -fcall-used-ebx hello-asm.c


315:デフォルトの名無しさん
08/03/10 23:21:57
4.生成アセンブリコード一部
main:
leal 4(%esp), %ecx
andl $-16, %esp
pushl -4(%ecx)
pushl %ecx
subl $4, %esp
movl $123, (%esp)
call sys_exit
popl %eax
popl %ecx
leal -4(%ecx), %esp
ret

5.正常動作アセンブリコード
main:
削除: leal 4(%esp), %ecx
削除: andl $-16, %esp
subl $16, %esp
pushl $15
pushl $message
pushl $1
call sys_write

6.修正後コマンド
as hello-asm.s -o hello-asm.o
/usr/lib/gcc/i486-linux-gnu/4.1.2/collect2 --entry=main -o hello hello-asm.o


316:デフォルトの名無しさん
08/03/11 00:10:48
asmにvolatileを付けてみたらどうかね。


317:313
08/03/11 00:25:38
>>316
おおー、直りました!
コンパイラは不要なソースとして認識したんですね。。。
-O2 → -O0 に変更したらvolatile無しでも動作しました。
ありがとうございましたm(_ _)m

318:デフォルトの名無しさん
08/03/13 12:31:21
gccでアセンブラはかせてみたら下のようになった(抜粋)んだが・・・

main:
        pushl   %ebp
        movl    %esp, %ebp
        subl    $8, %esp
        andl    $-16, %esp
        movl    $0, %eax


"andl $-16, %esp"の部分は動作的にはスタックポインタの下位4bit切り捨てはわかるんだけど、
どういう意味なのかがよく分かりません。
ページング方式だからメモリ確保かなあと思ったけど確保される容量みても全然すくないし・・・

319:デフォルトの名無しさん
08/03/13 12:43:39
アラインメント合わせだと思うけど

320:デフォルトの名無しさん
08/03/13 19:19:06
-n での AND は便利なので覚えるべし。
>>318の例だと
16バイトアラインで8バイト以上のスタック領域を確保
という意味になる。
机上で考えてごらん。

もちろん>>318の例のエピローグコードは理解できるね?

321:318
08/03/14 14:02:58
レスありがとうございます。
いろいろ自分でも調べてましたが、アライメントの調整っぽいですね。
アセンブラは学校で理論的なことは教えてもらったんですが、実践的なことは全然ならってなくて・・・

>>320
エピローグコードって最初の3行のコードですよね?
これって
呼び出し元のベースポインタの退避
呼び出し先のベースポインタの設定
最初のプッシュしたデータ分のスタックポインタの設定
ですよね?

322:デフォルトの名無しさん
08/03/14 18:24:59
辞書位引け epilogue prologue

323:デフォルトの名無しさん
08/03/16 23:37:20
プロローグとエピローグのどっちがどっちだったか分からない時期が俺にもありました…

324:デフォルトの名無しさん
08/03/16 23:41:13
pro- 前~
epi- 後~

325:デフォルトの名無しさん
08/03/17 04:01:46
GCCの拡張で、".code16gcc"を使えば、32bitセグメントから16bitセグメントの関数を
呼び出したり(その逆も)するのが簡単になるようなんですけど、16bitと32bitが混在
するようなコードを書く場面ってあるんですか?

326:デフォルトの名無しさん
08/03/17 10:51:51
ブートローダーとか?

327:デフォルトの名無しさん
08/03/17 10:54:18
仮想86モードとか?

328:デフォルトの名無しさん
08/03/17 10:55:11
リブートのためのエピローグコードとか?

329:デフォルトの名無しさん
08/03/20 00:06:50
16ビットで書いてあるコードを32ビットに移植したいときとか?

330:デフォルトの名無しさん
08/03/20 19:44:52
物好きとか?

331:デフォルトの名無しさん
08/03/20 22:27:27
code16gccは16bitコードを埋め込める機能であって呼び出せる機能ではないようだが

332:デフォルトの名無しさん
08/03/20 22:28:17
DEADBEEF

333:ヽ・´∀`・,,)っ━━━━━━┓
08/03/20 22:31:35
BADFACE

334:デフォルトの名無しさん
08/03/21 12:18:21
CAFEBABE

335:デフォルトの名無しさん
08/03/21 13:13:16
EFFACED

336:デフォルトの名無しさん
08/03/21 15:47:17
BACA

337:デフォルトの名無しさん
08/03/21 17:13:58
LCDのバイアス電源は主電源落とす前に切っとけよ。
とかいうときに。

338:デフォルトの名無しさん
08/03/22 12:46:20
Ce11Ba11

339:デフォルトの名無しさん
08/04/13 09:51:15
最近アセンブラ勉強し始め、初めての8086+Debugコマンドで本を読み終わったんだが、
次はどこぞのアセンブラを使ってみたいと思う。

少し前だとnasmだと思うけど、最近は何がメインで使われてる?
Win+CygwinかFreeBSDの環境で使う予定。

340:デフォルトの名無しさん
08/04/13 10:03:05
あげ

341:デフォルトの名無しさん
08/04/13 10:13:32
>>339
Windowsのデバドラ開発とかだったら由緒正しいMASM。確かDDKに添付。
PC-Unix界隈だとやはりnasmか、あるいはgas

342:デフォルトの名無しさん
08/04/13 10:28:09
こんな過疎スレ常に見てるやついないって 今でもNASM・GAS

343:デフォルトの名無しさん
08/04/13 10:38:01
>>341,342
thx
まだnasmがいいのか。MASMも使えるならやってみるかな

ム板ってアセンブラスレ、ここくらいだっけ?
やっぱり2chにはアセンブラ使い少ないのか。。。

344:デフォルトの名無しさん
08/04/13 11:38:47
て言うか、RISC が流行りだした頃から、アセンブラのコード書くのが
激しく面倒になったし C でそれなりの性能が出るようになったから、
BIOS / ブートローダとか、ほんとにカリカリチューニングする奴ぐら
いしか使ってないだろ。

345:デフォルトの名無しさん
08/04/13 11:46:34
音声処理、画像処理、暗号化、圧縮…
まあこんなとこか

346:デフォルトの名無しさん
08/04/13 11:55:44
ダンゴさんはもっと有用なことに使ってそうだな

347:デフォルトの名無しさん
08/04/13 12:01:05
>>344
R3000とかは、そこら辺のCISCなどよりむしろ楽だったよ、しかも高速だった。
R4000以降は最低だけどね

348:デフォルトの名無しさん
08/04/13 12:03:01
gas は嫌いだ、人が書くようにできてない

349:デフォルトの名無しさん
08/04/13 14:04:07
gasの構文はきもいんだよな

350:デフォルトの名無しさん
08/04/13 14:55:30
>>347
アセンブラの書きやすいCPU(基本に忠実な32ビットCPU)
68020、MIPS32、V70
アセンブラの書き難いCPU
SuperH、Alpha、SPARC、ARM、IA64など

351:デフォルトの名無しさん
08/04/13 15:23:07
アセンブラの書き難いCPU
x86も追加してくれ

352:デフォルトの名無しさん
08/04/13 15:49:20
ARM そんなに悪くないけどなぁ。


353:デフォルトの名無しさん
08/04/13 16:40:32
こなれてると思う。

354:デフォルトの名無しさん
08/04/13 17:17:44
350がロートルだということはわかった

355:デフォルトの名無しさん
08/04/13 19:18:04
遅延ジャンプの理由は何?

356:ヽ・´∀`・,,)っ━━━━━━┓
08/04/13 19:54:15
SHは「Cの関数で変数はほとんど16個以内に収まるからレジスタ数は16あれば十分」
みたいな設計思想で作られてるんでアセンブラではそんなに扱いやすくないんでないの?
良くも悪くも高級言語時代の組み込みCPUアーキテクチャって感じ

あとIA64も同意する。

357:デフォルトの名無しさん
08/04/13 20:33:20
SH はセコくて嫌だったな。
そーゆー設計思想だからしゃーないけど。


358:デフォルトの名無しさん
08/04/13 21:39:52
アドレスの指定がめんどくさい

359:デフォルトの名無しさん
08/04/14 04:44:51
8085やZ80や6809や8051はASM書きやすかったな。85は今でも現役だけど。

360:デフォルトの名無しさん
08/04/14 04:47:36
要求がそれほどじゃなかったからね、昔は。

361:デフォルトの名無しさん
08/04/14 07:01:20
8085よりは演算命令が充実してレジスタの多い8086の方が書きやすい。
でも68000はもっと書きやすい。って行くとR3000は書きやすかった。

362:デフォルトの名無しさん
08/04/14 10:31:08
>>356 はGPLv3とAGPLを混同する悪質なFUDをばらまいてた固定

363:ヽ・´∀`・,,)っ━━━━━━┓
08/04/14 11:46:57
一言で言うとGNUは嫌いです

364:デフォルトの名無しさん
08/04/14 11:48:32
>>359
この時代で一番いいのは6502だろ、マイナーだったことと周辺LSTのそろいが悪いので売れなかったけど。
反面一番売れたZ80は、タイマー・DMA・I/Oインターフェイスと大抵の物がそろっていて、はんだこて握らなくて済むように
ソケットにでもしてしまえば今のPC自作と変わらないレベルだった。
それ以外にもZ80は、メモリーを節約しやすかったので、この点もメモリーの制約の大きな時代では大きなアドバンテージになったと思う。
それで、書きやすかったかといえば・・・・・ちょっと微妙な気がするな。
16ビット計算もなんちゃって計算なのでフラグが使えなかったりと・・・
高速な乗算に使える1を入れての右シフトは公開してほしかった、こんな大事なもの非公開の隠し命令にするなんて何事だと当時思った。
もうひとつついでにDRAMのリフレッシュをする機能であるRレジスタは、CPUリセットで停止してしまう片手落ちをなんとかして使えるものにしてほしかったな。
リセットするごとにメモリーが消えては使い物になりましぇん。
こんな事書いていると年がばれるぅぅぅ

365:デフォルトの名無しさん
08/04/14 13:06:09
>>363
わざと誤情報をばら撒いたという事か
悪質だね

366:デフォルトの名無しさん
08/04/14 22:18:02
>>361
MIPSは良かったねぇ

>>365
かわいそうな子にさわっちゃいけません


367:デフォルトの名無しさん
08/04/14 23:22:44
>>364
今もこれだけの愚痴が出るということは
かなり根に持ってるな?w

アセンブラ、ゴリゴリいじってみたい気もするけど、
今いじる仕事といえばかなり卓越してないと無理だろうな。。。
趣味だけにしとこ

368:デフォルトの名無しさん
08/04/14 23:40:36
6502ってハミコンか?

369:デフォルトの名無しさん
08/04/15 01:05:09
ダンゴさんがピシっと〆てくれたな

370:デフォルトの名無しさん
08/04/15 06:51:48
6800作ったMotorolaからスピンアウトした連中がMostekって会社作って6502作った
6800は8bitとしては歪んだ(贅沢な)設計だったが6502は潔かったので安くて速かった
AppleIIに採用されたことで有名
ファミコンはそれのカスタム版だったと思う

371:デフォルトの名無しさん
08/04/15 13:22:15
>>367
いやぁ、懐かしい思い出だよ
Z80はプログラムを作る方はともかく、ロボットを作ったりしたときなどはそりゃもう一番楽しいチップだったよ。
大手メーカーがこぞってこれを使ったのは、技術的なハードルが低いのとコストの安さだろうね。
逆にいえば、これを使っているメーカーの技術力はしれていたと思ってます。
シャープのテレビ事業部の製品などは、技術とかそんなの関係なしに楽しかったな、ハードはああでなきゃいかんです。
富士通は技術力あったけれど、つまらんマシンだったと思ってるので。

>>370
6502は、無駄を省き必要最小限にシェープアップすると、ここまで変わるのかという例だね。あとR3000も。
不必要な命令セットは、憶える事も余分に増えるし、大して代わり栄えのしないトライアンドエラーによるチューンが増える。
時間が無駄になる割には効果は薄いと思った。

372:デフォルトの名無しさん
08/04/15 17:25:44
>>371
全くだ。6502は6802に対応するチップだが本家より先に出したんだから凄い。
多分Moto内部で6800に負けたデザインなんだろ。

373:デフォルトの名無しさん
08/04/15 21:44:58
>>371
そういう経験っていいなー。ハード屋目指してみるかな?w
けど、今のハードのレベルだと三十路過ぎから勉強しても無理だよな。。。

趣味でやろうと幾つか買ってるけど全然いじってないしorz

374:デフォルトの名無しさん
08/04/15 23:26:42
>>373
それハード屋じゃない。

375:デフォルトの名無しさん
08/04/16 00:02:56
>>374
じゃあ何屋になるんだろ?単純に組み込み系かな?
すまん、門外漢で全然分からんw

376:デフォルトの名無しさん
08/04/16 00:13:07
>>372
> 6502は6802に対応するチップ

どこが対応してるんだ?

377:デフォルトの名無しさん
08/04/16 00:21:28
ソフト屋(低レベル)とか制御屋とか?

378:デフォルトの名無しさん
08/04/16 00:40:43
>>377
thx

ハード屋=回路設計だっけ?

379:デフォルトの名無しさん
08/04/16 13:06:17
組み込みとか楽しそう。

380:デフォルトの名無しさん
08/04/17 03:10:43
>>376
中味の話じゃなくて位置付け

381:デフォルトの名無しさん
08/04/17 21:49:11
>>390
だから、位置付けのどこが対応してるんだ?

# 中身は、言わずもがなだろ。

382:デフォルトの名無しさん
08/04/17 21:49:29
対抗するチップ、のほうがしっくり来るな。

383:デフォルトの名無しさん
08/04/17 21:50:25
はいはい、おじさん同士喧嘩しないの!

384:デフォルトの名無しさん
08/04/17 22:13:22
横からお邪魔しますが,型番が全てを表してるんじゃないの?

385:デフォルトの名無しさん
08/04/18 12:22:59
いえ、型番だけではビット数もパッケージのピン数も
開発者の嫁の顔もわかりません。

386:デフォルトの名無しさん
08/04/18 13:02:05
【コラム】Hello Worldコレクション (5) アセンブラ編 - OSごとに微妙に異なるスタイルを使い分ける
URLリンク(journal.mycom.co.jp)

387:デフォルトの名無しさん
08/04/20 15:08:28
昔はVRAMのアドレスやジョイステックのポートを直接読んだり書いたり、Hello World なんかよりよほど面白かったんだけどな
アセンブラがわからなくても、ベーシックについているモニタモードなどでアドレス指定して直に書き換えしているうちに憶ちまった人もいるし
今はいちいちOSにお問い合わせしないと何もできないからすぐに結果が出せなくて面白くないね。
言語関係をやっている人以外には興味の湧くところでなくなった。

388:デフォルトの名無しさん
08/04/20 16:20:14
> 昔はVRAMのアドレスやジョイステックのポートを直接読んだり書いたり

必要なのはアセンブラではなくてメモリのマッピングの情報だったりする。
自身でも書いているけど、ベーシックだろうがCだろうが可能だよね。

ちょっと前に趣味でDSの自作ソフト作ってみたけど、
そこでもARMのアセンブラの知識が有効活用されたと思ったことはあまりなかったな。

本当にもうコンパイラ屋さんしか必要ない情報なのかも

389:デフォルトの名無しさん
08/04/20 16:21:53
思い出した。ゲームのプロテクトを外すのにはアセンブラ必須だったね。
9801のディスクアクセス割り込みの CD 1B とか懐かしいな。

390:デフォルトの名無しさん
08/04/20 17:48:26
>>388
コンパイラのアセンブリ出力見たりしない?
私は最適化をどう行なったのか当たりをつけるために、しばしば見てるんだけどねぇ。

391:デフォルトの名無しさん
08/04/20 18:08:06
>>388
> 本当にもうコンパイラ屋さんしか必要ない情報なのかも

ブート部分を書く人にも必須だよ。

まあ、流通量の多い機器ならコンパイラ屋さんがサンプル提供している
ケースも多いけど。

>>390
>>388 は知らんけど、俺は何か問題かある時とかよっぽどきちきちに組み
たい時以外は見なくなった。

392:デフォルトの名無しさん
08/04/20 18:26:12
最近はコンパイラの品質も高く

あとは言わな(ry

393:デフォルトの名無しさん
08/04/20 18:31:45
>必要なのはアセンブラではなくてメモリのマッピングの情報だったりする。
最近のハードウェアがまたI/Oをメモリーにマップする(x86場合はIO空間か?)より
通信が中心になってパケットをDMAまたは、それに類似する方式で送る形式になっているので、
「すぐにアクセスできる感」は直に触ってもないんだよな。
近年のハイパフォーマンスを実現するにはアドレスとデータのペアなんか送っていたのでは性能が出ないというのも難解にしているような気がする。
すっかり総ネットワークプログラミング状態だよ。
昔ながらのアクセス方法が今に続いているのはメモリーだけになってきている。

394:デフォルトの名無しさん
08/04/20 18:37:08
>>392
高くはないけれど、最近のハードウェアの特性が地味チューンを無意味にしている所はある。
メモリーキャッシュに乗せる技術でほぼ全部だし、それ以外はやってもやらなくても殆ど変わらない。

395:デフォルトの名無しさん
08/04/20 18:46:25
うーむ、アセンブリ出力を眺めてループ内にdivがいくつあるか数えるような使い方するのはうちくらいか?w

396:デフォルトの名無しさん
08/04/20 19:06:55
よし、みんなで秋葉原の鈴商にHD64180を買いに行こう!

397:デフォルトの名無しさん
08/04/20 20:50:36
>>389
よく SYMDEB で弄ったな。

>>396
作りかけのCP/Mボードが部屋に転がってるw
まだ64180なんて売ってるのか。
まぁ8085とか6800とかも売ってる所が在るから不思議では無いか。

398:デフォルトの名無しさん
08/04/20 21:33:00
6800系はまだ現役だね。マイクロコントローラになっちゃってるけど。

399:デフォルトの名無しさん
08/04/20 23:24:05
>>395
多分君のところだけ。

普通のところはそんなことする必要がある部分は初めからアセンブラで書くと思う。

400:デフォルトの名無しさん
08/04/21 11:24:59
86や使いこなせばこなすほどコンパイラなる我が身なりけり
68kどれを使えばよいのやらgccに道を問ふまで

引用元忘れた

401:デフォルトの名無しさん
08/04/21 16:31:46
最初のコンパイラはASMで書いたけど、cができたらそのcもcで書き直すよね。
そうすると新しいチップができてもそのコンパイラはコンパイラで書くんじゃないの?

402:ヽ・´∀`・,,)っ━━━━━━┓
08/04/21 16:45:42
機械語やデータのバイト列生成するだけならfwriteとかfputcharで十分だな

403:デフォルトの名無しさん
08/04/21 17:42:38
sレコードとかならprintfでいける。

404:デフォルトの名無しさん
08/04/21 17:47:04
ところで昨日鈴商いったんですよ、でね、HD64180探してたら目の前に8085があるじゃないですか。
マルチプレクスされたバスなんて、ちょっと回路組んだ気分にひたるには丁度よさそうなんで、
そのまま8255と8251と8KSRAMまで買って帰ってきちゃいましたよ。
あと373とかも。
あとはROMが欲しいので、今日、若松でDIPのFlash買って来ました。

さて、ハンダ付けハンダ付け・・・

>>397
CP/M関連でお勧めのサイトありますか?
あったら教えてください。

405:デフォルトの名無しさん
08/04/21 17:58:42
URLリンク(www.auction.co.jp)
120円、高っ、いつか10円になっていた時代があったような・・・

406:デフォルトの名無しさん
08/04/21 19:56:06
>>396
俺が知っているのはTMP64180だな。

407:デフォルトの名無しさん
08/04/21 21:52:02
>>401
コンパイラ本体は C で書くけど、どんなコード生成すればいいかはアセンブラと
言うか機械語の知識が必要でしょ。

あと、コンパイラによってはアセンブラソースを吐く奴もいるし。

408:デフォルトの名無しさん
08/04/23 15:14:04
>>407 コンパイラの最終一歩手前フェーズ(機械語生成フェーズ)がその知識を抱え込めば
いいはずですよね。 その後に最適化フェーズが何パスかあるかも。
アセンブラソースを吐かすのはデバックとかそのフェーズ検証のためが第一義で、
コンパイラでアプリを開発する人には、ゼロとは言わんがあんまりメリット無い気がする。

409:デフォルトの名無しさん
08/04/24 07:22:49
>>408
いや。コンパイラ使いにも、-S 出力のメリットはある。
同じ処理で、どっちの書き方が効率良さそうかをみる時には活用できる。
もちろんベンチを取るでもいいんだけど。


410:デフォルトの名無しさん
08/04/24 18:19:15
半田づけする時のヤニが焦げる香りが好きで吸い込んでいた事があったのを思い出して今ぞっとした。鉛中毒は何年後にでるかなorz
融点が高いという話は聞いていますが今の鉛フリーの半田は取り扱い難くなっているとかあるんですかね?

411:デフォルトの名無しさん
08/04/24 18:32:06
はげしく板違いだな。
鉛フリーは使った事ないけど、濡れにくいと聞いている。

412:デフォルトの名無しさん
08/04/24 19:40:41
上でも言われてるけどコンパイラの最適化具合見る為にアセンブリ吐かせるっしょ。
iclもifort単純な演算にハメてやらないとすぐベクトル化諦めやがる。
ま、大抵の場合はそこまで単純化出来ないから結局intrinsics使う事になるんだけどな。

413:デフォルトの名無しさん
08/04/26 12:41:25
>>411 処女みたいなもんだな。

414:デフォルトの名無しさん
08/04/28 01:55:57
技量に大きく依存する点も似てるな

415:デフォルトの名無しさん
08/05/01 22:28:01
intelプロセッサに未だにDWORDの並列演算が無いのは嫌がらせか?

416:デフォルトの名無しさん
08/05/01 22:49:34
DWORD*4ならSSE2になかったっけ?

417:デフォルトの名無しさん
08/05/02 10:33:42
~~やるのに都合のいい命令が無いっていうならわかるけど、
並列演算が無いっていうのは調べて無さすぎだろ

MMX かなり限定的な使用のみ
SSE 大幅に拡張された
SSE2 かなりのところまで使えるようになった
SSE3/SSE4 さらに便利に

URLリンク(wlog.flatlib.jp)


418:デフォルトの名無しさん
08/05/02 23:00:14
415だが正しくは32bitの飽和並列演算が無いの間違いだった。


419:デフォルトの名無しさん
08/05/03 01:24:48
実行頻度低そー

420:ヽ・´∀`・,,)っ━━━━━━┓
08/05/03 11:49:23
2byte空間にOpcode余ってないからじゃないの?
それよりSIMDにNEG代替命令が無くて困る。
NANDやNOR入れてくれよ。

421:デフォルトの名無しさん
08/05/03 11:53:14
>>420
pcmpeq で all 1 つくって、pxor じゃ駄目なの?
レジスタ節約したいとか、クロック節約したいとか切実に思うけど。

422:ヽ・´∀`・,,)っ━━━━━━┓
08/05/03 12:07:40
ぼくがかんがえたAVX 2に入れるべき最強命令(笑)

vpnand ymm0, ymm1, ymm2
vpnor ymm0, ymm1, ymm2
vporn ymm0, ymm1, ymm2
vpeqv ymm0, ymm1, ymm2
vpcmov ymm0, ymm1, ymm2, ymm3

あと、3~4入力のAND, OR, XORがあってもいいくらいだな
これなんてDSP?

つーかDWORDの飽和演算なんてARGB128bitとか使わない限り要らんな。

423:デフォルトの名無しさん
08/05/03 14:51:40
>3~4入力のAND, OR, XOR
これいいな

424:デフォルトの名無しさん
08/05/03 20:38:30
>>420
AVXの発表で思ったんだが、まだ1byte空間に空きがある事の方が驚き。

NEGは俺も凄く欲しい。しかしVMXにも無いよな。
マイナス取るって事はその後演算するって事なんだろうから、
可能な限り演算順序を入れ替えて対処しろって事かと。

あとはuOP Fusionみたいのでxor/subの組み合わせを特別に認識している可能性はある。
もしくは入れ替えに対処出来ない状況というのはa*(-b)のような積や商に入っている場合だから、
どっちにしろ積のレイテンシ待ちだしその間にやれば?って発想かも知れん。

>>423
ハードウェアの仕組みを知らんが、入力ポートと出力ポートの数に制限があるんじゃないか?
そうじゃないと配線が大変な希ガス。

425:デフォルトの名無しさん
08/05/03 22:00:04
> ハードウェアの仕組みを知らんが

ハードウェアの勉強してから書けよ。

426:ヽ・´∀`・,,)っ━━━━━━┓
08/05/03 22:57:45
negはできるわ。SSSE3のpsign*が使える。まあ2段構えになるが。
無いのはNOTだな。

AVXでは4引数(3入力1出力)を実現するのにVEXの他にimm8の上位4ビットを使ってるが
下位4ビットも使えば5引数(4入力1出力)も可能だろうし、実際に何かしらやる計画はあるのだろう。

427:デフォルトの名無しさん
08/05/04 00:34:13
>>425
スマン。
>>426
命令にエンコード出来るかどうかじゃなくて、実装出来るかどうか。
多分レジスタファイルが何十とあって、
そこから処理する値を取ってきて保管する場所があって、
それを処理して、出力を保管する場所があるんじゃないか?

例えばパラレル配線で繋がっているメモリからの読み出しをクロック当たり1byte増やそうと思ったら
CPUのピン、メモリのピン、基盤の配線が全て8本増えるって事だと思うんだが、
オペランド数を増やすのも似たようなことが起きそうな気がする。

3オペランド化は殆どの命令に恩恵があるからやる価値があったのだろうけど
たった数命令の為に膨大なトランジスタリソースを裂く必要があれば全く目もくれないと思うんだが。

428:デフォルトの名無しさん
08/05/04 11:58:02
謝る暇があったら、勉強しなよ。

> 多分レジスタファイルが何十とあって、
> そこから処理する値を取ってきて保管する場所があって、
> それを処理して、出力を保管する場所があるんじゃないか?

何を言いたいのかさっぱりわからん。

そのあとの文章も同様。

429:デフォルトの名無しさん
08/05/04 13:31:06
>>428
お前は分かっているのか。
大雑把に教えてくれるなり指摘してくれ。

CPUにレジスタファイルが何十と入っているのは分かるよな。
処理部分がVHDLで記述されていようと自分で回路書いていようと、結局は回路な訳だ。

例えば1bitのAND回路があった時に、通常入力は2つで出力は1つだろう。
レジスタファイルが100あってもその全てがAND回路に繋がっているはずがない。
入力として必要な2つだけが選択的に一次レジスタのような格好で取り出され、処理が選択されるんじゃないかと。

> そのあとの文章も同様。
妄想だらけな文章でも、そのあとの方が理解しやすいと思うんだがどの辺が分からなかった?

430:デフォルトの名無しさん
08/05/04 14:56:18
>>429
「CPUの作り方」みたいな本が沢山出てるから、どれでも一冊読んでみ。
バスとかセレクタとか・・・

431:ヽ・´∀`・,,)っ━━━━━━┓
08/05/04 19:48:18
「imm8を使えばとれる引数増やせるじゃん」って言ったら
「デコーダが複雑になるだろ」とか集中砲火浴びたことがあった。


今じゃ、 Opcode ModRM [SIB] [DISP] imm8, imm8
なんて命令すらありますね。AMDだけど。
SSE5では最初のimm8をDREXに置き換えたのかな?

432:デフォルトの名無しさん
08/05/04 20:14:41
ダンゴさんは先見の明がありすぎるな

433:デフォルトの名無しさん
08/05/04 20:34:10
>>429
デコーダはあっち置いといて。
4入力ANDを追加するとして、バスから4入力ANDへ引く線と
AND回路と、結果を書き戻す回路が必要になるだけだろう。
ファンアウトでも気にしてるのか?

434:デフォルトの名無しさん
08/05/04 20:43:56
つ「74LS181」
URLリンク(focus.ti.com)


435:ヽ・´∀`・,,)っ━━━━━━┓
08/05/04 21:22:57
4入力のANDは

[A]─AND─AND-[E]
[B]─┘   │
[C]─AND─┘
[D]─┘

一方、VMXでいうvselbとかAMD SSE5のpcmovは

[A]━━AND-OR-[D]
[B]─AND─╂─┘
[C]━┷NOT┛

VMXに関してはvand/vor/vnor/vxorと同じレイテンシで実現できてることを考えれば
3~4入力はそんなに実装難易度は高くない気がする。

436:デフォルトの名無しさん
08/05/04 21:45:39
多オペランド演算の問題はALUではなく
レジスタからALUへのパスが複雑化することにあるんだが。
どうせ回路を複雑にするなら特殊な専用命令を追加するより
スーパースカラやベクトル演算器を入れた方が効率がいい。


437:デフォルトの名無しさん
08/05/04 22:00:32
今はregister fileのportからALUへのpathはoperandの数だけ独立に引いてる?
それとも時分割してる?

438:デフォルトの名無しさん
08/05/05 02:19:03
レジスタファイルって何を指してる?
ただのレジスタってか、FFのことを言ってるのか?

439:デフォルトの名無しさん
08/05/05 08:01:28
何十って言ってるから、32/64bit レジスタを1個と思ってるんじゃね?

440:デフォルトの名無しさん
08/05/05 11:15:38
64ビットx8本くらいのレジスタファイルが100セットくらいあると思ってるのかもよ。

441:デフォルトの名無しさん
08/05/05 11:41:00
いや、だから、そのファイルって、何を言おうとしてるのかなと。
どこかのメーカの用語か?

442:デフォルトの名無しさん
08/05/05 11:48:39
ああ、レジスタ全体のことか。失礼。

443:デフォルトの名無しさん
08/05/05 12:08:55
URLリンク(en.wikipedia.org)

444:デフォルトの名無しさん
08/05/05 12:45:41
レジスタファイルはプロセッサコア方面では普通に使われる。
CPU作ろう系の本には必ず出てくるよ。

445:デフォルトの名無しさん
08/05/05 12:56:12
アーキテクチャによるだろ

446:デフォルトの名無しさん
08/05/05 13:10:05
アーキテクチャはあんまり関係ないだろ。
全部ワイアードでも、マイクロプログラムの説明は出てくるように。

ただ、萌え系のあの本にはレジスタファイルの解説は無さそうだ。

447:デフォルトの名無しさん
08/05/05 13:20:06
レジスタファイルの概念が確立した以後の本で、その本で造ろうとする石で
プロセッサファイルを使っているか、総合的な解説に字数を割いていれば
出てくるとは思うけど。

448:ヽ・´∀`・,,)っ━━━━━━┓
08/05/05 13:23:53
とりあえずレジスタリネーミング機構のあるプロセッサには確実にあるものだと思ってるが。
ATOMにすらあるようだな。2スレッドで独立してるらしいが。

449:デフォルトの名無しさん
08/05/05 15:20:32
>>447
> プロセッサファイルを

また、俺の知らない単語が出てきたよ...。

450:デフォルトの名無しさん
08/05/05 15:26:06
おれも初耳だよ(´・ω・`)

451:447
08/05/05 15:27:42
かきまつがえたorz

452:デフォルトの名無しさん
08/05/05 15:47:13
いまのうちに実用新案出しておくんだ!

453:デフォルトの名無しさん
08/05/05 20:06:44
商標登録でもいいんじゃね?

454:デフォルトの名無しさん
08/05/06 11:50:06
おれはネコ耳だよ

455:デフォルトの名無しさん
08/05/06 18:41:44
娘さんを下さい

456:デフォルトの名無しさん
08/05/16 11:56:11
x86 について調べていますが、Core 2 にも U パイプラインや V パイプラインがあって、それぞれペアリングできる条件がありますか?
intel の資料で「ペアリング」や「Uパイプライン」で検索してもヒットしないので、どうすればペアリングされるのか分かりません。

457:デフォルトの名無しさん
08/05/16 12:01:59
OSもなにもなしにx86系のCPUに直接マシン語を読ませて、実行するには
どういう環境が必要でしょうか

458:デフォルトの名無しさん
08/05/16 12:05:45
コードをROMに書いてみるなりしたら?

459:ヽ・´∀`・,,)っ━━━━━━┓
08/05/16 12:10:11
>>456
Core 2は4Wayパイプラインでアウトオブオーダ実行だからそんな古い知識は捨ててしまいなさい
ALUのポートとレイテンシさえ知ってればいい。


まあAtomではまた必要になりそうだがな

460:デフォルトの名無しさん
08/05/16 12:36:46
>>457
WindowsやLinuxなどのUnixなどたいていのOSは、
CPUの保護モードを利用して、普通の機械語プログラムは
直接CPUにくべて走らせています。

もし、OSの保護下でなく直接機械語を実行させたいなら、
MS-DOSのような保護のないOSを使うか、ブートセクタに
書き込んで実行させるのが手軽です。

461:デフォルトの名無しさん
08/05/16 16:34:03
>>457
『30日でできる!OS自作入門』という本が参考になるかもしれない。
読んだことないけど。


462:デフォルトの名無しさん
08/05/16 17:33:42
リアルタイムOSを利用しましょう

463:デフォルトの名無しさん
08/05/16 18:12:26
>>459
U/V パイプラインというものはないということでしょうか?
参考にしていたサイトが古かったようです。
ALUのポートは Core 2 では確か 3 つですよね。ということは、ALU を使う演算は同時に 3 つできるのですね。
レイテンシは Intel の資料の付録にあったので、それを参考にします。

スループットは大事ではないのですか?

464:ヽ・´∀`・,,)っ━━━━━━┓
08/05/16 18:44:09
>>463
もちろん大事。

スループットは、殆どの命令で1クロックサイクル。
ALUの3ポートのどれでも実行出来る命令は1/3と表現される。
んで、レイテンシ・スループットサイクル数が多い命令は概して複数のμOpsに分解して実行する命令ですね。

まあ各命令ごとの使用ポートの詳細はagner.orgあたりが詳しいと思う。
掛け算とかシフトとか発行できるポートが決まってるから、その辺さえ抑えておけばOK。

ちなみにPentium Pro以降のx86アーキテクチャは命令の並べ方自体にはそんなに意味はない。
10数命令前後する程度なら、依存関係さえ無ければ平気で並べ替えて実行できます。

465:デフォルトの名無しさん
08/05/17 02:32:22
>>464
なるほど、ありがとうございました。

466:デフォルトの名無しさん
08/05/17 02:40:59
レジスタ少ないからこの
>依存関係さえ無ければ
って意外と手で書くには難しいところはあるかもしれないけどね。

467:デフォルトの名無しさん
08/05/17 19:54:18
>>466
それは団子に散々指摘してるんだが学習しないんだよな。
ストレステスト(笑)しか作った事無いんじゃないかと。

CPUが割と広い視野を見てくれる事は事実だろうから知識として与えてもいいが、
質問者がわざわざintrinsicsじゃなくてアセンブラでやりたい/出来るだけの知識がある人なんだから
重要なところから目を反らすような発言はいただけない。

468:ヽ・´∀`・,,)っ━━━━━━┓
08/05/17 19:56:24
>>467←レジスタリネーミングも知らないのかこいつ

469:デフォルトの名無しさん
08/05/17 20:11:11
依存関係がなければリネームできるけど
あったら無理だろ

470:ヽ・´∀`・,,)っ━━━━━━┓
08/05/17 20:28:31
依存関係を断ち切る方法だってIntelの最適化マヌアルに載ってるんだがな。
逆に、OoO・レジスタリネーム機構で断ち切れない依存関係なんて
インオーダ時代のアーキテクチャの知識があってもどうにかなるわけがないだろう。

URLリンク(tripper.kousaku.in)
↑これだってレジスタ利用数を意図的に絞ってコード組んでるんだけどね。

471:デフォルトの名無しさん
08/05/17 21:13:29
> 依存関係を断ち切る方法だってIntelの最適化マヌアルに載ってるんだがな。

最初からそういう方向性でものを言った方がいいだろって言ってるんだよ。

否定されたものだから否定で返しやがって
ほんっと主語が読めてないな。

472:ヽ・´∀`・,,)っ━━━━━━┓
08/05/17 21:17:27
前述のagnerのにもIntelの資料読む必要ないくらい詳しく載ってる。

473:デフォルトの名無しさん
08/05/17 22:01:13
>>471

>ほんっと主語が読めてないな。
期待したあなたの負け


474:デフォルトの名無しさん
08/05/17 22:15:40
ダ●ゴさんのカキコでスレが一気にヒートアップしたな

475:ヽ・´∀`・,,)っ━━━━━━┓
08/05/17 22:26:26
474 名前:あぼ~ん[あぼ~ん] 投稿日:あぼ~ん

476:ヽ・´∀`・,,)っ━━━━━━┓
08/05/17 22:27:36
>>471
自分の了見の狭さを露呈したからといって相手に理解力がないことにするのは詭弁以外のなんでもないよ。

477:デフォルトの名無しさん
08/05/17 23:25:54
自分の了見の狭さ


478:デフォルトの名無しさん
08/05/18 00:44:31
いちいち例は挙げないが団子が知ってる知識だけ披露して、
外野の煽りはまだしも理論的に攻められてもスルーするのは昔から。

479:デフォルトの名無しさん
08/05/18 01:39:07
団子さんの知識に嫉妬する輩のせいでスレがションボリしたな

480:デフォルトの名無しさん
08/05/18 01:40:45
外野アァン

481:デフォルトの名無しさん
08/05/18 02:17:41
壊れたラジオみたいなもんだ
使い方によっては便利?


482:デフォルトの名無しさん
08/05/18 05:59:17
せいぜいお笑い系番組聞くくらいだね。
登山途中で天気図書くとか、急いでる時に渋滞情報聞こうとかいう用途には不向き。

483:ヽ・´∀`・,,)っ━━━━━━┓
08/05/18 07:34:34
>質問者がわざわざintrinsicsじゃなくてアセンブラでやりたい/出来るだけの知識がある人なんだから
>重要なところから目を反らすような発言はいただけない。


これがどこがどう理論的なんだ自画自賛か

「知識がある人」だとみとめつつも、ちょっとマニュアル調べればわかることを理解できないと過小評価してるわけだよね。
俺は「アウトオブオーダ」と「依存関係」というヒントがあればちゃんとたどり着くことは期待してたんだがな。


ついでにいうとx86はレジスタが少ないからこそかえってレジスタリネーミングは実装しやすい。
ISAレベルで数十レジスタあるようなCPUだとかえって複雑になるからね。

484:デフォルトの名無しさん
08/05/18 07:53:01
団子の場合、読みにも書きにもフィルタが入っていると思っておけば間違いないよ。

485:ヽ・´∀`・,,)っ━━━━━━┓
08/05/18 08:10:35
自画自賛くんは放置するか
自分の意見通したいだけで困ってる当事者に何の配慮のレスもしない
ただの荒らしでしかない

486:デフォルトの名無しさん
08/05/18 08:53:24
誤読して>>468みたいな発言するからまずいんじゃないのか
>>485まで通して読むとあまりに見苦しいよ

487:デフォルトの名無しさん
08/05/18 09:12:22
ダンゴさんの指導でスレが猛烈にヒートアップしたな

488:ヽ・´∀`・,,)っ━━━━━━┓
08/05/18 09:18:31
>>486←自己弁護見苦しい。理論もクソも無いじゃないか

489:デフォルトの名無しさん
08/05/18 09:22:52
>>467からレジスタリネーミングを知らないなんて飛躍するのが理論なの?

490:ヽ・´∀`・,,)っ━━━━━━┓
08/05/18 09:57:13
x86って何の気も無しにコード組んでればレジスタリネーミングのヒントを与えてるんだよ
値のロードやxor eax, eaxなど第1オペランドで指定するレジスタの元の値に非依存の結果が得られる命令のほとんどがそうだ。
第2オペランド以降が依存関係がないか解決できてるのも条件だけど。

>>466が的外れなのも言うまでもないし、SPARCみたいな古くからあるレジスタ大量に積んだ
RISCがOoOを実装してないのはご周知の通り。
そもそもOoOみたいな複雑な機構自体がRISCと矛盾する。

ところで「重要なところ」って何なのかな。
無知故の発言にしかみえないが。


命令列レベルで並列なんて考えない方が良いんだよ。
x86の少ないレジスタで命令レベル並列なんて根本的に無理だし、
結局ロード・ストアを連発する羽目になりRAWハザードで性能でないのが落ち。

491:ヽ・´∀`・,,)っ━━━━━━┓
08/05/18 10:00:20
おっと最近のSPARC64はOoO実装してるね。無茶なのに。

492:デフォルトの名無しさん
08/05/18 10:23:19
クソコテは放置推奨

493:ヽ・´∀`・,,)っ━━━━━━┓
08/05/18 10:44:41
(ISAレベルで)レジスタが多いと、インオーダでもちゃんと組んでやれば性能は出せるけど
ユニット構成が変わったりパイプラインが深くなったりすると総崩れを起こすんだよね。
レジスタが多いが故にOoOで依存関係を解決してやるのも回路が膨大になる。

OoO時代になって、回路規模あたりの効率はレジスタの多いPOWERみたいなアーキよりもx86のほうがむしろ勝ってたりね。
ジョブズがG4/G5よりCoreのほうが性能が良いって掌を返したのも無理もない話なんだよ。

あと様々なプラットフォームに移植されてるJavaVMはスタックマシン。
スタック階層が依存関係のヒントにもなるから動的最適化もしやすいんだよ。
今やx86もVMみたいなもんだからな。JavaVMほどには洗練されてないが、ソフト資産の面で優れてる。

命令セット使い捨てのアーキには優れたアーキなんだけどねRISCみたいなのは。
CellのSPEなんかも使い捨てだろう。
PS2のときもワークステーションを作るだとかふかしてたが結局EE(ベクトルコプロセッサ付きカスタムMIPS)は使い捨てられた。

494:デフォルトの名無しさん
08/05/18 11:04:59
>>492
もうちょっとやりあっちゃ駄目?

あーでも納得させる自身は無いなあ。
誰も奴の知識に文句をつけてる訳じゃなくて
知識に自分の思想/宗教を付加してる事が教育的ではないと思うんだが。

> x86の少ないレジスタで命令レベル並列なんて根本的に無理だし、

そんなの思想だ。俺は無理だと思っているが、無理かどうかは分からない。
お前は今まで反対に命令レベルの並列を説いて「少ないレジスタで並列なんて無理だろう」って言われてたよな。

> CellのSPEなんかも使い捨てだろう。

単なるお前の予想だし蛇足だろう。そもそもLarabeeマンセーはどこいきましたか(笑)

495:ヽ・´∀`・,,)っ━━━━━━┓
08/05/18 12:22:18
インオーダのベクトル指向プロセッサはデータレベル並列性が高い処理にしか有効でないよ。
1スレッドあたりの性能が重要な用途ではOoOのスーパースケーラが引き続き有効。
バランスが大事だな。

Larrabeeは既存のx86アーキの代替ではない。
置き換わるなんて言ってるのは後藤くらいだ。

496:デフォルトの名無しさん
08/05/18 13:08:06
で、それは「アセンブラ」の話題なのか?



497:デフォルトの名無しさん
08/05/18 13:47:28
そりゃそうだろう

498:デフォルトの名無しさん
08/05/18 14:14:06
CPUの話題ではないのか、ってこと?

499:デフォルトの名無しさん
08/05/18 14:24:40
壊れたラジオだから
期待するだけ無駄
スレに住みつかれたら
無視するしかないだろ


500:デフォルトの名無しさん
08/05/18 15:01:24
CPU の話題を出さずにアセンブラの話をするのは無理というものだ

501:デフォルトの名無しさん
08/05/18 15:20:58
団子じゃなけりゃ文句も出ないんじゃね?


502:デフォルトの名無しさん
08/05/18 18:59:14
CPUの話題なら何でもいいってわけじゃないし。

503:デフォルトの名無しさん
08/05/18 20:10:04
団子が名前欄に何も入れなければ済む話だと思う

504:デフォルトの名無しさん
08/05/18 21:21:20
入れて欲しすぎる。NG設定が面倒。

505:ヽ・´∀`・,,)っ━━━━━━┓
08/05/18 21:41:53
まあなんでもいいんだけど。

「重要なこと」があると言いつつ自分は例示せずに俺に噛みついてれば彼の脳内では「理論的」なんだから
たまったもんじゃないよな。
まあレジスタリネームの存在を前提としないトンデモ仮説なら何言っても否定してやるけどさ。

506:デフォルトの名無しさん
08/05/18 22:59:52
はいはい壊れたラジオ


507:ヽ・´∀`・,,)っ━━━━━━┓
08/05/18 23:26:51
耳の痛い話に壊れたラジオって言っておけば「理論的」なんだね

508:デフォルトの名無しさん
08/05/18 23:55:06
コテハンvs名無し ですか

509:デフォルトの名無しさん
08/05/18 23:59:19
団子さんへの嫉妬でスレが埋まりつつあるな

510:デフォルトの名無しさん
08/05/19 00:44:52
>>505
>まあレジスタリネームの存在を前提としないトンデモ仮説なら何言っても否定してやるけどさ。
ご遠慮ください。

511:デフォルトの名無しさん
08/05/20 22:50:44
アセンブリ言語の教科書に
org 100H
section .text
start:
mov ax, 0200H
mov bx, HELLO
PRINT:
mov dl, [ds:bx]
cmp dl, 00H
jz PRINTEND
int 21H
inc bx
jmp PRINT
PRINTEND:
mov ah, 4CH
int 21H

section .data
HELLO db 'Hello World!',00H

というプログラムがあるのですが、
文字列のアドレスを入れるのはbxレジスタでなければいけないんでしょうか?
例えば、
mov bx, HELLO
mov dl, [ds:bx]
inc bx
の部分を
mov cx, HELLO
mov dl, [ds:cx]
inc cx
に変更したら動かないのですが、何が問題なのかよくわかりません。

512:デフォルトの名無しさん
08/05/20 23:04:00
int 21H
というファンクションの仕様。
cなどでいう関数の引数。

513:デフォルトの名無しさん
08/05/20 23:42:22
[ds:cx]と表現するようなアドレッシングモードは存在しないから

514:デフォルトの名無しさん
08/05/21 13:54:30
;ファイル作成
org 100H
section .text
start:
mov ah, 3CH
mov dx, filename
xor cx, cx
int 21H
mov ah, 4CH
int 21H

section .data
FILENAME db 'test.txt', 00H

とした時にtest.txtではなくTEST.TXTが作成されてしまうのですが。
test.txtを作成する時はどうすればいいのでしょうか?

515:デフォルトの名無しさん
08/05/21 14:11:58
LFN (Long File Name) ファンクションを使うんだ。
URLリンク(www.vector.co.jp)


516:デフォルトの名無しさん
08/05/21 23:49:21
>>514
大文字、小文字なんか気にするな。

気になるなら set DIRCMD=/L とすれば気にならなくなるよ。

君の使ってる OS で使えるかどうかは知らんが。

517:デフォルトの名無しさん
08/05/22 00:05:32
>>515
Windows 2000/XP でも有効ですか?

518:デフォルトの名無しさん
08/05/22 00:10:54
なんかアセンブラと関係ない気がする

519:デフォルトの名無しさん
08/05/22 07:43:35
>>517
有効です。

520:デフォルトの名無しさん
08/05/22 12:01:00
今度はキャメルケースが全部小文字になる方が気になるw

521:デフォルトの名無しさん
08/05/22 12:27:59
大文字、小文字を意識するネーミングは、たいていの場合においてよくないことだと思うぞ。
MontaVista Linux のソースなんか大文字、小文字違いで同じ名前のファイルが
あちこちにあるんで、Windows 上に持ってきて作業できない。
おかげで vi がそこそこ使えるようになっちまったよ。(w

522:デフォルトの名無しさん
08/05/22 20:51:11
>>521
Windowsでも大文字小文字を区別できなかったっけ?
レジストリの設定にそんなのがあった気がする

523:デフォルトの名無しさん
08/05/22 21:36:27
Win32サブシステムがDOSとの互換性のために区別してないだけで
カーネルやファイルシステムレベルじゃ区別されてるな

524:デフォルトの名無しさん
08/05/22 21:39:23
Win32サブシステムでも区別する設定はあるけど
区別しない前提で作ってるアプリばっかりだから
きっとまともに動かないんじゃないだろうか

525:デフォルトの名無しさん
08/05/22 21:48:11
Aとaは区別されない

えーっ

526:ヽ・´∀`・,,)っ━━━━━━┓
08/05/22 21:55:19
大小違い同名ファイルが作れるかどうかは別だよな

527:デフォルトの名無しさん
08/05/22 21:56:18
NTカーネル(つかNTFS)で
全角アルファベットが酷い扱いだった時代があったことを知らないのかね。

528:デフォルトの名無しさん
08/05/22 21:57:55
うわ知ったか消防が来た

529:デフォルトの名無しさん
08/05/22 22:03:40
晒しage


530:デフォルトの名無しさん
08/05/23 07:52:14
ケースの話してるのに、なぜ「全角」が出てくるのか、まずはそこからだ。

531:デフォルトの名無しさん
08/05/23 09:21:35
だんごさんのせいでオヤジギャグがスルーされたな。

532:デフォルトの名無しさん
08/05/23 09:40:54
>>530
全角Aとaのcaseが区別されない、と言うことを525が言ってるからだろ

533:デフォルトの名無しさん
08/05/23 11:37:28
そういうケースもあるさ


534:デフォルトの名無しさん
08/05/24 02:48:18
団子とやりあってたヤシだがしばらく書き込めなかった。
予想通り俺の説得スキルが足りないようなのでもうやめる。
続けたければ隔離スレでも立ててくれ。

535:デフォルトの名無しさん
08/05/24 04:26:55
SBB  AL,[EAX]
ADD  [EAX],AL
XCHG [EAX],EAX
ADD [EAX],AL

あるゲームのHPの格納アドレスの近くにあるのですが
これってどういう意味があるのでしょうか


536:デフォルトの名無しさん
08/05/24 07:53:07
ただのデータじゃね?

537:ヽ・´∀`・,,)っ━━━━━━┓
08/05/24 08:27:58
>>534
お前が無知なだけだろ。モダンなx86の物理レジスタは100本以上あるんだよ。

538:ヽ・´∀`・,,)っ━━━━━━┓
08/05/24 08:41:39
俺を説得とか馬鹿にもほどがある。
釈迦に説法と言う気はないが、俺に無意味に噛みついて質問者を混乱させてどうするんだ。

「重要なこと」さっさと答えろよ

539:デフォルトの名無しさん
08/05/24 09:20:27
>>538
無意味に噛みつていたのはおまえだろ

540:ヽ・´∀`・,,)っ━━━━━━┓
08/05/24 09:24:41
「重要なこと」があると言いつつ、それを言わないこと自体が論理矛盾じゃないか。
俺は「無い」と断言したがな

541:デフォルトの名無しさん
08/05/24 09:30:04
ここで聞くことかどうかわかりませんが、電子手帳とかそういうのもマイコン
使ってますよね。そういうのに入っているデータもアセンブラがわかれば
吸い出せるんですか。昔のやつが何台もあるので。

542:ヽ・´∀`・,,)っ━━━━━━┓
08/05/24 09:31:44
データそのものは機械語で保存されてるわけではない。どっちかというと構造体が解析できればOK。

543:デフォルトの名無しさん
08/05/24 09:32:50
>>542
もう少しヒントを教えてくれるとありがいです。または参考となるURLなど
あれば。お願いいたします。

544:デフォルトの名無しさん
08/05/24 09:41:39
せめて機種を書け。

545:デフォルトの名無しさん
08/05/24 09:47:18
URLリンク(www.wotsit.org) くらいは読みこなせるようになって、
日本語漢字コードのあれこれを理解できたら
独自解析も夢ではないと思うよ


546:デフォルトの名無しさん
08/05/24 10:41:11
団子さんのカキコでスレが猛烈にヒートアップしたな

547:デフォルトの名無しさん
08/05/24 11:20:44
>>546
あんたよく飽きないねぇ

548:ヽ・´∀`・,,)っ━━━━━━┓
08/05/24 11:30:52
レス番飛んでる

549:デフォルトの名無しさん
08/05/24 15:19:25
お宝鑑定団子供大会

550:ヽ・´∀`・,,)っ━━━━━━┓
08/05/24 15:34:56
「さ­ん­の­(レス|カキコ)」

551:デフォルトの名無しさん
08/05/24 17:33:19
みんなが

団子さんのカキコでスレが云々

とか書いておけば団子ハブにできるのか。いいな。


552:デフォルトの名無しさん
08/05/24 18:19:49
団子さん兄弟

553:デフォルトの名無しさん
08/05/24 20:35:16
もうこの板の名無しを「団子さん」にすりゃいいんじゃね?

554:デフォルトの名無しさん
08/05/25 08:54:41
そもそも彼奴が名無しで書き込めば解決なのだから
今後もハンドル付きで書き込むようなら
内容にかかわらず荒らし扱いで問題ないよな

555:デフォルトの名無しさん
08/05/25 11:32:52
.text:0040135A loc_40135A: ; CODE XREF: sub_401350+28j
.text:0040135A cmp [ebp+arg_4], 0
.text:0040135E jz short loc_40137A
.text:00401360 mov ecx, [ebp+var_4]
.text:00401363 mov byte ptr [ecx], 0
.text:00401366 mov edx, [ebp+var_4]
.text:00401369 add edx, 1
.text:0040136C mov [ebp+var_4], edx
.text:0040136F mov eax, [ebp+arg_4]
.text:00401372 sub eax, 1
.text:00401375 mov [ebp+arg_4], eax
.text:00401378 jmp short loc_40135A
.text:0040137A loc_40137A:

ループで文字列の比較をしてるんでしょうか?

インクリメントしてる方の処理が何をしているのか。

556:デフォルトの名無しさん
08/05/25 11:59:34
// >>555
for (; arg > 0; ++var, --arg) {
* var = 0;
}
// ただの配列のクリアだね。随分と無駄なコードだけれど。

557:デフォルトの名無しさん
08/05/25 12:09:37
>>556
ありがとうございます。

558:デフォルトの名無しさん
08/05/25 15:48:45
x86やAMD64向けの、NUL文字の位置を最速で求めるコードって何ですか?


559:デフォルトの名無しさん
08/05/25 15:57:03
ダンゴ様のピリっとしたベンチマークが求められているな

560:デフォルトの名無しさん
08/05/25 16:31:16
ダンゴちゃんの愛されっぷりがわかるスレだな


561:デフォルトの名無しさん
08/05/25 17:17:41
みんなツンデレすぎ

562:ヽ・´∀`・,,)っ━━━━━━┓
08/05/25 19:18:01
長い文字列なら16byteごとに一気に判定してしまうのが吉

lea edx, [str]
pxor xmm0, xmm0
loop1:
movdqu xmm1, [edx]
pcmpeqb xmm1, xmm0
pmovmskb ecx, xmm1
test ecx,ecx
jnz skip1
add edx, 16
jmp loop1
skip1:
bsf eax, ecx
add eax, edx ; eaxに結果格納

SSE4.1対応ならpcmpeqb+ptestでNULLが含まれる16バイトを検出可能。
SSE4.2に対応してればATAを使えばNULL文字の位置まで特定できる。

まあレイテンシ隠蔽とかの最適化は各自でやれ

563:デフォルトの名無しさん
08/05/25 19:25:54
SSSE3だのSSE4.1、4.2だの…
最近わけわかめ

564:デフォルトの名無しさん
08/05/25 22:33:37
そんなことよりMIPSやろうぜ。

565:デフォルトの名無しさん
08/05/25 23:35:56
Intel 64 and IA-32 Architectures Software Developer’s Manual の日本語版ない?

566:ヽ・´∀`・,,)っ━━━━━━┓
08/05/25 23:41:06
URLリンク(www.intel.com)

日本法人は変なFlashゲーム以外仕事しねーな

567:デフォルトの名無しさん
08/05/26 00:43:04
>>562
すげー倍以上速くなった。

568:デフォルトの名無しさん
08/05/26 09:14:22
>>567
想像で勝手な事言うが、メモリがボトルネックで流石に倍は無いだろう。

そら自力で1byteずつ調べてたらxmm使った場合の16倍の調査が必要になって
メモリアクセスに隠蔽されないくらい遅くなるかも知れないが
strlen使ったら普通4byteずつ調べてくれるから比較とかの時間はメモリアクセスの時間に隠蔽されるはず。

よく話題に上がる高速版memcpyを考えるのと同じで
ハードウェアプリフェッチを邪魔しない程度にプリフェッチの方法を考えた方がスピード上がるはず。

569:デフォルトの名無しさん
08/05/26 12:09:40
Windows上で動くCASL2のアセンブラを探しているんですが、何かありませんか?
ソースプログラムと実行結果をテキストで出力可能なら良いのですが。


570:デフォルトの名無しさん
08/05/26 12:27:03
>>569
いくらでもあんじゃない?
URLリンク(www.vector.co.jp)

571:ヽ・´∀`・,,)っ━━━━━━┓
08/05/26 12:30:32
stlrenで4バイト同時って可能なの?
dword単位で0が含まれるバイトを検索する命令なんてないと思うんだが。

基本的に巡回操作の場合は明示的な prefetch* 命令は使う必要ない。
文字列が全部キャッシュに載ってるなら尚更だし。

むしろmovdquの方に突っ込み入るかと思ったが(16byte境界からの探索にしてmovdqaしたほうがいいかも)



>>569
ここは良いGoogle検索代行スレですね。

URLリンク(www.vector.co.jp)

572:ヽ・´∀`・,,)っ━━━━━━┓
08/05/26 12:35:07
ああ、MSVCRTのstlren.asm見たらようやく理解できた。
1バイト毎にbranch命令じゃ確かにパイプラインハザードで性能でない罠。

573:ヽ・´∀`・,,)っ━━━━━━┓
08/05/26 22:35:00
まあ、俺は性能どころかまともに動くかすら全然確かめてなかったんで
とりあえず実験してみましたよ。

URLリンク(smallcode.weblogs.us)
のソース一式を改造して俺仕様stlrenベンチを作成。
NULL文字検出方法自体は>>562をベースに小改良をしたものね。

で、それぞれ一番最後のスコアだけ抽出

strlen - short strings
Microsoft: 1625 ticks, a = 145
Peter: 1093 ticks, a = 145
A.Fog: 1273 ticks, a = 145
DQN(SSE2): 674 ticks, a = 145←ここ

strlen - long string
Microsoft: 1225 ticks, a = 926
Peter: 1225 ticks, a = 926
A.Fog: 874 ticks, a = 926
DQN(SSE2): 437 ticks, a = 926←ここ

とまあ、MSVCRT版strlenの倍以上は余裕で速い。
もっとも、pmovmskbの性能によって前後するみたいだが(Pen4とかAMDのプロセッサなんかだと全力で遅いかも)
ちなみにうちの環境はCore 2 Duo (Wolfdale) 3.17GHz, Windows Vista Ultimate x64 Editionその他諸々ね

改造ソースとバイナリ一式→URLリンク(download.kousaku.in)
ちなみにSSE4.1(ptestを使う方法)だとSSE2と比べても伸びなかった。

574:デフォルトの名無しさん
08/05/26 23:11:38
OoOやら予測分岐やらでかい口叩いてもCPUがメモリに負けてるってことか。

てかMacBook Pro (Merom)でWinXP(32bit) on VirtualPCだとDQNおせぇ。
VMWareにデュアルコア割り当てちゃってるけどバッテリ駆動じゃねえのになあ。
(VMWareは片コアだけにした方が速いと言われている)

strlen - short strings
Microsoft: 6024 ticks, a = 145
Peter: 6708 ticks, a = 145
A.Fog: 6036 ticks, a = 145
DQN(SSE2): 12792 ticks, a = 145

strlen - long string
Microsoft: 6612 ticks, a = 926
Peter: 6792 ticks, a = 926
A.Fog: 4716 ticks, a = 926
DQN(SSE2): 12936 ticks, a = 926

イレギュラーな使い方だが、何故遅くなるのかは興味あるな。

575:ヽ・´∀`・,,)っ━━━━━━┓
08/05/26 23:22:02
ああ、うちのMerom機(T5500 Vista Home Premium (32bit))でも遅くなる。

【実行結果】
URLリンク(www.vipper.org)
pass [1234]


ちなみに答えはわかってる。
Merom/ConroeはShuffle Engineの実装がしょぼくて
pmovmskb reg, xmmがアホみたいに遅い。

MMXでやったほうがかえって速いかも知れない。

576:ヽ・´∀`・,,)っ━━━━━━┓
08/05/26 23:48:49
あれ?まともだ。
コンソール出力をリダイレクトすると何故かまともな結果が出るらしい。
そして、Meromでもシャッフルは思ったよりネックじゃない。
原因が別のところにありそう。



MMX(+SSE1 64bit整数SIMD)版追加版
URLリンク(download.kousaku.in)

Merom機で追試
URLリンク(www.vipper.org) PASS: [1234]

577:デフォルトの名無しさん
08/05/27 01:33:24
576をWindows Vista 32bit + T5600 (Merom) で実行したけど、ほぼ同じ結果なのだが、
short stringsのDQN(MMX)が a = 145 だった。
あとMMXとSSE2に限り、1/20くらいの割合で平均の3倍以上かかる時があった。
大体649ticksや660ticks前後なのに、突然1738ticksになったり。
でもMMX/SSE2はMSVCRTの倍を超えている。
L2キャッシュがあふれるほど長い文字列なら話は別だろうけど。

578:デフォルトの名無しさん
08/05/27 01:40:51
レジスタ退避コスト?

579:デフォルトの名無しさん
08/05/27 02:07:18
参考までにログをうp。fast_strlen > result.logとして出力。
パスは1234。Core 2 Duo T5600 Merom
Vista HomePremium SP1 32bit
URLリンク(www.dotup.org)
+ VirtualPC XP Pro SP2 32bit
URLリンク(www.dotup.org)

580:ヽ・´∀`・,,)っ━━━━━━┓
08/05/27 02:17:30
>>576の追試結果のテキストファイルはミスで、MMXのはShortのほうでLongを実行しちゃってるオチ。
今上げてるEXEとソースは修正済み。
PenM(Banias)でも計ってみたんだけど僅差でSSE2>MMXになってる。
並列度の低いコードではベクトル長の引き伸ばしはある程度有効ということがわかる。


>>578
あーそれもありそうだな。
Windowsってコンソールへの描画すらなにげに重たいようだ。
(ファイルだと軽いと思われる)

何周か回して平均値で算出したほうがよさそうかも。

581:デフォルトの名無しさん
08/05/27 07:42:01
こんなタイトなループで並列度が低いとか


582:デフォルトの名無しさん
08/05/27 09:53:49
>>570
ありがとうございます

583:デフォルトの名無しさん
08/05/27 10:00:07
いまどきアセンブラよりJavaのほうが速い。
JNI使えばハードの機能もフルアクセスだし。

584:デフォルトの名無しさん
08/05/27 10:18:41
つ、釣られるもんか!

585:デフォルトの名無しさん
08/05/27 11:20:27
>>583
開発速度のことですね、わかります。


586:デフォルトの名無しさん
08/05/27 11:41:02
Core2Quad Q9450でPS2エミュをやると、実機と違い処理オチせず、激ムズになることが判明
スレリンク(news板)l50


587:デフォルトの名無しさん
08/05/27 20:09:50
>>583
wwwwwwwwwwwwwwwwwwwwwww

588:ヽ・´∀`・,,)っ━━━━━━┓
08/05/27 20:31:16
JNIでfast_strlen.cppの関数をコールですね。わかります。

589:デフォルトの名無しさん
08/05/28 22:05:50
このスレを見ている人はこんなスレも見ています。(ver 0.20)
フロントミッション総合 - FRONT MISSION - 105th [家ゲーSRPG]
この会社辞めようと思った腐れ上司の一言0x21 [プログラマー]


590:デフォルトの名無しさん
08/05/29 16:29:58
すいません。アセンブラの宿題が終わらなくて。。。
どうか、手伝ってください。。。

Define a character string named CO_NAME containing "Internet Service" as a content.

コレ分かる方います?

あ~!わかんね~!

591:デフォルトの名無しさん
08/05/29 18:33:02
自己解決しました

592:デフォルトの名無しさん
08/05/30 22:49:58
>>589
涙出てきた

593:デフォルトの名無しさん
08/06/03 00:55:58
アセンブラでポインタってできるんですか?
変数の値の番地のプログラムに飛びたいんですが

594:デフォルトの名無しさん
08/06/03 03:45:37
どの石よ?

595:デフォルトの名無しさん
08/06/03 05:16:21
PICです

596:デフォルトの名無しさん
08/06/03 06:28:13
>>595
間接アドレシングで出来るから、手元にあるデータシートに記載されてる説明を確認の事。
手元になければ↓からダウンロードして欲しい。
URLリンク(www.microchip.co.jp)


597:デフォルトの名無しさん
08/06/03 13:11:35
すごいですありがとうございます!

598:デフォルトの名無しさん
08/06/05 13:41:56
【算術演算結果による分岐】 N 番地の内容から M 番地の内容を引き,答えが負なら P 番地に -1(#FFFF)を,正なら +1(#0001)を格納するプログラムを作成しなさい.

599:デフォルトの名無しさん
08/06/05 13:46:02
>>598
だが断る


600:デフォルトの名無しさん
08/06/05 15:58:03
>>598
問題文が糞だから書き直せ屑

601:デフォルトの名無しさん
08/06/05 18:58:36
>>598
#define V(X) *(short *)(X)

r = V(N) - V(M), r < 0? V(P) = -1 : r > 0? V(P) = 1 : 0;

602:デフォルトの名無しさん
08/06/05 23:40:05
答えが 0 の時は、格納しちゃダメなんじゃないのか?

603:デフォルトの名無しさん
08/06/06 01:20:57
そーゆー問題のときは"0"=正で考えていいんでないかい。
特別扱いする必要があったらそういう注意書きがあると思う。


604:デフォルトの名無しさん
08/06/06 02:52:33
>>598
CLRX
INCX
LDD M
CPD N
SBEX #0
CPD N
SBEX #0


605:デフォルトの名無しさん
08/06/06 02:55:52
STX P

606:デフォルトの名無しさん
08/06/06 07:25:19
>>598
;うろおぼえ68000
START:
MOVE.W SR, -(SP)
MOVEM.L D0-D1, -(SP)
MOVEQ #1,D1
MOVE.W N(PC),D0
CMP.W M(PC),D0
;SUB.W M(PC),D0
BPL L_PLUS(PC)
NEG.W D1
L_PLUS:
MOVE.W D1,P(PC)
MOVEM.L (SP)+, D0-D1
MOVE.W (SP)+, SR
RTS
N: DC.W $FF00
M: DC.W $00FF
P: DS.W 1

607:デフォルトの名無しさん
08/06/06 10:50:12
しれっと特権命令使ってんじゃネーヨw

608:デフォルトの名無しさん
08/06/06 12:31:03
ああ、そうか。
MOVE.W (SP)+, SR
RTS
じゃなくて
RTR
で、いいんだ。

609:デフォルトの名無しさん
08/06/06 23:17:04
>>603
> そーゆー問題のときは"0"=正で考えていいんでないかい。
> 特別扱いする必要があったらそういう注意書きがあると思う。

そう言う思い込みはバグの元になるぞ。

610:デフォルトの名無しさん
08/06/06 23:21:17
68000だけはmove SRが一般命令だったり。
010になって特権命令になったが。

ところで、PC相対ってオペランドの右に使えたっけ?
なんか制限あったような気がするんだが。




611:デフォルトの名無しさん
08/06/06 23:52:58
>>610
> 68000だけは

68008 のこともたまには思い出してください。

> move SRが一般命令だったり。

move from SR の方だけね、move to SR は 68000 でも特権命令。

> ところで、PC相対ってオペランドの右に使えたっけ?

て言うか、CMP 命令は右にしか使えない。

Add/Sub なんかはどっちにでも使える (但し、反対側は Dn のみ)
けど、CMP はその後の条件判定を反対にすればいいので、片方しか
必要ないと判断したんだろうな。

612:デフォルトの名無しさん
08/06/08 12:25:06
;青い本みてやりなおした68000
START:
MOVE.W SR, -(SP)
MOVEM.L D0-D1/A0, -(SP)
MOVEQ #1,D1
MOVE.W N(PC),D0
CMP.W M(PC),D0
BPL L_PLUS(PC)
NEG.W D1
L_PLUS:
LEA P(PC), A0
MOVE.W D1, (A0)
MOVEM.L (SP)+, D0-D1/A0
RTR

dstにd16(PC)使えるの4命令しかなかた

613:607
08/06/08 15:33:43
* ステップ数を詰めてみた。

MOV.W N,D0
CMP.W M,D0
SMI D0 *(00/FF)
EXT.W D0 *(0000/FFFF)
ORI.W #1,D0 *(0001/FFFF)
MOV.W D0,P

* もっと変則にしてみたがステップ数縮まらず。

MOV.W N,D0
CMP.W M,D0
SPL D0 *(FF/00)
EXT.W D0 *(FFFF/0000)
ASL.W #1,D0 *(FFFE/0000)
NOT.W D0 *(0001/FFFF)
MOV.W D0,P

* Scc を用いない方法。

MOV.W N,D0
SUB.W M,D0
ASR.W #8,D0 (00??/FF??)
ASR.W #8,D0 (0000/FFFF)
ORI.W #1,D0 (0001/FFFF)
MOV.W D0,P

* そして分岐を使っていないことに気が付く。

614:デフォルトの名無しさん
08/06/08 17:27:20
素直な人間の思考から外れるものはコメント無いと泣けるので勘弁してください。

615:デフォルトの名無しさん
08/06/08 17:32:57
>>613
(PC)を使ったらもっと縮まるんじゃない?

616:デフォルトの名無しさん
08/06/08 18:55:49
直感的ではない技巧に走るのは厨房

617:デフォルトの名無しさん
08/06/08 19:35:35
それは実務に限った話だ。

618:>>611
08/06/08 20:52:52
>>612
> dstにd16(PC)使えるの4命令しかなかた

ほんとだ、俺もすっかり忘れてた。

そもそも、PC 相対はアクセスモードがプログラム参照 (FC=ユーザープログラム
or スーパーバイザプログラム) になるから、可変データを PC 相対でアクセスす
る領域に置くのは推奨されない。

さすがにデータ参照とプログラム参照で違うメモリをアクセスするシステムは見
たことないけど、プログラム参照領域は書込み禁止を設定しているシステムはあ
るのでちょっと注意した方がいいかも知れない。

> MOVE.W SR, -(SP)

move ccr, (-a7) でいいと思うが。

あと、68k は大抵の命令でコンディションコードが変化するから、サブルーチン
の前後でコンディションコードを保存しないと言う流儀の方が多いと思う。

619:デフォルトの名無しさん
08/06/08 22:23:20
コメントなしにいきなり殴り書きされてるんじゃない限り
技巧のうちにゃ入らんだろ

620:デフォルトの名無しさん
08/06/09 18:12:54
>>598
LEAX N
CMPX M
BPL L_PLUS+1
LDB #$FF
L_PLUS
CMPX #$C601
SEX
STD P


621:デフォルトの名無しさん
08/06/09 20:07:17
って最初からボケてる LDX N 或いはLEAX [N] か?

622:デフォルトの名無しさん
08/06/09 20:11:46
>>621
だね。6809は専門じゃないからつっこみかねてた。
ときに C6 01 にコメント振ってくれるとありがたい。





つか SEX 書きたかっただけじゃないか?

623:デフォルトの名無しさん
08/06/09 20:35:48
バレたか(w
C6 はLDBのつもりだった、反省はしてない。


624:ヽ・´∀`・,,)っ━━━━━━┓
08/06/09 20:39:00
Obj-Cでsuper freeとか書くようなノリか

625:デフォルトの名無しさん
08/06/09 21:05:43
ただ8bitCPUだから、コスト的にはどうなんだろうな?
クロック表が見当たらないぜ。

626:デフォルトの名無しさん
08/06/09 21:29:08
68系ばっかりになるのなw

627:デフォルトの名無しさん
08/06/09 21:59:12
このスレで最高にビューティフルなマシン語を持つ超エレガントなアーキテクチャのCPU仕様を作ってARM超えを目指そうぜ!
プロジェクトリーダーはダンゴさんに任せた!

628:デフォルトの名無しさん
08/06/10 08:46:38
Kaltfeuerとでも名付けよう。

629:デフォルトの名無しさん
08/06/11 03:19:05
沢村さんを推します

630:デフォルトの名無しさん
08/06/13 18:28:34
ある命令の実行に何クロックかかるかを知りたいんですが、
CPU毎に"命令Aにはnクロックかかるよ"っていうのがリストされた資料があるんですか、それとも実測ですか?
もし実測しかないならその方法を簡単に教えてください

631:デフォルトの名無しさん
08/06/13 18:33:45
自己解決しました
amdとintelの最近のプロセッサものはとりあえず見つけました
メーカーがwebで公開してるんですね・・・

632:デフォルトの名無しさん
08/06/13 19:28:44
なんか昨今はGoogleする前に2chって思考なのかね

人の脳みそをあんまり安く考えてると、働くようになってから
苦労するんじゃねーかな

まあ、半可通の糞ほど教えたがりなんだが

633:デフォルトの名無しさん
08/06/13 19:43:33
これがゆとりか・・・

634:デフォルトの名無しさん
08/06/13 20:05:52
普通に勉強してれば命令語一覧とかに載ってるのを知ってそうなものだが・・・
そのうち
「ある命令の実行でフラグがどう変わるか知りたいんですが?」
とかの質問も来るのかな。

635:デフォルトの名無しさん
08/06/13 20:54:57
>>632
逆に半可通だからこそそういう疑問が出るんじゃないかな?
ビンゴワードを知らないと何回か周辺ワードでググってそれを探さないといけないから意外と難しい。
昔は頭使わなくてもマイコン雑誌の特集とかで載ってて必修みたいなものだったけどさ。

636:ヽ・´∀`・,,)っ━━━━━━┓
08/06/13 21:14:19
実測するためのCソースもIntelが提供してるな。

アレもわかりにくいところにあるけど

637:デフォルトの名無しさん
08/06/14 01:40:46
>>635
> 逆に半可通だからこそそういう疑問が出るんじゃないかな?

半可通の酋長ダんゴ先生をバカにシュルナ!!!!





638:デフォルトの名無しさん
08/06/14 03:53:12
知っているのならさっさと教えろやクズどもが。

639:デフォルトの名無しさん
08/06/14 09:32:33
>>638
あんただれ?

640:デフォルトの名無しさん
08/06/14 12:38:30
俺だよ俺俺

641:デフォルトの名無しさん
08/06/14 12:43:50
あちこちで、教えるクンがオナニーしすぎて>>638みたいな機知外
が本当に増えている


642:デフォルトの名無しさん
08/06/14 13:36:40
>>634
それも実験して調べるのです(Z80の隠し命令かよ・・・)。

643:デフォルトの名無しさん
08/06/14 18:00:18
>>641
それ以上にそいつ等をスルーできないやつ等のほうが増えて内科医。

644:デフォルトの名無しさん
08/06/14 18:11:17
おっさんくさいスレになりました

645:デフォルトの名無しさん
08/06/14 22:23:13
まあアセンブラなんて今時の若い者はあまりやらんからな。

646:デフォルトの名無しさん
08/06/14 23:17:34
つPIC

647:デフォルトの名無しさん
08/06/14 23:22:19
最近の若い奴はJVMとCLRのアセンブラ(バイトコード)は結構読めるよ。


648:デフォルトの名無しさん
08/06/15 08:17:07
NASM のドキュメントの Appendix B って消えた?
あれ便利してたんだが。

649:デフォルトの名無しさん
08/06/17 22:28:15
今時アセンブラの需要はあるのかねえ

650:デフォルトの名無しさん
08/06/17 22:34:13
コンパイラベンダにゃ必須だろう。

651:デフォルトの名無しさん
08/06/17 22:36:25
エンコーダとか

652:デフォルトの名無しさん
08/06/17 22:40:54
ベクトル化ガリガリやりたいなら必要だね

653:デフォルトの名無しさん
08/06/17 23:03:58
組み込みで、ブートローダー書く人とか。

654:デフォルトの名無しさん
08/06/17 23:31:20
高級言語で書けない命令がどれだけあると思ってるんだ?

655:デフォルトの名無しさん
08/06/18 00:10:10
ローテート命令。
なんでC言語にはローテート演算子が無いんだ。
何度欲しいと思ったことか…


656:デフォルトの名無しさん
08/06/18 00:13:10
ローテートってそんなに速くなかったような気がするよ

657:デフォルトの名無しさん
08/06/18 00:45:22
シフトと論理和もしくは加算で書くより速いだろJK

何でもかんでもアセンブラで書きたがるのは昔の厨二病

658:デフォルトの名無しさん
08/06/18 00:47:15
結果をすぐ使わないのであれば
うまく並列実行されれば
ローテートより速いんじゃね?

659:デフォルトの名無しさん
08/06/18 00:48:59
>>657
それがだな、昔シフト系の命令がクソ遅い Pentium4 とかいう CPU があってだな。
x86 の rol/ror 命令使うよりも mmx シフトと mmxor で書いたほうが速いとかいう
ふざけたこともあったのだよ。フツーの 32bit の SISD でね。

660:デフォルトの名無しさん
08/06/18 01:00:51
つーか、ローテート命令が遅いなんてデマを流さないでほしい。

661:デフォルトの名無しさん
08/06/18 01:53:52
>>660
CPU によるけど、ローテート命令が速くない環境はあるよ。
intel の 24896604_j.pdf からの引用だけど、x86 では

add : レイテンシ 0.5clk, スループット 0.5clk
shl/shr: レイテンシ 4clk, スループット 1clk
rol/ror: レイテンシ 4clk, スループット 1clk

でー mmx だと

pslld: レイテンシ 2clk, スループット 1clk
psrld: レイテンシ 2clk, スループット 1clk
por: レイテンシ 2clk, スループット 1ckl

ね。

SISD で rol/ror より速いっつーのは記憶違いで嘘だったけど。
まーこういう糞な石はメインストリームじゃなければ無視できる
のだけど、一時期多数派を占めてたりしたから無視するわけにも
いかんのよ。

662:デフォルトの名無しさん
08/06/18 03:25:13
そんなにCがいいならインラインアセンブラつかえよ

663:デフォルトの名無しさん
08/06/18 03:31:41
ローテートぐらいならgccの拡張で使えたような気がする

664:デフォルトの名無しさん
08/06/18 13:26:14
rol や ror はintrinsicであるんだけどrolxやrorxのようにキャリーと一緒に回すのが無いんだよね

665:デフォルトの名無しさん
08/06/18 13:45:41
そもそもCにはキャリーの概念すらないし。

666:デフォルトの名無しさん
08/06/20 09:47:19
Cのソースからアセンブラ吐いたんだけど,Cのソースではhoge(0,1)って引数で関数
呼び出してるけど、アセンブラでは
movl $1, 4(%esp)
movl $0, (%esp)
という風に引数を逆に処理してるのは、どういう意味があるの?ご教示お願いします



667:デフォルトの名無しさん
08/06/20 09:54:29
>>666 悪魔乙
gas の記法だろ。アセンブラによってオペランドを書く順番が違ってくるのさ


668:デフォルトの名無しさん
08/06/20 10:02:58
いや,オペランドじゃなくて引数の順序だろ.
C では良くあること.

669:デフォルトの名無しさん
08/06/20 10:05:04
>>666
・スタックは数が減る方に向かって伸びる。
・その例でも引数1が %esp+0, 引数2が %esp+4 になってるでしょ?
・引数のポインタを取ったとき、スタック上の引数列が配列になるでしょ?
hoge(int foo, int bar) を例に取ると
int *p = &foo; によって
p[0] == foo
p[1] == bar
となる。

で、このことは、引数不定とか可変長引数を実装するときに
すごく都合がいい。スタックトップが必ず引数1になる。
K&Rの頃は引数不定がまかり通ってたし。

なお、>>666 の例では、%esp はあらかじめ減じられていると思われるため
movl $0, (%esp)
movl $1, 4(%esp)
のように引数順に処理することもできるが、コンパイラの都合上それをやっていない。

670:デフォルトの名無しさん
08/06/20 11:45:08
処理系によるんじゃないか?

671:デフォルトの名無しさん
08/06/20 12:04:24
>>666
Cの引数の評価順は特に決められていないので、コンパイラの都合で好きな順序で処理してよいわけだが、
たまたま逆順の方がコンパイラを作りやすかったとか、特に気にしないで作ったらたまたま逆順になったとか、
そんなとこだろうと思うよ
特に意味はないかと

672:デフォルトの名無しさん
08/06/20 12:12:48
厳格に決まっているわけではなく、
>>669
の述べているような理由などから、私が使っている処理系では引数がたまたま
決まっているということでいいんですか?



673:デフォルトの名無しさん
08/06/20 12:13:51
↑訂正、
引数がたまたま逆に処理されている




674:デフォルトの名無しさん
08/06/20 12:55:25
>たまたま逆に
いや単に右から左なだけで,逆順とか正順とか決まってないから

675:デフォルトの名無しさん
08/06/20 13:34:07
カウントダウン方向で繰り返し処理すれば
フラグ見るだけで処理の終わりがわかる

676:デフォルトの名無しさん
08/06/20 15:03:55
コード生成とスタックに積む都合から言うと、スタックに先に積むほうから
評価をしたいわけだ。
それと、可変長引数のことを考えると、Cの引数は右から左の順で積んだ
ほうが都合が良い、ということ。

677:デフォルトの名無しさん
08/06/20 18:12:47
やり方は、複数あるが後々都合が良い
ってことですね。ありがとうございます。

678:デフォルトの名無しさん
08/06/20 18:21:36
富の目キモすぎ。バケモン。身障。DQN男。死ね 富の目キモすぎ。バケモン。身障。DQN男。死ね 富の目キモすぎ。バケモン。身障。DQN男。死ね 富の目キモすぎ。バケモン。身障。DQN男。死ね

富の目キモすぎ。バケモン。身障。DQN男。死ね 富の目キモすぎ。バケモン。身障。DQN男。死ね 富の目キモすぎ。バケモン。身障。DQN男。死ね 富の目キモすぎ。バケモン。身障。DQN男。死ね

富の目キモすぎ。バケモン。身障。DQN男。死ね 富の目キモすぎ。バケモン。身障。DQN男。死ね 富の目キモすぎ。バケモン。身障。DQN男。死ね 富の目キモすぎ。バケモン。身障。DQN男。死ね

富の目キモすぎ。バケモン。身障。DQN男。死ね 富の目キモすぎ。バケモン。身障。DQN男。死ね 富の目キモすぎ。バケモン。身障。DQN男。死ね 富の目キモすぎ。バケモン。身障。DQN男。死ね

679:デフォルトの名無しさん
08/06/20 18:45:53
呼出し規約とかは関係してこないの?

680:ヽ・´∀`・,,)っ━━━━━━┓
08/06/20 18:47:45
push/pop命令の動きはABI云々じゃなくてCPUの動作仕様だからな

681:デフォルトの名無しさん
08/06/20 20:23:35
VC++ に限って言うなら、
普通の関数は右から左、
普通のメンバ関数は左から右、
可変長引数を持つメンバ関数は右から左、だな。

682:デフォルトの名無しさん
08/06/20 20:25:17
Cっていうか、WindowsAPIの仕様に引っ張られてるんじゃね?

683:ヽ・´∀`・,,)っ━━━━━━┓
08/06/20 20:28:54
thisポインタ=ecxは何とかならんかったのかと思う
まあ、他に無いっちゃないが

684:デフォルトの名無しさん
08/06/20 20:29:03
PASCALキーワード!!!

685:デフォルトの名無しさん
08/06/20 20:57:03
VC++のメンバはthisをecxに積んで右からスタックだったはずだが

686:デフォルトの名無しさん
08/06/20 22:39:15
なんか、引数をスタックに積む順序と引数の評価順序の区別が付いてない
奴がいるな。

687:デフォルトの名無しさん
08/06/20 22:48:48
↑どういうこと?

688:デフォルトの名無しさん
08/06/20 22:49:28
>>685
ごめん。まちがえてた。

689:デフォルトの名無しさん
08/06/21 00:59:53
引数の評価順序って決まってたっけ

690:デフォルトの名無しさん
08/06/21 01:07:38
68000での質問です。
cmpi.w #$1234, D0

cmpi.l #$12345678, D0
と同等な事をA0に対しても行いたく思い、
cmpaを使ってみましたが上手くいきません。
なぜでしょうか?

691:デフォルトの名無しさん
08/06/21 08:33:30
>>687
左から評価して、右から積んでも規約に違反はしてない。

評価した順にスタックに積んで行くほうが楽。
という「都合」が引数の評価とスタックに積む順序に影響しているってこと。


692:デフォルトの名無しさん
08/06/21 09:13:13
>>690
エスパーはいないぞ!
もっと詳しく書け。

693:デフォルトの名無しさん
08/06/21 16:40:04
>>687
スタックに積まれた引き数の配置は処理系で決まっている。

順番に詰まれるかどうかは分からない。

評価順序も決まっていない。

>>690
> 上手くいきません。

何をやって、どうなることを期待してて、どうなったかを書け。

694:690
08/06/21 17:07:42
解決しました。
理由もなんとなくわかりました。
ありがとうございました。

695:690
08/06/21 17:15:55
お前らの役立たずっぷりに呆れました。
もう二度と来ません。

696:690
08/06/21 17:18:51
>>695
まあそれが本音ですけどね。
もはや揚げ足取りですし。
ありがとうございます。

697:デフォルトの名無しさん
08/06/21 17:23:01
なんかね、どこからが釣りだったのかね、もうね

698:690
08/06/21 18:27:33
詰まらない偽者がスレ汚ししてすみません。
最終レスは>>695です。
ありがとうございました。


699:デフォルトの名無しさん
08/06/21 18:48:48
いいから消えろよクズ

700:デフォルトの名無しさん
08/06/21 18:57:46
ほっとけ
構うな

701:690
08/06/21 19:16:46
>>700
まったく同意

702:690
08/06/21 20:47:38
誰だお前

703:デフォルトの名無しさん
08/06/21 22:33:55
もう誰が誰だかわやくちゃなんだけど、休日にわざわざこんなスレにまできて...

なんかかわいそうだな。

704:デフォルトの名無しさん
08/06/23 20:35:43
Re:> お前はなにを言っているのか

705:デフォルトの名無しさん
08/06/24 00:44:09
king、コテ付け忘れてるぞ

706:1stVirtue
08/06/24 21:10:58
Reply:>>705 お前に何がわかるというのか。

707:デフォルトの名無しさん
08/06/25 01:47:33
キングさんって、スクリプトですか。??

708:デフォルトの名無しさん
08/06/25 10:58:32

数学板のking?

709:デフォルトの名無しさん
08/06/26 21:27:12
いきなりkingネタかよ
数学板以外にもたまーに顔出してるよ、奴は

710:デフォルトの名無しさん
08/06/30 16:29:09
MASM MSからダウンロードしたけど、VC++ Express 2005が必要だと・・・
VC++ Express 2008じゃだめ?なの?

711:デフォルトの名無しさん
08/06/30 16:53:44
>>710
強制解凍してけば長いファイル名のが出てくるからそれを拡張子exeにリネーム

712:ヽ・´∀`・,,)っ━━━━━━┓
08/06/30 17:07:48
もうNASMでえーやん

713:デフォルトの名無しさん
08/06/30 17:32:54
>>711
thnx・・・thnx......

冷静に考えて
そうだ、ここは俊足なレスポンスを期待しちゃいけない、
と思い、

無い頭で考えて、
オーソドックスにプロンプトの指示に従い、

アンインストールをしたところで、
>>711発見 orz


あうぅぅぅ

714:デフォルトの名無しさん
08/06/30 17:35:23
JWasmってどうなんだろ?

715:デフォルトの名無しさん
08/06/30 17:41:44
>>712
YASMどうよ?

716:デフォルトの名無しさん
08/06/30 19:20:57
Yasm URLリンク(www.tortall.net) NASM/GAS互換 64bit対応 修正BSDライセンス
JWasm URLリンク(www.japheth.de) MASM v6/WASM互換 Open Watcomライセンス

717:デフォルトの名無しさん
08/07/01 08:54:17
ちょっと使ってみた個人的な感想など:

Jwasm: コマンドラインの引数など使い勝手がいいとは言い難い。
特にリンカは最悪で、設定ファイルが必要だとか訳が判らん。
結局、リンカだけ alink URLリンク(alink.sf.net)
そこにある win32.lib を使うことでバイナリ作成した。

その後に使った fasm URLリンク(flatassembler.net) なら、
単体で実行バイナリまで生成することが判った。
記法も独特ではあるけども、ヘルパのインクルードが充実していて
あるAPIの挙動を確かめるようなテスト・ルーチンなんかをスクラッチするには
いい感じだと思った。


718:デフォルトの名無しさん
08/07/01 17:48:04
いや、互換物はオリジナルと比較しないと意味ないでしょ。
あと、wlinkはなんでもできる強力なリンカだよ。libだけ用意すれば(.aでも.libでも食べてくれる)
jwasm .\samples\windows1
wlink FORM Windows NT runtime CON F windows1 L kernel32.lib
みたいな感じでいける筈。

たしかwatcom本体の方にMSのlink互換の奴(ラッパー?)が入ってる筈だから
それの差し替え用なのかもね?

719:デフォルトの名無しさん
08/07/01 19:23:34
masm32のinc参照してるやつも導入pathを調整すれば同様に
jwasm .\samples\windows3
wlink FORM Windows NT F windows3 L kernel32.lib,user32.lib
でバイナリは出来るんだけと、これって豆腐窓が出れば成功なのかな?
窓プログラムはソース見てもいまいちわからないorz


720:デフォルトの名無しさん
08/07/02 19:58:28
lzasmってTASMのideal文法サポートだけで、MASM互換部分はごっそり抜けてるのかな?
それとも元々こんなもんなの? 共通ソースってどうやったら書けるんだろうこれ?

721:デフォルトの名無しさん
08/07/02 21:02:44
masm support なんて書いてないけど

722:デフォルトの名無しさん
08/07/02 21:30:44
っていうかTASMとMASMの共通ソースってことね。
ローカルラベルとか使わなきゃ出来るんだと思ってた。

723:デフォルトの名無しさん
08/07/02 22:30:47
TASM,MASM両用にしたい場合
TASMのMASM5.1互換モードだかなんだかを使っていた記憶がある

724:デフォルトの名無しさん
08/07/05 04:50:49
ゲームの解析をしているのですが

MOV EDX,exe.00666666
00666666 は XOR AL,31 となっています
近くに1~31範囲外の定数ビットシフトというコメントが多く使われているのですが
どのような処理をしているのかわかりますでしょうか?


725:デフォルトの名無しさん
08/07/05 05:19:48
単なるデータじゃないってなんでわかったの?

726:ヽ・´∀`・,,)っ━━━━━━┓
08/07/05 15:53:04
つかDSに命令書くとDEPに殺されるだろJK萌え~

その命令らしきものの後にretなりjmpがある?

727:724
08/07/06 02:01:18
>>725
00666666 はrdataセクションでしたorz
MOV EDX,exe.00666666のASCII"41C6tvejeNiWj・・・・"の中身が格納されてるだけでした


>>726
MOV EDX,exe.00666666
SUB EDX,EAX
CMP EDX,ESI
JNB SHORT exe.0050175C

0050175C TEST EDI,EDI
0050175E JNZ SHORT exe.00501764
00501769    MOV EAX,66666667
0050176E IMUL EDX

この↓にもジャンプ命令がたくさんあります。リターンはずっと後にでてきます。


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