アセンブリ言語に関するpazzle1230のブックマーク (7)

  • 32ビット整数の、定数での除算 » Jeans & Development

    プログラミングをしていると、整数値を10で割るというコードは良く出てくる。例えば、整数を10進法文字列に変換する場合など。 コンパイラーを用いて、10で割るコードを記述すると、アセンブリーを見たときに0xcccccccdを掛けて右35ビットシフトするコードになっていることがある。割り算はCPUにとって非常に高負荷な演算なので、掛け算とシフトに置き換えることで、高速化を図っているようだ。32ビットのほとんどのCPUでは、32ビットどうしの掛け算の結果を64ビット値として得、上位32ビットと下位32ビットを2つのレジスターに格納するようになっているので、「0xcccccccdを掛けて右35ビットシフト」は非常に効率がよい。 では、10以外の数値での割り算はどうかと、ネットで検索してみたが、包括的に解説している記事は見つからなかった。そこで、ちょっと調べてみた。 0xcccccccdという値は何

  • 逆アセンブルで遊んでみる(0)何もしない関数 - ゆずさん研究所

    「フィーリングで読むアセンブラ入門」の発売が待ち遠しくて、いかにも発狂しそうですが、発売日まで、自分の環境で逆アセンブルして我慢しようということで…。 今回のソースコードは、こんな内容。内部で何も行わない関数の逆アセンブルを行ってみます。 /* asm000.c */ void func(void) { }上のソースファイルに対して、以下のコマンドを実行して、オブジェクトファイルを生成します(-Wallで「すべての警告を表示」、-O0で「最適化を行わない」、-cで「アセンブルまで行い、オブジェクトファイルを生成する(リンクは行わない)」)。リンクは行わないので、main関数が存在しなくても大丈夫です。 $ gcc -Wall -O0 -c asm000.c オブジェクトファイルについて、GNU binutilsの「objdump」を実行すると(以下コマンド)、逆アセンブルの結果が出力されま

    逆アセンブルで遊んでみる(0)何もしない関数 - ゆずさん研究所
  • アセンブリ NASM (Linux)

    NASM(Netwide ASseMbler) . LinuxでのNASMについて 『独習アセンブラ』の中に書いてあったDOS用のソース を Linux 用のソースに置き換えて書いてみました. 1 LinuxNASM アセンブリ言語 今回,Plamo-4.2 LinuxNASMを使ってアセンブリ言語をやっていきます. Fedora Core5 も並行しなが検証していきますが, 説明は, ほとんど Plamo-4.2 でのアセンブリを対象にしています.『独習アセンブラ』では, 大半がDOSのアセンブリソースについて書いてありLinuxで検証するにはの中だけの説明ではアセンブラの初級者にはチッョト辛いものがあります.実際にソースを Linux 用に書き直し検証しながら現在進行形で進みます.(現在進行形のため途中で文章が修正されるかもしれませんが, 修正部分には訂正の斜線を引

    pazzle1230
    pazzle1230 2014/05/24
    独習アセンブラのやつ
  • 猫科研究所 - nasmとアセンブラ関連リンク集

    pazzle1230
    pazzle1230 2014/03/31
    アセンブリ入門サイトがまとまってる
  • http://ruffnex.oc.to/kenji/xrea/nasm.txt

    [ Assembly Programming on Linux (NASM) ] 動作確認は Linux(x86) で行っています。 NASM に関しては http://nasm.sourceforge.net/ を参照してください。DLも 同サイトで出来ますが、ちょっと重いので kernel.org ( http://www.kernel.org/pub/software/devel/nasm/ ) からDLしたほうがいいかもしれません。 この記事はC言語はもちろん、スタックやレジスタといった基的なことは理 解していること前堤で進めます。 >> [ 0x01 ] 環境を整える NASMのソースをDLします。そしてインストールします。 そしてテキストエディタに以下のように書いて実行してみます。 Hello.asm -------------------------------------

  • 目指せプログラマー!

    目指せプログラマー!にようこそ。 当サイトはこちらに引っ越しました。 お手数をおかけしますが、上記サイトへご移動くださいませ。

  • Assembly Programming Linux

    はじめに. アセンブラを使って Linux のプログラミングで遊んでみます.アセンブラには NASM を使用して,カーネルを直接利用することにします. いまさらアセンブラでプログラムを作成することは,時代錯誤と感じる人も 多いかもしれません.「アセンブラでプログラミングなんて職人芸でしょう」 と思うかもしれません. 20年前では趣味のプログラミングは BASIC か アセンブラしか選択肢がありません でしたが,今ではPerl, Ruby からアセンブラまでの間に非常に多くの言語があって, アセンブラは普通では不要な最下層の知識となっていると思います. 10BaseT のツイストペアケーブルのインピーダンスを気にする人はほとんどいない ようなものでしょうか? アセンブリ言語の学習で最も困難なのは,最近では書籍が見つからないこと かもしれません. …と書いていましたが、また増えてきているようで

  • 1