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

アセンブラ… (*´д`*)アハァ…

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさんNGNG
アセンブラ全般に関するスレッドです。

【過去ログ】
アセンブラ… (゚д゚)ウマー
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
0412デフォルトの名無しさんNGNG
>>411
もしやさほどいい本でもないと・・・・?
0413デフォルトの名無しさんNGNG
早速7Pで誤字を発見、こういうことなのであろうか・・・・。
0414さっきゅん ◆WAHAH0fe4c NGNG
立ち読みした事あるけど地雷だね
0415デフォルトの名無しさんNGNG
パラパラとめくって見たけど・・・・なんだこりゃ誤字だとか誤記だとかが多すぎます。
なんとか頑張ってみます。
0416デフォルトの名無しさんNGNG
その本の紹介文の一部です
>ゲームやソフトを実際に解析する具体例を以て行う実践解析ガイド
>ゲームで「キャラクターを無敵にしたい」とか、特定のソフトで機能制限を解除したい」などが

導入としてこの手の話題は悪くないと思いますが
肝心のアセンブラの解説にいくまでに息切れした感があります
ゲームラボの延長のような位置付けなんでしょうね
0417デフォルトの名無しさんNGNG
たしかに・・・ツールの説明でページ使いすぎです。
0418デフォルトの名無しさんNGNG
>>410
その本はゲーム解析者の間では「買う価値の無い本」として有名です。
ゲームの改造ネタは色々なゲーム解析サイトの解説を参考にしていますが、
ライターに知識がないのでこの本の解説では間違いだらけになっています。
それに、インテルのアーキテクチャマニュアル丸写しのページは、
索引がないのでとても使いにくく評判が悪いです。

ゲームの解析がやりたいのなら、下のサイトで勉強した方が良いでしょう。
「いまどきのアセンブラプログラミング」よりもはるかに役に立ちます。
アセンブリ言語のソースコードもありますし。
http://gamereverserz.cjb.net/
0419デフォルトの名無しさんNGNG
>>418
そうですか・・・・衝動買いはいけませんね、ありがとう。
0420デフォルトの名無しさんNGNG
>>410
アセンブリを真面目にやりたいならはじめて読む8086でも嫁。
ゲーム解析は知らん
0421デフォルトの名無しさんNGNG
「プログラミングの力を生み出す本」って読んだことある人いる?
評判いいみたいなんだが、実際どうなんでしょう?
0422デフォルトの名無しさんNGNG
アセンブラのシンプルな美しさがたまらん。
コードを一行書くたびにうっとりしてる。
高級言語のゴテゴテした記述には吐き気がする。
0423デフォルトの名無しさんNGNG
>>422
そんなあなたにはWhitespaceがおすすめ
ttp://compsoc.dur.ac.uk/whitespace/
0424デフォルトの名無しさんNGNG
>>422
瀕死のコボラーみたいなこと言ってないで働けよ
0425デフォルトの名無しさんNGNG
すまぬ。おしえてくれ・・・
CPU8086の組み込み機器用プログラムがあって、
組み込みLinux(!)に移植せねばならぬのだ・・・。
ソースコードは一部C言語+大部分アセンブラ。

アセンブラをC言語に逆アセンブル出来る?
出来たとしても、Linuxへの移植に役に立つCのソースが得られる????

すまん、アプリ屋なもので、判断できんのだ・・・。
できないならできないで、しょうがないので、流用はあきらめて作り直しなのだけど・・・・。



0426デフォルトの名無しさんNGNG
age
0427デフォルトの名無しさんNGNG
>アセンブラをC言語に逆アセンブル
???
0428デフォルトの名無しさんNGNG
>>425
一度解析して、仕様書を起こしたほうがいいと思う
0429デフォルトの名無しさんNGNG
Cで書けないプログラムはない
CでVM作ってその上で元のプログラムを動かせばOK
0430デフォルトの名無しさんNGNG
8086程度ならエミュってしまえ。エンジンもフリーでたくさんあるよ。
0431デフォルトの名無しさんNGNG
対象も組み込みのようだからそれは厳しいんでは
0432デフォルトの名無しさんNGNG
>>421
アセンブリ使える香具師には必要なし
Cをもっと理解したい香具師にはちょうどいい
0433デフォルトの名無しさんNGNG
レスありがと・・・。
>>427 さま
あまりのタコ質問で、反応するのがあほらしい感じですか?
自分はアプリ屋なので、恥ずかしながら、
私のアイディアが、どの観点でどのくらいトンチンカンなのかすら
わからないのですよ・・・。
できたら、私のアイディアのタコさ加減を教えてもらえるとありがたいです。
見極めついたら、とっととあきらめて、つくりなおします・・・
しょうがないので。

>>428 さま
やっぱりそうですかねぇ。仕様書はメモリマップぐらいしかないので、
結構気合がひつようだなぁ。(鬱)

0434デフォルトの名無しさんNGNG
アセンブリ言語からC言語は逆「コンパイル」な。
逆コンパイラは皆無ではないが、技術的に困難で、
どんな場面でも実用的に使えるようなものはないと思う。
コンパイラのことをよくわかった人間が書いたアセンブリプログラムなら、
十分構造化されてて、手作業でも逆コンパイルができるかもしれないが、
スパゲティ状態だったら、あきらめるのが得策。
0435デフォルトの名無しさんNGNG
C言語風にディスアセンブルするツールがあったような・・・・
0436デフォルトの名無しさんNGNG
>> 434さま
>>逆「コンパイル」
なるほど、用語が誤っていたということですね。
>>十分構造化されて
なるほど、たしかに、構造化を意識して、かつ、C言語のような構造化言語
をコンパイルしたようなアセンブラでないと、
構造化言語への変換は、意味的に不可能ですね。
親切なコメントありがとうございます。

>>435さま
IDA Pro http://www.datarescue.com/idabase/
なるツールを見つけましたが、これでしょうか?
上記と絡みますが、これはC言語をコンパイルしてできた機械語を逆コンパイルする
という位置付けなのでしょうかね・・・Webだけではちょっとわかりませんね・・・

0437デフォルトの名無しさんNGNG
Boomerang
http://boomerang.sourceforge.net/
も、IDA Proを意識した逆コンパイルツールだな。
どちらも、自動的にってことはたぶんあきらめてて、
「十分知識をもった」ユーザーが介入することを前提にしているはず。
8086に対応してるかは知らん。

機械語とこういったツールに習熟し、さらに手間をかけて使うコストと、
仕様から単純にソースを設計しなおすコストと、
どっちが安いかは規模によるだろうな。
0438デフォルトの名無しさんNGNG
アセンブラはおなかがいっぱいになりまつか?
0439デフォルトの名無しさんNGNG
debugでGUIできる?
0440デフォルトの名無しさんNGNG
>>439
は??
いったいどういうものを想定してるの?
0441デフォルトの名無しさんNGNG
>>440
win32のやつ
0442デフォルトの名無しさんNGNG
意味のわからないレスが続いております。
0443デフォルトの名無しさんNGNG
GUIなデバッガがあるかと言うことだろうか?
もしそうならOllyDbgなどがあるけど
0444デフォルトの名無しさんNGNG
意味のわからないレスが続いております。
0445デフォルトの名無しさんNGNG
母国語(日本語)をおろそかにしていると、外国語の習得
もおぼつかないぞぉ
0446デフォルトの名無しさんNGNG
debugでGUIできる?、という意味自体いまだにわからん俺はバカですか
0447デフォルトの名無しさんNGNG
debug.comでGUIのpろぐらむが
0448デフォルトの名無しさんNGNG
>>446
debugとGUIに関する知識をつけてから来るように。
はい、次の人。
0449デフォルトの名無しさんNGNG
>>448
貴方は超能力者様ですか
0450デフォルトの名無しさんNGNG
439=441=448
ヽ||´ ∀`||.。oO(知ってるがお前の態度が気に入らない にははーっ)
0451デフォルトの名無しさんNGNG
知ってるがお前の態度がピッチャーデニー
0452デフォルトの名無しさんNGNG
90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90
0453デフォルトの名無しさんNGNG
RET?
0454デフォルトの名無しさんNGNG
>>453
C3
0455デフォルトの名無しさんNGNG
>>439
>debugでGUIできる?
debugとGUIの単語を入れ換えれば意味が分かる俺は天才ですか?
0456デフォルトの名無しさんNGNG
意味が変わる罠
0457デフォルトの名無しさんNGNG
中学生お断り
0458デフォルトの名無しさんNGNG
ぶでむし
0459デフォルトの名無しさんNGNG
>>443
OllyDbgは使えそうだが、Winか。
Linux環境のやつを探しているのだが。
0460デフォルトの名無しさんNGNG
>>459
>>439ではないよね?
kdbgとかgdbのGUIフロントエンドの類はいくつかあるみたいだが
0461デフォルトの名無しさんNGNG
おなかはいっぱいでつか?
0462デフォルトの名無しさんNGNG
http://www.csl.sony.co.jp/person/fnami/asm.htm
こんな感じで高速サーキットをガンガン組むスレかと思ってました・・・・。











( ゚ρ゚ )b逝ってくれ
0463439NGNG
できますか?
0464デフォルトの名無しさんNGNG
できちゃった。。。
0465デフォルトの名無しさんNGNG
>>425 です。
結局、基本方針は作り直しに限りなく近い移植
となりました。 アセンブラを参考にしつつ、作業をすすめるつもりですが・・・。

アドバイスありがとうございました・・・。
0466デフォルトの名無しさんNGNG
>>452
声に出して読みたいマシン語
0467デフォルトの名無しさんNGNG
>>466
1D?(6809)
0468デフォルトの名無しさんNGNG
>>467
14(6809)
0469デフォルトの名無しさんNGNG
そう言えば $00 $00 は6809では NEG $00 だっけか・・・
0470デフォルトの名無しさんNGNG
Z80で初めてマシン語に触れた俺は
00はNOPなのが当然だと思っていて
8086で呆然としたよ。
0471デフォルトの名無しさんNGNG
nopが00ってのは最近は少数派?
0472デフォルトの名無しさんNGNG
6502では未定義コードが多くて、それらはすべてBRKという
ニーモニックに割り当てられていた。ソフトウェアインタラプト
の事かな?NOPは0xEAだっけか。

なにせ命令数が少ないのにいろんなコンシュマー機に乗って
それはそれは偉大なソフトウェア資産を残しましたよねえ、この石。
0473デフォルトの名無しさんNGNG
BRK (break)
・この命令を実行したチップは物理的に破壊されシステムは二度と復旧できません。
・自己爆破プログラムなどの作成によく使用します。
0474デフォルトの名無しさんNGNG
そう言えば6502はリセットor電源投入でPCの値が不定という恐ろ
しい仕様になっていたな。だから電源投入後ほんのしばらくだけ
暴走状態になり、未定義命令(すべてBRK命令になる)に遭遇して
インタラプトベクタ(ROM)の指すアドレスにジャンプしていた。

6502は電源投入かリセットによるものかをハード的に検出する機構
を持たず、どうやら電源投入時にはRAMの内容が不定なのを利用
して判別していたらしいが、その詳細は寡聞にして知らない。ある
特定のRAMを未使用にし、内容を$00にするなどして判別していた
のだろうか。

6502はDMA割り込みにも対応していず、強制的にCPUをHLT状態
にしてバス占有権をデバイスに譲り渡していたような記憶がある。
ソフトウェア的には面白いCPU(MPUというらしい)だが、ハードウェア
的にはまだまだ不備が多かった。
0475デフォルトの名無しさんNGNG
リセットベクタはどうした?
0476デフォルトの名無しさんNGNG
>>474
電源投入時のみPCが不定なんじゃなかった?
0477デフォルトの名無しさんNGNG
Reset線あるし、初期化に6クロック必要というだけかと。

未定義命令は全てBRKになるのは大嘘。

電源投入かリセットかの判別をRAMが特定の値になって
いるかどうかで判別するのは普通に使われてると思うけど。

DMA割り込みがなくても特殊用途以外困らないな。
0478あっせんぶらNGNG
ちょっと質問なんですが、インラインアセンブラでレジスタの値を配列に入れるには
どうすればいいでしょうか?

char str[10]
__asm__("movl %ebx, ????");

????はなにを入れるんでしょうか?linux上のgccでコンパイルしたいのです。
0479あっせんぶらNGNG
str[0]に入れたいんです。
0480デフォルトの名無しさんNGNG
>>478
それができると何がうれしいの?
0481デフォルトの名無しさんNGNG
>>478
__asm ("movl %%ebx,%0" : "=m" (str[0]) );

かな。これ読んどけ
http://www.sra.co.jp/wingnut/gcc/gcc-j.html#Extended%20Asm
0482デフォルトの名無しさんNGNG
str[0]はcharだからebx全部収めるには小さいと思うけど大丈夫?
0483デフォルトの名無しさんNGNG
>>478 ではありませんが、参考になりました。
char c;
asm ("movb $0x41, %%al;\n\
movb %%al, %0;" :"=r" (c) );
putchar(c);
0484デフォルトの名無しさんNGNG
おまいらアセンブリのコーディングにはどんなエディタ使ってる?

俺はedit.exeだが・・・
0485デフォルトの名無しさんNGNG
>>484
edlin.com
0486デフォルトの名無しさんNGNG
>>484
cat
0487デフォルトの名無しさんNGNG
>>486
ネ申
0488デフォルトの名無しさんNGNG
http://compiler.e-city.tv/
即デリだろ
0489デフォルトの名無しさんNGNG
ビデテープかよ
0490デフォルトの名無しさんNGNG
プロテクトモード移行関連のいい資料ないかな・・・
インテルのマユアルぐらいしかしかないか
0491デフォルトの名無しさんNGNG
まゆある
まゆタン(*´Д`)ハァハァ
0492デフォルトの名無しさんNGNG
>>488
即デリだよ。直前に落としたけど。
0493デフォルトの名無しさんNGNG
>>492
こういう時だけは2chに張り付いてるキモい奴が裏山しくなるんだよな…。
0494デフォルトの名無しさんNGNG
お前も張り付いてんじゃんw
0495デフォルトの名無しさんNGNG
>>492
また復活した。多分最小限のWin32APIとかが入ってるのかな。
即デリされて即同じ垢取ったんだろうからまた即デリか?
0496デフォルトの名無しさんNGNG
またビデテープだし
0497デフォルトの名無しさんNGNG
ナニコレ?
0498493NGNG
>>494
あのレス速度と書き込み内容見てもそう思ったのか?相当頭腐ってるようだが
0499部外者NGNG
>498
まだ493から2時間もたっとらん
0500デフォルトの名無しさんNGNG
ニヤニヤしていいですか?いいですよね。(・∀・)ニヤニヤ
0501デフォルトの名無しさんNGNG
>>compiler.e-city.tv
ホンマに一発で豆32できるね。Warningだらけだが。
ホンマにIntel C++使えるね。Warningだらけだが。
0502デフォルトの名無しさんNGNG
一応
タダで使えるVisual C++
http://pc5.2ch.net/test/read.cgi/tech/1082177340/l50
0503488NGNG
そこが少なくともここより糞スレだからこっちに書いた
0504デフォルトの名無しさんNGNG
mov dx,NIYA
mov ah,09h
int 21h

segment data
NIYA: db 'NIYA NIYA',0dh,0ah,'$'
0505493NGNG
>>499
ああ部外者さんすいません。時感覚が全然違うようなので話になりませんね。
0506デフォルトの名無しさんNGNG
gccで以下のCのソースをアセンブラ出力すると、
int main(){ int i=123,j=456; printf("%d %d\n",i,j); }

以下のように出力されるが
何でAの箇所で"-16"を"andl"してるのか理解できない。
main:
 pushl  %ebp
 movl  %esp,%ebp
 subl  $24,%esp
 andl  $-16,%esp  ← A
 movl  $456,8(%esp)
 movl  $123,4(%esp)
 movl  $.LC0,(%esp)
 call  printf
 leave
 ret

何故ですか?教えてエロイ人
0507デフォルトの名無しさんNGNG
16バイトアライン
0508デフォルトの名無しさんNGNG
・・・するとデータの並びが綺麗になって処理が少し早くなる
0509506NGNG
ってことはAの箇所は無くても動作上は問題ないってことですね。
これがアラインなのか。ナルホド
どうもアリガトン >>507,508
0510デフォルトの名無しさんNGNG
引数をどういう順序で積むかとか、関数内で変更しちゃいけないレジスタの一覧とか、
そういう規則(calling conventionっていうんでしょうか?)はどこ見れば書いてありますか?

x86のLinuxでインラインアセンブラで遊んでいます。
0511デフォルトの名無しさんNGNG
これか?
ttp://homepage2.nifty.com/yashiromann/memo/x86_proccall.html
■ このスレッドは過去ログ倉庫に格納されています