【Cを】GUN Assembler【極める】

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
Unix-Cを極めるには避けて通れないgasについて語るスレッド
2デフォルトの名無しさん:02/03/12 10:05
gcc -Sで吐かれたソースを見ても
さっぱり解かりません。教えてください。
31:02/03/12 10:20
急用が出来たのでアフガンまで行ってきます。お世話になりました。
4デフォルトの名無しさん:02/03/12 10:22
んじゃ!
5デフォルトの名無しさん:02/03/12 10:26
>>3
試しにgasで
Hello,world
のサンプルソース書いてからアフガンに逝け
typoの予感
一つの道具で壁を感じたら 他の道具で挑戦してみたら?

Delphi/Kylix 使えば手軽にインラインアセンブラ使えるし
コードがあちこち落ちてるから、そっちから経験値貯めるのはどう?
アルカイダの皆さんに宜しく言っといてくれ
9デフォルトの名無しさん:02/03/12 10:41
あぁ・・・
3は1じゃないです。

>>7
レスありがとうございます。
やっぱり回り道でもそちらの方が近道だったりするんですかね。。。。
>>9
 うん。
 Delphi/Kylix のインラインアセンブラは使っても外のアセンブラが呼ばれない
だから一瞬でコンパイルが終るし、
それにIDEでデバック出来るから快適。
最初はDelphiで動的にビットマップでも作ってみればいいんじゃない?
>>2
>さっぱり解かりません。
というのはどう解らないんだ?
ニーモニックが解らない?
マシンのアーキテクチャが解らない?
ロジックが理解出来ない?
>>11
それが解ってるようなら「さっぱり解りません」とは言わない。

> また、「もう何が悪いのかサッパリ分かりません。」と言って
> ふてくされるのも有効である。「サッパリ」という単語が
> 「やる気の無さ」を効果的に表現している。
まずは$info asすれ、おれも勉強中だ。
14デフォルトの名無しさん:02/03/12 11:37
1です。

マシンのアーキテクチャ:はじめて読む486を通読しました。
ロジック:解かってないのかもしれません。

ニーモニック:今一番知りたいのはこれです。
nasm等のアセンブラはまだ参考書やWebに資料がありますが
gasとなるとinfo asしか資料が見当たりません。

それならnasmでいいじゃないかとお思いになるかもしれませんが
gccの吐くコードがgasなのでgasを極めたいのです。

あの膨大なinfo asを理解できるほどの英語力もgasの基礎知識もないので困ってます。
gasで始めるアセンブラ入門という本が図書館にあった。
16デフォルトの名無しさん:02/03/12 11:49
ふ〜ん、「はじめて読む486」とやらと
gasのニーモニックってかなり違うんだ?
ただ単に1はAT&Tシンタックスに慣れていないだけ。
Intelの奴で勉強しても基本だけは同じだよ。
18デフォルトの名無しさん:02/03/12 11:54
>>14
マジレスするとソース読めtc-i386.cとか

19デフォルトの名無しさん:02/03/12 11:56
GUN?
ねたスレかよ!
改めて見ると、確かに。
「gas アセンブラ入門」で検索したら今までで一番初心者に有益そうなページを発見しました。

ttp://www.rts.soft.iwate-pu.ac.jp/lab/system-A/2001/lesson-06/

以前に見つけたページです。
ttp://www-6.ibm.com/jp/developerworks/linux/010615/j_l-ia.html
ttp://www.gnu.org/manual/gas/

他はnasm等になってしまいますね。

>>16
一番知りたかったのはニーモニックと言うより擬似命令でした。
間違ってもネタじゃないです。
あぁ、GNUでしたね・・・
よく間違えます。
機動戦士GNUDAM
26netsecurity@fusianasam:02/03/12 14:27
>>25
シャア専用GNUとかあるの?
28GNUマンセー:02/03/12 15:22
マンセー
29デフォルトの名無しさん:02/03/12 15:33
1です。
こんなページも発見しました。

ttp://www.kondara.org/~a/speedmania/speedmania-7.html
ttp://www.teu.ac.jp/nsit/~tominaga/lect/pbe3/

これでやっとinfo asを読めるぐらいの基礎知識は身に付きそうです。
ちなみのどのWebページも

橋本 他「プログラミングの力を生み出す本」改訂第2版,オーム社,2000年(2,500円)

