トップページ⇒tech
123コメント25KB

【Cを】GUN Assembler【極める】

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさんNGNG
Unix-Cを極めるには避けて通れないgasについて語るスレッド
0002デフォルトの名無しさんNGNG
gcc -Sで吐かれたソースを見ても
さっぱり解かりません。教えてください。
00031NGNG
急用が出来たのでアフガンまで行ってきます。お世話になりました。
0004デフォルトの名無しさんNGNG
んじゃ!
0005デフォルトの名無しさんNGNG
>>3
試しにgasで
Hello,world
のサンプルソース書いてからアフガンに逝け
0006デフォルトの名無しさんNGNG
typoの予感
0007デフォルトの名無しさんNGNG
一つの道具で壁を感じたら 他の道具で挑戦してみたら?

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

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

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

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

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

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

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

0019デフォルトの名無しさんNGNG
GUN?
0020デフォルトの名無しさんNGNG
ねたスレかよ!
0021デフォルトの名無しさんNGNG
改めて見ると、確かに。
0022デフォルトの名無しさんNGNG
「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
一番知りたかったのはニーモニックと言うより擬似命令でした。
0023デフォルトの名無しさんNGNG
間違ってもネタじゃないです。
0024デフォルトの名無しさんNGNG
あぁ、GNUでしたね・・・
よく間違えます。
0025デフォルトの名無しさんNGNG
機動戦士GNUDAM
0026netsecurity@fusianasamNGNG
>>25
シャア専用GNUとかあるの?
0027デフォルトの名無しさんNGNG
>>26
有る。
http://www.vector.co.jp/soft/solaris/sources/se044293.html?y
0028GNUマンセーNGNG
マンセー
0029デフォルトの名無しさんNGNG
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円)

を参考資料としてますね。どこかで見かけたら購入してみます。
0030デフォルトの名無しさんNGNG
Cとアセンブラ
http://www.rkmath.rikkyo.ac.jp/~kida/casm.html

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

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

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

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

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

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

>>41
nasmの方が格段に使い易いそうですね。
ただ私はgccの吐くコードを読みたいのと34さんのように
Linuxのソースを読解するのが目的なのでgasが避けられないのです。
gccがnasmのコード吐いてくれるなら是非nasmを使いたいのですが・・・
0043デフォルトの名無しさんNGNG
>>39
まんまセクションにつけられた名前ラムー
ELF Header Format辺りで検索すれ
0044デフォルトの名無しさんNGNG
正直、>>1さんの頑張りに負けた。
age
0045デフォルトの名無しさんNGNG
正直、1=44の頑張りに負けた。
sage
0046CSNGNG
わーいセグメントレジスタだー
0047デフォルトの名無しさんNGNG
masm系とオペランドの順番が逆なのがキモイ。
0048デフォルトの名無しさんNGNG
AT&T方式になれるとIntelの奴が気持ち悪くなってくるね
0049デフォルトの名無しさんNGNG
あと$付き即値もキモイ。
0050デフォルトの名無しさんNGNG
あとGNUというのが生理的にいや
0051デフォルトの名無しさんNGNG
ここはgasスレ。関係ない書き込みはご遠慮ねがいます。
0052デフォルトの名無しさんNGNG
>>50
とりあえず氏ね。
0053デフォルトの名無しさんNGNG
>>52
なんで死なないといけないんですか?
なんであなたにそんなこといわれないといけないんですか?
っていうか、なんであなたみたいな屑が人間やってるんですか?
0054デフォルトの名無しさんNGNG
ここはgasスレ。関係ない書き込みはご遠慮ねがいます。
0055デフォルトの名無しさんNGNG
あけましておめでとうございます
0056デフォルトの名無しさんNGNG
>>53さっさと消えろヴォケ。
00571NGNG
1です。
00582NGNG
2です
0059デフォルトの名無しさんNGNG
それるけど

 ttp://www.skyfree.org/jpn/index.html
0060デフォルトの名無しさんNGNG
ここはGUN Assemblerを作成するスレデス
0061デフォルトの名無しさんNGNG
61です。
0062デフォルトの名無しさんNGNG
GNU+Cygnus+Windows=Cygwin (・∀・)イイ!
0063デフォルトの名無しさんNGNG
>>60
仕様は?
0064デフォルトの名無しさんNGNG
>>63
銃を組み立てる工場の作業員のことをGUN Assemblerって言うんじゃないか?
0065(ΦωΦ)イイ!NGNG
Cygwinイイ!!
マジでイイ!!
ていうかGNU最高!!!!
0066デフォルトの名無しさんNGNG
ほんと良過ぎて漏らすところだった。
50MBくらいあったけどコンパイラとか入ってたし
もう神かと思ったよヘ(゜Д、゜)ノアハハマンセー
0067デフォルトの名無しさんNGNG
Cygwin は Cygwin スレに逝け。
http://pc.2ch.net/test/read.cgi/unix/1011345180/l20
0068名無しさん@XEmacsNGNG
ttp://volta.me.ics.saitama-u.ac.jp/~fujita/linux_mmx/
0069デフォルトの名無しさんNGNG
ところでリバースエンジニアリングソフトなに使ってる?
0070デフォルトの名無しさんNGNG
dispe&ANATOMIZER
0071デフォルトの名無しさんNGNG
dispeいいねぇ。俺も好き。

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

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

あとぅにっくすCを極めるにはGASは避けれない
0078デフォルトの名無しさんkNGNG
AT&Tマンセー
0079デフォルトの名無しさんNGNG
>>76
俺はどっちでもいいと思うな。別に英語の文法の順序にこだわる必要もないし、
エンディアンネスみたいに両方あってもいいんじゃない?
0080sageNGNG
>>74の
>ノンノン

これが異様にカワイイと思うのは俺だけか。
0081名無しさん@XEmacsNGNG
ttp://www.rts.soft.iwate-pu.ac.jp/lab/system-B/2001/lesson-07/ebx/
0082デフォルトの名無しさんNGNG
gasじゃなくて悪いんだけど質問

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

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

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

PDF 版が置いてあるから、それを持ってきて読め。
0087デフォルトの名無しさんNGNG
プログラミングの力を生み出す本を買って見た。
悪くはなかった。でも擬似命令の解説が一切ナッシング。
0088デフォルトの名無しさんNGNG
疲れるレジスタage
0089デフォルトの名無しさんNGNG
>>80 やっぱフローレンよりノンノンだよね。
0090デフォルトの名無しさんNGNG
は〜〜〜〜あ
びばのんのん
0091デフォルトの名無しさんNGNG
>>77 萌え
0092デフォルトの名無しさんNGNG
i386のAAA-Ascii Adjust for Addtionや
m68kのABCD-Add Binary Coded Decimalは
絶対何かを狙っているに違いない。
0093デフォルトの名無しさんNGNG
rep
の使い方を教えてください。

rep
hoge

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

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

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

やっぱりあれですかね。UNIXのツールを理解するには
ソースを見ることが必須ですかね。Windowsでずっと
やってきたのでそういう習慣がなかったりして戸惑います。
0105デフォルトの名無しさんNGNG
保全age
0106デフォルトの名無しさんNGNG
lds勉強あげ
0107デフォルトの名無しさんNGNG
ひたたび保全あげっ。ちょびっ。
0108デフォルトの名無しさんNGNG
じゃ、GUNあげ
0109デフォルトの名無しさんNGNG
http://webster.cs.ucr.edu/Page_asm/ArtOfAsm.html
これはいいので、あげ!

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

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

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

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

などなど。
0123名無しさん@EmacsNGNG
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'.
■ このスレッドは過去ログ倉庫に格納されています