タグ

binaryに関するyuguiのブックマーク (71)

  • 64ビットCPU(AMD64+EM64T)でアセンブラ

    プログラミングメモ 以下の記述はすべて、当方が学習する際の備忘録として書いているものです。 記述には間違いがあるものとお考えください。 内容に対する保証は行いませんし、内容についていかなる責任も負いませんので、 その旨をご了承いただいた上で、お読みください。 IEで表示させた時に画面レイアウトが崩れ、横方向のスクロールバーが出る場合があります。 こうなった時はリロード(更新)してください。

    yugui
    yugui 2011/01/07
  • スタックフレーム | bnezの日記 | スラド

    G7氏のコメントより、「Schemeの実装におけるスタックフレーム(Draft)」について。サブルーチン呼び出し時の呼び出す側と呼び出される側との情報のやり取りを仲介する、スタックフレームのお話。 C言語の関数呼び出しでは、引数でも返り値でも扱えるものは値渡しのみである(Cにはポインタ渡しというものがあるが、これはプログラマが変数の位置情報を明示的にポインタに変換してから値として渡すものなので、処理系から見れば値渡しの一種である)。受け渡し時に扱うものが値渡しだけなので、スタックフレームも値渡し以上のことはできなくても良い構成になっている。「やりたきゃプログラマ自身の手で明示的にポインタ渡ししてね」というスタンスだ。 でもこのスタンスは、例えばクロージャのように値渡しだけでは実現できない機能には不十分だ。処理系がいちいち変数ごとに暗黙にポインタ渡しで置き換えればどうにか動くものを実現できる

    yugui
    yugui 2010/11/15
  • What is the direction of stack growth in most modern systems?

    yugui
    yugui 2010/09/28
  • めくるめくマシン記述の世界 - .mjtの日記復帰計画

    prev: http://d.hatena.ne.jp/mjt/20100811/p1 コンパイラやJITCを作る上で、マシン記述(MachineDescription)は現代的には必須のテクニックになっている。例えば、IA32やARMの世界ではCPUのモデル毎に使用できる命令が大幅に異なり、Xtensaのように生成的なプロセサも存在する。コンパイラを特定のCPUにべったり依存する形で書くことは殆んどなく、何らかのかたちで、 CPUにはどのようなレジスタが有るのか CPUの使える命令は何か CPU命令が利用/破壊するレジスタは何か といったことを統一的なフォーマットで記述し、可能なかぎりマシン依存部を減らす努力が求められている。 http://wiki.osdev.info/?MachineDescription gccのケース: CGENと.md GCCは.mdという形で、CPUが利用で

    めくるめくマシン記述の世界 - .mjtの日記復帰計画
    yugui
    yugui 2010/09/12
  • Route 477(2010-04-16)

    ■ [rails] Rails2/3用の認証プラグイン「devise」 http://github.com/plataformatec/devise Railscastsに簡単な紹介が上がってますのでそちらをどうぞ。 動画:Railscasts - Introducing Devise テキスト起こし:ASCIIcasts - “Episode 209 - Introducing Devise” 特徴は 必要なモデル・コントローラはUserのみ (Sessionは使わず、/user/sign_in とか create_user_session_path とかを使う) 認証周りのいろいろな機能がそれぞれモジュール化されている (confirmable, :recoverable, :rememberable...) とか。 Ruby Toolboxの他のプラグインとの比較は: Authlog

    Route 477(2010-04-16)
    yugui
    yugui 2010/04/25
    これがライフゲームVM開発戦争の前夜であったとは、知るよしもなかった。
  • Symbol Versioning

    yugui
    yugui 2010/04/17
  • ウェブリブログ:サービスは終了しました。

    「ウェブリブログ」は 2023年1月31日 をもちましてサービス提供を終了いたしました。 2004年3月のサービス開始より19年近くもの間、沢山の皆さまにご愛用いただきましたことを心よりお礼申し上げます。今後とも、BIGLOBEをご愛顧賜りますよう、よろしくお願い申し上げます。 ※引っ越し先ブログへのリダイレクトサービスは2024年1月31日で終了いたしました。 BIGLOBEのサービス一覧

    ウェブリブログ:サービスは終了しました。
  • PEから公開されている関数名を抜き出す - 2009-08-14 - ククログ

    ELFから公開されている関数名を抜き出す、Mach-Oから公開されている関数名を抜き出すのPE(Portable Executable)版です。PEはWindowsの.exeや.dllなどで利用されているファイルフォーマットです。 artonさんがCodeZineでDbgHelpを利用してDLLがエクスポートしている関数を列挙するという同様の内容の記事を書いています。PEのフォーマットについても説明しているので、まず、この記事を読んでおくとよいでしょう。 ここでは、DbgHelpなどライブラリを一切使わずに自力でPEをパースし、関数名を抜き出します。そのため、MinGWでクロスコンパイルすることも簡単です。実際、CutterはMinGWを用いたクロスコンパイルに対応しています。 下準備 簡略化のためファイルの内容をすべてメモリに読み込んでから処理します。コツコツ資源を利用したい場合は少しづ

    PEから公開されている関数名を抜き出す - 2009-08-14 - ククログ
  • VMMMIX - MMIX Virtual Machine

    VMMMIX is the MMIX virtual machine. It has console, HDD and Ethernet I/Os. Currently, this virtual machine runs on Windows only. And Linux runs on this MMIX virtual machine. While porting Linux to vmmmix, I encountered a problem. I couldn't solve this problem under MMIX architecture. So, I made dirty hack to MMIX architecture. One day, I got a book about the MMIX - "The Art of Computer Porgramming

  • スタックとヒープは同一? - 神様なんて信じない僕らのために

    密やかな違和感。 「ヒープ領域」「スタック領域」といっても結局、物理メモリ上の領域をVM側等で 扱いやすいように役割毎に分割してそう呼んでいるだけ、結局は同じ物理メモリ上。 我々が日々目にする(あるいは構築する)アプリケーションで「ヒープ領域」 「スタック領域」それぞれに割り当てた場合のコストを論じるのは多くの 場合ナンセンスです。 これらのアプリで、インスタンス変数にするかローカル変数にするかで 発生するメモリ割当のコストの違いはたかがしれています、誤差のような ものです、多くの場合、気にする必要はありません。 http://d.hatena.ne.jp/asipruby/20090425/1240617038 ハードウェア、ないしはCPUによっては、ヒープとスタックのメモリが異なっていることがあります。 例えばARMアーキテクチャなら、高速ローカル・メモリであるTCM(Tightly

    スタックとヒープは同一? - 神様なんて信じない僕らのために
    yugui
    yugui 2009/05/14
    あー、案の定そういうアーキテクチャもあるのね。
  • いろんなOSのldd: odacle's diary

    Google 地図 (Google 地図) Linux in USB (自分で作るLinux OS) (読書感想文) メール送信ができない!⇒ついに解決〔OP25B〕 (読む価値はナイ!) くろばこ (PukiWiki Plus! (PukiWiki/TrackBack 0.3)) aikoのネタ (ネタ蔵) selinux無効化 (IP-Network - Road to IPv6 -) TOSHIBA W録 RD-X5 600GB HDD&DVDレコーダー (徒然なるデジタル) 2バイト文字コードを変換する方法 (かしらもんじ でぇ〜) Super Tangent (スーパー・タンジェント) (ブログで情報収集!Blog-Headline/life) MP3プレーヤーの音質 (シグマリオンをパンツにつめこんで) ダイナミックリンクライブラリを調べる方法 Linux $ ldd file

    いろんなOSのldd: odacle's diary
    yugui
    yugui 2009/03/17
  • hi-matic.org

    2023 著作権. 不許複製 プライバシーポリシー Click here to give your consent

    yugui
    yugui 2008/09/07
  • hogetrace - 関数コールトレーサ - memologue

    でかいソフトウェアの、大量のソースコードを短時間で読む必要が生じたので、その補助ツールとしてptrace(2)ベースのLinux用関数トレーサを自作しました。こういうツール上でまずソフトウェアを実行してみて、どのファイルのどの関数がどういう順で呼ばれるか把握おけば、いきなりソースコードの山と格闘を始めるより楽かなーと思いまして。せっかく作ったので公開します。 http://binary.nahi.to/hogetrace/ straceはシステムコールだけ、ltraceは共有ライブラリ(DSO)の関数呼び出しだけ*1をトレースしますが、このツールは、実行バイナリ中の自作関数の呼び出しもトレースします。例えば再帰で1から10まで足し算するソースコードを用意して % cat recursion.c #include <stdio.h> int sum(int n) { return n ==

    hogetrace - 関数コールトレーサ - memologue
    yugui
    yugui 2007/10/09
  • 例外とバックトレースを使ったデバッグ - odz buffer

    あるプログラムを使っていると std::out_of_range で abort したので、デバッグしようとするものの、C++ は例外で abort しても Java のようにバックトレースを表示してくれたりしないので、どこが問題か分かり難くて困った。 #include <cstdlib> #include <cstdio> #include <execinfo.h> namespace std { void __throw_out_of_range(const char* msg) { void *trace[128]; int n = backtrace(trace, sizeof(trace) / sizeof(trace[0])); backtrace_symbols_fd(trace, n, 1); int a = 0 / 0; printf("%d\n", a); abort(

    例外とバックトレースを使ったデバッグ - odz buffer
  • ホワット・ア・ワンダフル・ワールド PDP-11 はスゲェ美しいッ! 百万倍も美しい !

    最近,OSC 2007 をきっかけに 30 日 OS を買っていろいろ遊んでいたら,昔よりは多少理解が深まってきた. ようやく Lions Book と,このサイトの真の素晴らしさがわかるようになってきたよ… ちょっとは成長したのかもしれない. 2238クラブ 昔の C 言語 (pre K&R) は,当に素朴でイイよなぁ… もうソースコード見ると出てくる機械語が透けて見えるぐらい素朴.というか,ポインタの型はもちろん,整数とポインタの区別さえテキトーだから,高級言語というよりも高級アセンブラ. ちなみに,コンパイラのソースコードが現在でも公開されてる. Very early C compilers and language main 文を見た瞬間,そのあまりのシンプルさにビックリ ! main(argc, argv) int argv[]; { extern init, flush;

    yugui
    yugui 2007/07/25
  • ホワット・ア・ワンダフル・ワールド 伊東家の食卓 : 80386 以降のリアルモードでメモリ空間 4 G をフルに使う裏技

    mixi で syd さんに教えてもらいました.こんな裏技があったとは… ja.wikipedia リアルモード Intel 80386では、プロテクトモードに移行した後、セグメントリミットを設定した後にリアルモードに復帰すると、命令にプレフィックスをつけることでそのセグメントリミットまでの実メモリ空間にアクセスすることが可能になるバグと思われるものもあり、この状態を Unreal mode と呼ぶことがある。この仕様は以降のすべてのCPUで有効となっている。 日語ではこれ以外にほとんど情報が無いなぁ… ちなみに syd さんは, 高校のころ,東大の TSG とかいうコンピュータサークルがこの裏技に関する記事を書いていたのを見て知ったそうです.ほえー東大すごす. 具体的には,こういうコードで unreal mode に以降できるのだそう.初めて読む 486 と OS 自作入門を参考にしつ

    yugui
    yugui 2007/07/20
  • ホワット・ア・ワンダフル・ワールド コンパイラインフラストラクチャ LLVM

    COINS はいろいろと微妙な気がするので,別のコンパイラインフラストラクチャ LLVM (Low-Level Virtual Machine) を見てみた. The LLVM Compiler Infrastructure Project LLVM ってのは,仮想マシンなんだけど,例えば Java の JVM,Perl の parrot,Ruby の TVM (旧旧 Rite,旧 YARV) みたいに,特定のプログラミング言語に向けたものではない (ってまぁ,みんな言うんだけど) なので,C-- のように,GC みたいな高級で,なおかつ言語に強く依存するような機能は提供しない (オプションとしては提供されているらしい) 単純な RISC-like な命令セットを持つ VM で,STL を駆使した C++ で書かれているらしい. GCC のバックエンドを持っているので,C/C++ からバイ

    yugui
    yugui 2007/03/26
    コメント欄
  • BIOS だって自由にしたい.そうでしょ?: Distro Freak

    名前:10nin 職業:会社員(技術系) 好きなべ物:アップルパイ 使用ディストロ:MacOX X / OpenBSD 趣味:プログラミング,プラモデル mail:akira19870221@gmail.com BIOS.世界中で数多くの人がお世話になっているだろうこのレガシなソフトウェアは,最後のレガシソフトウェアと称されるほど長く使われている.最近では新しいテクノロジに置き換えられつつあるものの,まだまだ数多くのマザーボードで採用されており,これからもしばらくその情勢が変化することはないだろう.そんな中,FSF推し進めているプロジェクトに FreeBIOS がある.これは,現在ハードウェアメーカや BIOS メーカの独占状態にある BIOS 市場に,フリーな精神をもったソフトウェアを投入しようというコンセプトの元はじまったプロジェクトである.日紹介するのは LinuxBIOS.

    yugui
    yugui 2007/03/08
  • 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

  • WhirlwindTutorialOnCreatingReallyTeensyElfExecutablesForLinux -

    WhirlwindTutorialOnCreatingReallyTeensyElfExecutablesForLinux - 目次 Linux で動く極小 ELF 実行ファイルをつくる怒涛のチュートリアル (あるいは "Size Is Everything") コメント 以下の文章の日語訳です: http://www.muppetlabs.com/~breadbox/software/tiny/teensy.html gcc の info の日語は以下のページから拝借しました: http://www.asahi-net.or.jp/~wg5k-ickw/html/online/gcc-2.95.2/gcc_2.html#SEC13 Linux で動く極小 ELF 実行ファイルをつくる怒涛のチュートリアル (あるいは "Size Is Everything") She studied

    yugui
    yugui 2006/12/18