を参考資料としてますね。どこかで見かけたら購入してみます。
Cとアセンブラ
http://www.rkmath.rikkyo.ac.jp/~kida/casm.html

gcc -S の出力をサンプルにアセンブラを学ぶ講座らしい。
Interfaceで連載やってるので,まとめて読むつもりで積ん読
32デフォルトの名無しさん:02/03/12 21:50
下がりすぎ!
33デフォルトの名無しさん:02/03/12 22:20
gasは機能が足りなすぎてやってられん。だからgasなんぞを覚える前に
m4とかのマクロプロセッサの使い方を覚えろ。組み合わせて使わないと
やってられんぞ。
結局gasはコンパイラのバックエンドに過ぎないってこった。
34デフォルトの名無しさん :02/03/13 16:20
linuxのソースを読んでいたら
jmp *%1
なんていうことろを見つけたのですが、
これってどういう意味なんでしょうか?
即値アドレスでしめされる値のアドレスへ飛べラムー
thanx!
37デフォルトの名無しさん:02/03/13 20:20
>>35
よく分かりません
どういう事ですか?
>>37
ラムちゃん
39デフォルトの名無しさん:02/03/13 22:44
1です。

みなさんアドバイスありがとうございました。
勉強中ですが早速質問させていただきます。

1.
.section .rodata
のrodataとは何のことでしょうか?

2.
多分C言語のmain(int argc,char argv[])に当たるものだと思うのですが
.global main .type main, @function
とは具体的に何を意味しているのでしょうか?

よろしくお願いします。
40デフォルトの名無しさん:02/03/13 23:11
1です。
またいいページ見つけました。
ttp://karel.tsuda.ac.jp/class2001/arch/i486/

津田塾大学の講義ページのようです。
津田塾でアセンブリってなんか萌ぇですなぁ。。え、萎えですか?
つーかGASなんか使ってられるか
>>1
ご苦労なこった
42デフォルトの名無しさん:02/03/13 23:27
ttp://www.adac.co.jp/japanese/support/ghs/faq-ghs/c-lang/
の7,8と興味深い内用です。

>>41
nasmの方が格段に使い易いそうですね。
ただ私はgccの吐くコードを読みたいのと34さんのように
Linuxのソースを読解するのが目的なのでgasが避けられないのです。
gccがnasmのコード吐いてくれるなら是非nasmを使いたいのですが・・・
>>39
まんまセクションにつけられた名前ラムー
ELF Header Format辺りで検索すれ
44デフォルトの名無しさん:02/03/14 00:23
正直、>>1さんの頑張りに負けた。
age
正直、1=44の頑張りに負けた。
sage
46CS:02/03/14 01:06
わーいセグメントレジスタだー
masm系とオペランドの順番が逆なのがキモイ。
AT&T方式になれるとIntelの奴が気持ち悪くなってくるね
あと$付き即値もキモイ。
50デフォルトの名無しさん:02/03/14 01:35
あとGNUというのが生理的にいや
ここはgasスレ。関係ない書き込みはご遠慮ねがいます。
>>50
とりあえず氏ね。
53デフォルトの名無しさん:02/03/14 01:45
>>52
なんで死なないといけないんですか?
なんであなたにそんなこといわれないといけないんですか?
っていうか、なんであなたみたいな屑が人間やってるんですか?
ここはgasスレ。関係ない書き込みはご遠慮ねがいます。
55デフォルトの名無しさん:02/03/14 01:53
あけましておめでとうございます
>>53さっさと消えろヴォケ。
571:02/03/14 01:56
1です。
58:02/03/14 01:57
2です
59デフォルトの名無しさん:02/03/14 02:36
ここはGUN Assemblerを作成するスレデス
61です。
62デフォルトの名無しさん:02/03/14 09:26
GNU+Cygnus+Windows=Cygwin (・∀・)イイ!
>>60
仕様は?
>>63
銃を組み立てる工場の作業員のことをGUN Assemblerって言うんじゃないか?
65(ΦωΦ)イイ!:02/03/15 07:33
Cygwinイイ!!
マジでイイ!!
ていうかGNU最高!!!!
ほんと良過ぎて漏らすところだった。
50MBくらいあったけどコンパイラとか入ってたし
もう神かと思ったよヘ(゜Д、゜)ノアハハマンセー
Cygwin は Cygwin スレに逝け。
http://pc.2ch.net/test/read.cgi/unix/1011345180/l20
69デフォルトの名無しさん:02/03/18 21:06
ところでリバースエンジニアリングソフトなに使ってる?
70デフォルトの名無しさん:02/03/18 21:26
dispe&ANATOMIZER
71デフォルトの名無しさん:02/03/18 22:14
dispeいいねぇ。俺も好き。

