タグ

asmに関するmitsuki_engawaのブックマーク (19)

  • KMC Staff Blog:gas のインテル構文

    2009年10月08日 gas のインテル構文 twitter で gas の構文は理解しにくいと hmori さんがつぶやいていたのを見て、意外と知られて無さそうなので書きます。 x86 と x86-64 において、gas と GCC が出力するアセンブリコードのデフォルト構文は AT&T 構文と呼ばれる UNIX アセンブラの伝統的な構文です。プログラミングの力を生み出すや、ふつうのコンパイラをつくろうなど、最初から一貫して AT&T 構文を元にアセンブリプログラミングを解説している書籍も無いことは無いのですが、確かにintel のマニュアルの構文とは引数の順番などが異なるので、慣れないと混乱の元になるのではないかと思います。 また、%レジスタや$即値などの独特のプリフィクスが大量に付くので、見た目が少しゴチャゴチャするようにも感じます。(movl などの b/w/l のように、デー

    mitsuki_engawa
    mitsuki_engawa 2009/10/20
    「バージョン 2.10 から、インテル構文 (intel syntax) もサポートしています」おお。
  • Win32デバッグ(9)・・・逆アセンブラ: vanillaの日記

    各逆アセンブラライブラリの詳細については、各ライブラリのサイトを参照。ここではどのライブラリを使うかだが、ここでは上記の1つであるHacker Disassembler Engine(HDE)を使うことにした。理由は最終更新日が最近(2009年3月)であるのと、軽量である点だ。他のライブラリは結構高機能で逆アセンブルした機械語をアセンブラのニーモニックのテキスト形式に変換できたりするが、今回はx86命令のRET命令を検出できればよいので、命令長やオプコードなど最小限の情報だけを取得できるHDEにした(ちなみに、上記BeaEngineのサイトにLength Disassemblerというものもあるようだ・・)。 次に、新しいクラスを設計するが、その前にx86命令の大まかな命令フォーマットを知らないと設計できないので、x86命令の命令フォーマットを少し。x86命令の命令フォーマットは次のように

  • TAKESAKO @ Yet another Cybozu Labs: [Debug Hacks] #66.手元のx86マシンが64bitモード対応かどうかを調べる

    日オライリージャパン様より「Debug Hacks――デバッグを極めるテクニック&ツール」の献をいただきました。著者の皆様、出版社の皆様ありがとうございます。 とりあえず、ざっくりと気になる章だけをかいつまんで読んでみたのですが、最後の章「#66.手元のx86マシンが64bitモード対応かどうかを調べる」では、/proc/cpuinfo で lm の文字列を探す方法と、以下のような CPUID 命令を発行して今自分が使っているマシンのCPUが64bitに対応しているかどうかを調べるハックが紹介されていました。 #include <stdio.h> void cpuid(int op, unsigned int *eax, unsigned int *ebx, unsigned int *ecx, unsigned int *edx) { __asm__("cpuid" : "=a" (

  • JavaScript で x86 アセンブラ (32 bit) を書いてみた - moriyoshiの日記

    4/22追記: Mach-O builder も実装したので Intel Mac でも遊べる。 JQuery っぽい文法で、ブックマークレットとして簡単に遊べるアセンブラが欲しいと思って勢いで書いてみた (デモ)。とりあえず以下のサンプルが動くくらいにしか実装してない。 var buf = new Buffer(); with (new Assembler(buf)) { call($('get_addr')); $$('get_addr'); pop(ecx); add($('str - get_addr'), ecx); mov($('sizeof(str)'), edx); xor(ebx, ebx); mov(4, eax); // write(2) int(0x80); mov(1, eax); int(0x80); // _exit(2) $$('str'); $string(

    JavaScript で x86 アセンブラ (32 bit) を書いてみた - moriyoshiの日記
  • FreeBSD/i386 な環境で perl のコードを実行する方法 - 竹迫の近況報告

    今日からはじめての FreeBSD プログラミング、ということで、 まず最初に execve() を使って Hello, world! するプログラムを書きました。 8048080: 68 2d 65 00 00 push $0x652d 8048085: 89 e6 mov %esp,%esi 8048087: 68 6c 00 00 00 push $0x6c 804808c: 68 2f 70 65 72 push $0x7265702f 8048091: 68 2f 62 69 6e push $0x6e69622f 8048096: 68 2f 75 73 72 push $0x7273752f 804809b: 89 e7 mov %esp,%edi 804809d: 68 5c 6e 22 00 push $0x226e5c 80480a2: 68 72 6c 64 21 p

    FreeBSD/i386 な環境で perl のコードを実行する方法 - 竹迫の近況報告
  • perl から任意の C ライブラリを呼び出す方法 - kazuhoのメモ置き場

    syscall って組込関数でシステムコールはできますけど、libc やその他ライブラリの関数を呼びたい、ってこともありますよね。i386 かつ dlopen な環境なら、こんな風に書けます。 use DynaLoader; use ops; sub ccall { my $r = '1111'; my $s = "\x68" . pack("L", $_[5]) . "\x68" . pack("L", $_[4]) . "\x68" . pack("L", $_[3]) . "\x68" . pack("L", $_[2]) . "\x68" . pack("L", $_[1]) . "\xb8" . pack("L", ("Dyna"."Loader")->can("dl_find_symbol")->(("Dyna"."Loader")->can("dl_load_file")->

    perl から任意の C ライブラリを呼び出す方法 - kazuhoのメモ置き場
    mitsuki_engawa
    mitsuki_engawa 2009/03/13
    なんかN88-BASICのDATA/READ/POKEを思い出した。
  • JSASM the x86 Javascript Assembler - 葉っぱ日記

    JavaScript で書かれた x86 アセンブラ。JASMなのかJSASMなのかよくわかんないけど、XSSでWebアプリにアセンブラなテキストを注入→JSASMでアセンブル→脆弱なIEとかにバイナリ注入、とかできれば Web 2.0 っぽいと思った今日この頃(違。

    JSASM the x86 Javascript Assembler - 葉っぱ日記
    mitsuki_engawa
    mitsuki_engawa 2007/04/12
    かっこいい(間違い
  • リアルモード用アセンブラ - Plan9日記

    以前,ブート部分がどうなっているのか気になったので,ソースコードを眺めてみたら,アセンブリが全部プリプロセッサのマクロで書かれていて驚いた.というのも,Plan9のアセンブラ(8a)はリアルモード,16ビットのコードを吐けないからだ. /sys/src/boot/pc/x16.hに定義がある.例えば,簡単なところだと,NOPは #define NOP BYTE $0x90という具合に. 何だかなぁと思っていたら,今日,リアルモード用のアセンブラを公開したという投稿があった. /n/sources/contrib/quanstro/realmode.tbz (追記: 2007-03-23) あろはさんが「当にプリプロセッサでアセンブラ書いてるとは」でmbr.sの実例を挙げて書かれているので,興味のある人はそちらへ〜

    リアルモード用アセンブラ - Plan9日記
    mitsuki_engawa
    mitsuki_engawa 2007/03/24
    これがほんとのマクロアセンブラ(ぉ
  • Xbyak - x86 JIT assembler -

    Xbyak - x86, x64 JIT assembler - .frame(English) .frame(x86の究極の最適化手法?) Xbyak(カイビャック)はx86(IA32), x64(AMD64, x86-64)のマシン語命令を生成するC++のクラスライブラリです. プログラム実行時に動的にアセンブルすることが可能なため, 柔軟な最適化(動的コード生成)が可能となります(利用シーン:量子化の高速化, 式の計算). 暗号ライブラリに使って高速な実装をしてみた(very fast etaT pairing for Core 2 Duo) ヘッダファイルオンリー xbyak.hをインクルードするだけですぐ利用することができます(32bit, 64bit両対応). Windows Xp(32bit, 64bit), Vista/Linux(32bit, 64bit)/Intel

  • fnami: Hobby Page

    作者ホームページサービス(hp.vector)は終了いたしました。 長らくのご利用、ありがとうございます。 ご不明な点があれば、お問い合わせページをご覧の上、お問い合わせください。 ※15秒後にトップページに戻ります。 (c) Vector HOLDINGS Inc.All Rights Reserved.

  • top | "Scene Research Station"

    いつの間にか始まってた! 今回の課題は、連立一次方程式の解、ってことで定石通り LU 分解の right-looking で攻める人が多数になりそうな予感。 しかし、前はソートだったし、大学生のアルゴリズムの演習みたいな枯れた課題が多いですね。 とはいえ、アーキテクチャが変われば、攻め方も変わるというもの。 前回より戦略に幅が出やすい問題のような気がするし、動向に要注目です。 小ネタということで、以前 verilog を書くために作った emacs lisp を紹介。 この lisp は、/*auto-script 〜 */で囲まれた部分を任意のコマンドに流して、 その結果を挿入する。 例えば、C 言語で sin table (例えば1.31の固定小数点) を埋め込みたいとする。 (PC じゃないかもしれないけど、組み込みとかなら有り得る) そんなとき auto-script があれば、ち

  • http://www.radasm.com/

  • Release 22-Jan-2006 オープンソース CASLアセンブラとCOMETエミュレータについて

    学校法人電子学園 日電子専門学校  コンピュータネットワーク研究科(情報系主任研究員:小菅貴彦)は、情報 処理技術者試験基情報技術者の午後問題に出題される仮想アセンブラおよび仮想ハードウエアのエミューレータ、openCASLを公開いたしまし た。 このアプリケーションは、仮想アセンブリ言語をアセンブルする oca(OpenCASLAssembla)および仮想ハードウエアCOMETのエミュレータoce(OpenCometEmulator)2つのプログ ラムからなり、ソースプログラムと同時に、 RedHat9(gcc)またはWindows(Borland C++)でコンパイルされたバイナリが付属しています。またこれらのバイナリおよびソースコードはGPLライセンスでの配布に なります。 これまで、CASLアセンブラ、COMETエミュレータのフリー(無料)ソフトウエアは数多く存在していまし

  • gccのx86インラインアセンブリに関して

    GCCでインラインアセンブリを使用 する方法と留意点等 for x86  (1999〜2006年10回改訂、2006年1月22日注意を追加、最終更新日2006年5月27日) 文: A. SAITOH <s-akira at users.sourceforge.net>  home ※システム名、CPU名は一般に開発会社の登録商標です。 以下の情報はあまり過度に信用しないで下さい。より正確な情報は、asやgccのinfoから得て下さい。 個々のプロセッサ命令の解説はここでは述べません。そのような技術資料は、インテルやAMDのウェブ サイトのdeveloper向けのページからpdf形式で入手できます。 以下の文及びプログラム例の運用結果に関して、筆者は一切責任を負いません。 参考文献 [0] D. Stancevic, K. Scheibler, J. Leto, Linux Assembly

  • Assemble Programming

    各説明 Masm(16bit)プログラミング MS-DOS(16bit Real Mode)でのMasmプログラミングについての解説。 Masm(16bit)プログラミング例題 MS-DOS(16bit Real Mode)での例題プログラミング。 Masm(Win32)プログラミング MasmでWin32プログラミングをしてみるための解説。

  • http://sunlee.muraoka.info.waseda.ac.jp/~kawakoya/research/pukiwiki/pukiwiki.php?%A5%A2%A5%BB%A5%F3%A5%D6%A5%E9

    mitsuki_engawa
    mitsuki_engawa 2005/12/04
    gasの簡単な解説
  • Assembly Programming Linux

    Linux でアセンブリプログラミング copyright (C) 2000-2003 Jun Mizutani (mizutani.jun@nifty.ne.jp) はじめに. アセンブラを使って Linux のプログラミングで遊んでみます.アセンブラには NASM を使用して,カーネルを直接利用することにします. いまさらアセンブラでプログラムを作成することは,時代錯誤と感じる人も 多いかもしれません.「アセンブラでプログラミングなんて職人芸でしょう」 と思うかもしれません. 20年前では趣味のプログラミングは BASIC か アセンブラしか選択肢がありません でしたが,今ではPerl, Ruby からアセンブラまでの間に非常に多くの言語があって, アセンブラは普通では不要な最下層の知識となっていると思います. 10BaseT のツイストペアケーブルのインピーダンス

  • Linux Zaurusでアセンブリプログラミング

    Linux Zaurusでアセンブリプログラミング copyright (C) 2003 Jun Mizutani (mizutani.jun@nifty.ne.jp) 目次 はじめに (10/07/2003 更新) 1. アセンブラのインストールと実行 (2/11/2003) 2. ARMのレジスタ (2/18/2003) 3. 演算命令と分岐命令 (2/22/2003) 4. ロード/ストア命令 (3/3/2003) 5. ロード/ストア命令(複数レジスタ) (3/11/2003) 6. システムコールとその他の命令 (3/29/2003) 7. アセンブラGNU asの基礎知識 (9/15/2003) 8. 標準入出力用のサブルーチンの作成 (9/23/2003) 9. フレームバッファでグラフィックス - その1 (10/07/2003) 続く... 付録A.

  • https://www.cqpub.co.jp/hanbai/books/MIF/MIFZ200601.htm

  • 1