ところでLinux環境でいい逆アセンブラある?
まぁLinuxはオープンソースが多いから
必死になって逆アセンブラする必要も無いんだけど。。
72デフォルトの名無しさん:02/03/18 22:31
ttp://bastard.sourceforge.net/

これどうよ?
「ここは gas スレ」というのが「ここは sage スレ」に見えました。まじで。
74_ :02/03/18 23:44
mov アドレス,値のほうが絶対見やすいって
構造化言語でも変数=値ってするし。
nasmとINTEL2gasがあれば
7574:02/03/18 23:45
わざわざgasの形式で覚えなくてもいいと思われ
76デフォルトの名無しさん:02/03/18 23:49
gcc -Sで出力されたコードの命令の意味がさっぱりわからん。
まあどうでもいいことなんだけど。
77デフォルトの名無しさん:02/03/19 00:05
>>74
ノンノン
英語の文法から考えれば
mov 値、アドレス
の方が普通。

あとぅにっくすCを極めるにはGASは避けれない
AT&Tマンセー
>>76
俺はどっちでもいいと思うな。別に英語の文法の順序にこだわる必要もないし、
エンディアンネスみたいに両方あってもいいんじゃない?
80sage:02/03/19 00:22
>>74
>ノンノン

これが異様にカワイイと思うのは俺だけか。
82デフォルトの名無しさん:02/03/19 15:32
gasじゃなくて悪いんだけど質問

Pentium3で疲れるレジスタ一覧が載っているサイトってあります?
結構色々あるんですよね?
http://www.nk.rim.or.jp/~jun/lxasm/asm00.html
この際ソースが nasm でも…
なにより linux だし…
そういう考えで取り組んでみた
hello.s は、なんか、書けた様子
ws.s で早くも撃沈
だれか頼むよ
84デフォルトの名無しさん:02/03/21 15:17
「プログラミングの力を生み出す本」・・・インテルCPUのGNUユーザへ

これ最高。騙されたと思って買ってみな。
将にGASの教科書だから。
騙された!
86デフォルトの名無しさん:02/03/21 16:55
>>82
Intel の開発者向け Web サイト

Intel Architecture Software Developer's Manual Vol I - III.

PDF 版が置いてあるから、それを持ってきて読め。
87デフォルトの名無しさん:02/03/23 00:14
プログラミングの力を生み出す本を買って見た。
悪くはなかった。でも擬似命令の解説が一切ナッシング。
88デフォルトの名無しさん:02/03/26 09:58
疲れるレジスタage
>>80 やっぱフローレンよりノンノンだよね。
90デフォルトの名無しさん:02/03/26 13:11
は〜〜〜〜あ
びばのんのん
91デフォルトの名無しさん:02/03/26 15:33
>>77 萌え
i386のAAA-Ascii Adjust for Addtionや
m68kのABCD-Add Binary Coded Decimalは
絶対何かを狙っているに違いない。
93デフォルトの名無しさん:02/03/27 12:04
rep
の使い方を教えてください。

rep
hoge

でrepが実行されるたびにcxがマイナスされhogeが
実行される
でいいのですか?
94デフォルトの名無しさん:02/03/27 19:51
hoge: .byte 36, 18, 15, 9

って
char a = 36;
char a = 18;
char a = 15;
char a = 9;

と同じですか?
char hoge[]={36,18,15,9};
じゃないの?
96デフォルトの名無しさん:02/04/16 06:51
binutilsの話題もこのスレでいいのかな?
>>96
スレ建てれば、類似スレとしてここ紹介されるだろうし
ここに書けばスレ違いだと言われるだろうし
そういうのって、多いよね。
>>97
BFDについて勉強したいけどなかなかいいドキュメントって
ないんですよね。2chじゃちょっとマニアックすぎるかな?
99デフォルトの名無しさん:02/04/17 00:43
http://www.sra.co.jp/public/sra/product/wingnut/bfd/bfd-ja.html
これで充分かと思われ。やっぱり母国語は読みやすい。
マニアックと言うか、話が合わないんだよな。そもそも誰が何言ってるか
わからん状況なので、逆に言うと誰でも出来るような話題しか出せない。
unix板の住人が落ち着いてるのは、MLとかNGで事足りてるからではないかな?
>>97
すれ違いといわれてからスレを立てても遅くはないと思われ
101デフォルトの名無しさん:02/04/17 01:45
変な記号があるけど(゚з゚)キニシナイ!
使えば都
>>99
どうもです
10398:02/04/17 04:19
BFDっていうのはオブジェクトファイルを操作するプログラムに
それらのファイル形式に依存しない共通のインターフェイスを
提供するためのものという理解でいいんですよね?
10498:02/04/17 04:26
あとオブジェクトファイル形式に依存した処理をBFDの
バックエンドに閉じ込めるためっていうのもあるか、、

やっぱりあれですかね。UNIXのツールを理解するには
ソースを見ることが必須ですかね。Windowsでずっと
やってきたのでそういう習慣がなかったりして戸惑います。
105デフォルトの名無しさん:02/04/18 00:58
保全age
106デフォルトの名無しさん:02/04/29 10:29
lds勉強あげ
107デフォルトの名無しさん:02/05/01 22:54
ひたたび保全あげっ。ちょびっ。
108デフォルトの名無しさん:02/05/01 23:07
じゃ、GUNあげ
109デフォルトの名無しさん:02/05/14 18:36
http://webster.cs.ucr.edu/Page_asm/ArtOfAsm.html
これはいいので、あげ!

さてと、ちまちま読み始めるかな。
http://webster.cs.ucr.edu/
ゴメン、こっちのトップから入ったほうが沢山情報があった。
111_:02/05/14 18:56
GAS形式がどうしても嫌いな人はgas2itelでnasm(INTEL形式)に変換できるよ。
別にそのままでもすぐになれるけど。。。アセンブラの文法なんて単純だし。
112デフォルトの名無しさん:02/05/17 15:42
便乗上げ
113デフォルトの名無しさん:02/05/17 15:47
>>42
いまさらだがLinuxのカーネルソースはGASじゃなくてas86かと思われ
114a:02/05/17 15:58
a
115デフォルトの名無しさん:02/05/17 16:04
>>113
それってさあ、リアルモードで動作してるときのコードだけじゃなくて?
ブートのところは知らないけど、それいがいのところは確か、
普通にasで書かれてたと思ったけど。
「思われ」じゃなくて、お前は間違ってる。
2.4系はbin86を一切つかってないんじゃなかったっけ?
117デフォルトの名無しさん:02/07/02 15:28
保守挙げ
>>117
あんた神!
このスレを探したのよ俺は。
あげてくれてあんがと
119デフォルトの名無しさん:02/08/09 18:20
保守挙げ
120デフォルトの名無しさん:02/08/14 11:39
age
121デフォルトの名無しさん:02/09/23 16:28
http://www.rkmath.rikkyo.ac.jp/~kida/casm.html
ここを見ながらgasについて勉強しています。
ところで、
gcc -S hello.cなどとコンパイルすると
沢山の.XXXとXXX:とういのが含まれています。これらはなんのでしょうか?
Cなどと同じように:はラベル。.は.textや.dataなどのセクションと同じように
ユーザー定義のセクションを作る、ということなのでしょうか?

だとするとユーザー定義のセクションの意味がよく分かりません。
なんでそんなものが必要なんでしょうか?
>>121
> 沢山の.XXXとXXX:とういのが含まれています。これらはなんのでしょうか?
アセンブラに対する命令。いろいろあるけど

.ascii
 C のソースコード中の文字列リテラルに対応。文字列として、これこれの
 データを用意してどっかのメモリに置いとけ、という指示。

.global シンボル名
 シンボル名を外部リンケージ (C なら extern やね) にしろ、という指示。

などなど。
The Special Dot Symbol
======================

The special symbol `.' refers to the current address that `as' is
assembling into. Thus, the expression `melvin: .long .' defines
`melvin' to contain its own address. Assigning a value to `.' is
treated the same as a `.org' directive. Thus, the expression `.=.+4'
is the same as saying `.space 4'.