タグ

Binary2.0に関するyamanetoshiのブックマーク (177)

  • 大域変数からの参照 - GC - higepon blog

    大域変数から参照されているものは回収されてはならない。 まだ参照されているか?は、bss領域とかデータ領域の開始位置と終了位置の間を走査してやればよい。 開始や終了の位置はリンク時に解決されるので、ld のデフォルトリンカスクリプトを見ればわかりそう。 ld を --verbose で実行するとデフォルトのリンカスクリプトが表示されます。 ld --verbose /home/taro/scheme/gc $ ld --verbose GNU ld version 2.17 Debian GNU/Linux Supported emulations: elf_i386 i386linux elf_x86_64 using internal linker script: ================================================== /* Script

    大域変数からの参照 - GC - higepon blog
  • 浮動小数点演算ではまった話 - bkブログ

    浮動小数点演算ではまった話 浮動小数点演算のありがちな問題ではまりました。 いろいろ調べているうちに x86 特有のちょっとおもしろい 現象に遭遇したので紹介したいと思います。 パーセンテージの計算 簡単な C のプログラムでパーセンテージを計算しようと思い、 次のようなコードを書きました。 int x, y; ... int a = (double)x / y * 100; int a = x * 100 / y としないのは、 x が大きい場合に x * 100 が オーバーフローを起こす (INT_MAX を越える) ためです。 このコードは一見、期待通りに動いていたのですが、 しばらく使っていると、手元の環境では x = 53, y = 100 のときに a は 53 ではなく 52 になることに気づきました。 これは次の理由によります。 式の最初の (double)53 / 10

  • 更新履歴兼雑記 - [Program][Bin] 自力で関数を呼ぼう帰ろう

    まさにこういう面白さを伝えたいわけだけど。 http://d.hatena.ne.jp/paella/20070125/1169651616 コンパイラについては、 C は宣言してない関数は int func(...) 扱いしたと思いますので、まぁ問題無いかと思われます。そもそも互換性の無いポインタ同士の変換も C 的にはたしか warning 止まりかなぁと。 でそれはともかく、やっぱ自分はそうだったんですが、アセンブリ覚える時に一番障害になったのは関数呼び出しと帰るところなので、それを自力でやってみようという話。こういうの慣れておかないとどうもアセンブリ読む時も書く時も障害になる気がする。アセンブリ知らない子、特に書いてみようと思ったけど gcc -S して愕然としたような人向けです。 まず呼び出し。 printf("%d\n", 3); とか自分で書きたいなー、と思って gcc -S

    更新履歴兼雑記 - [Program][Bin] 自力で関数を呼ぼう帰ろう
  • Portable Binary Hacks : 更新履歴兼雑記

    Binary Hacks は GNU/Linux & x86 メインなわけですが、それ以外の OS だのアーキテクチャだの言語だのコンパイラだのならどうなる?っていうのを個人的に記録していこうとしています。 http://shinh.skr.jp/pbh/ まだまだ書きかけばかりですが少しずついじろうかとは思います。 以下放言。ポータブルがどうこうのすすめ。 ポータブルがどうこうとか考えながら色々調べていくと、各アーキテクチャのバッドノウハウとかが色々と見えたり見えなかったりします。こういうバッドノウハウは今すぐ物を動かしたい人間には欝陶しいだけのものですし、他に応用の効かない些細な知識ばかり、まぁ普通思うわけです。まぁ私も時々思います。 UTF8 めんどーとかほんのついさっきも思いました。 ですが、気分のいい時は、なんとなくアレはあの CPU ではどんな命令なのかなーとか、あの環境でもこ

    Portable Binary Hacks : 更新履歴兼雑記
  • はてなブログ | 無料ブログを作成しよう

    ビールとポップコーンと映画 ラストマイルを見た。良い映画だった。 映画館でべそべそ泣いて、鼻を啜りながら車で帰った。感想はこのブログでは書かない。みんな映画館に行って感じてみてほしい。 帰ってからツイッターで感想を漁り、うんうん、わかるわかる、そうだよね、とまた映画を思い出して…

    はてなブログ | 無料ブログを作成しよう
  • GCあれこれ - higepon blog

    GCに関してWebの資料やら、「情報処理学会誌94年11月号」を読み漁っていて大分詳しくなりました。 適当なメモは→Scheme/B.GC調査/02.GC概要 - Mona PJ Wikiに書いてあります。 ひとつまだ分からないことがあって迷っています。 GCを持たないAという言語で、GCを持つインタプリタBを実装するとき、Bのオブジェクトは管理テーブルでタイプや構造を管理して、GCに使います。 つまりAでB用のGCを実装することになります。 では、GCを持つCという言語で、GCを持つインタプリタBを実装するとき、Bのオブジェクトを解放するGCはB用のGCでしょうか。 それとも、C用のGCでしょうか。 個人的にはどちらの可能性もありそうだなと思っているんですが、実際の言語処理系ではどうなんだろう。 C++とBoehm GCでSchemeインタプリタを書いたら、GCの事は考えなくても良いのか

    GCあれこれ - higepon blog
  • スタートアップルーチンやらDLLのエントリポイントやら - higepon blog

  • L'eclat des jours(2006-12-17) Binary 2.0 カンファレンス

    _ Binary 2.0 カンファレンス Binary 2.0カンファレンス 2006 発表資料とレポート 一昨日になるが、Binary 2.0 カンファレンスに参加した(ご招待ありがとうございます)。 今回も滅法おもしろかった。僕にとっては、ネタ的/プレゼンインパクト的にはWiiリモコンでPS3をあやつった八重樫剛史さんの『tty hacks for PS3 Linux』と、あるある感が(あるのかよというツッコミはあるだろうけど)楽しかったakrさんの『getcontextの怪』と中村実さんの『マルチコア時代の並列プログラミング:ロックとメモリオーダリング』がベスト3かな。もちろん、「1か0かどちらかを選べと聞かれたら自由と答える」にはぐっと来たけどな。 で、上のはおいおいということで、残りからは題に入る前に時間をわれてなにやら良くわからなかった竹迫良範さんの『Web2.0時代のAj

  • Hello, world!はASCIIで書くべきだ | スラド デベロッパー

    Binary 2.0カンファレンス 2006にて発表された Hello, binary world!(プレゼンPDF)では、GCC拡張でのmainの蹂躙っぷりに感動し、Hello, world!愛好家にはGCC拡張派とELF Golf派があるという新しい知見を 得ることができたが、ELF Golf派ではHello, world!はASCIIで書くべきだという回帰が起きているようだ。 ということで、実際にASCIIでHello, world!が書かれています。 これでこそ、低レベルなところに這いつくばるハッカーですね。

  • OSが起動する以前のスタートアップルーチン(1/4) ― @IT

    急速に進化するAI技術との融合により変わりつつあるスーパーコンピュータの現在地を、大学などの公的機関を中心とした最先端のシステムから探る連載。第1回は、2024年4月に稼働を開始した東京工業大学の「TSUBAME 4.0」を取り上げる。

  • Binary 2.0カンファレンス 2006、総集編 | スラド デベロッパー

    今年の暮れも押し迫る金曜夜に開催された Binary2.0カンファレンス 2006の発表資料とレポートがさっそく公開されているようだ。 Binary Hacksの巧みなマーケティングの一貫に乗せられている感もないわけではないが、 昨年同様に楽しめましたので、中継を見逃した方はレポートで雰囲気でも味わってください。 レポートが妙に充実しているので手短かに感想を書くと、今年のMVPは Hello, binary worldの佐藤祐介氏かなと途中までは思っていたが、今年も八重樫剛史氏のプレゼン手法に全てを持ってかれた感がありました。 Wiiリモコンをスイングして汗をかいている八重樫氏を見て、ハックはスポーツであると思いました(嘘です)。あとは、大トリの野首氏の ASCII 1.0にて、延々と続くBASICによるメディアアートに対する会場の微妙な空気が印象に残りました。

  • DLLエントリポイントいろいろ解決 - higepon blog

  • いやなブログ - Binary 2.0カンファレンス 2006 発表資料とレポート

    Binary 2.0カンファレンス 2006 発表資料とレポート Binary 2.0 カンファレンス 2006 は大盛況のうちに無事終了いたしました。開催にご協力いただいた皆様、スピーカーの皆様、参加していただいた皆様、大変ありがとうございました。当日の発表資料とレポートをこのエントリでまとめます。

  • kmuto’s blog

    View this post on Instagram A post shared by kmuto (@mutokenshi) View this post on Instagram A post shared by kmuto (@mutokenshi) View this post on Instagram A post shared by kmuto (@mutokenshi) View this post on Instagram A post shared by kmuto (@mutokenshi) View this post on Instagram A post shared by kmuto (@mutokenshi) View this post on Instagram A post shared by kmuto (@mutokenshi) View this

    kmuto’s blog
  • DLLエントリポイント - 解決編 - higepon blog

    PE DLLのエントリポイントを呼ぼうといろいろやったのでサマリ。 必要な事は大きく3つ ld に -e オプションでエントリポイントとなる関数(_dllmain推奨)を指定する PE DLLにある EntryPoint を再配置を考慮してずらす ロード時に動的にコードを生成して依存順にcallする 残りtodo 各DLLに dllmain を作る Yumeさんに initlibc の件を相談する http://wiki.monaos.org/pukiwiki.php?%CF%A2%CD%ED%C4%A2#r6b94d78 →id:shotaro_tsuji dlltestを削除する 動的コード生成のドキュメント化

    DLLエントリポイント - 解決編 - higepon blog
  • 革命の日々! Linuxでプロセスの終了を知る方法はあるか?

    ちょっと、おバカなタイトルで攻めてみる。 親プロセス以外が、プロセスの終了を通知してもらう方法はあるのか? という話。 最初に聞いたとき、脊髄反射的に、いろいろあるよーーー。と思った do_exit()を追うだけでも、 profile_task_exit() profile_handoff_task() proc_exit_connector() security_task_free() このぐらい見つかる。 んが、どいつもこいつも、task_struct終了時通知なので、スレッドが死ぬ度に通知が飛びやがるのである。 しかもexit処理はいくつも同時に走りうるので、通知関数で thread_group_empty()やら tsk->signal->live==1 やらでチェックするのもウマくない (チェックしている最中にどんどん状態が変わるから) さて、どうしたものか P.S ところで、n

  • Binary 2.0カンファレンス2006 - bkブログ

    Binary 2.0カンファレンス2006 Binary 2.0 カンファレンス2006 を 2006年12月15日に開催します。 当日はビデオストリーミングによるライブ中継を行う予定です。 主催 - Binary 2.0 カンファレンス実行委員会 (協力 Shibuya.pm)日時 - 2006年12月15日 (金) 18:30-21:00 (18:00 開場)会場 - 神保町三井ビル 17F 株式会社インターネットイニシアティブ (IIJ) 大会議室参加費 - 無料事前登録 - 定員100名 ((定員に達したので締め切りました)ライブ中継: i-revo, Loocプログラム 内容・順番・時間などは予告なく変更する場合があります。昨年の概要 無事に終了しました。当日の模様は発表資料とレポートをどうぞ。 ブログラム概要Inside Binary Hacks - 高林哲Hello, bin

  • はてなブログ | 無料ブログを作成しよう

    賃貸暮らしのわが家の地震対策【揺れから命を守る編】 以前のブログでも記載した、防災の優先順位に基づいて対策を進めています。まだ手をつけられていない部分もありますが、ある程度まとまってきたのでざっくりとご紹介していきます。 優先順位別に改善していっているため、今回は主に地震の揺れ対策がメインになります。…

    はてなブログ | 無料ブログを作成しよう
  • DLLエントリポイント - 実験5 - higepon blog

  • DLLエントリポイント - 実験4 - higepon blog

    またまた実験 00000000 55 push ebp 00000001 89E5 mov ebp,esp 00000003 B878563412 mov eax,0x12345678 00000008 FFD0 call eax 0000000A C9 leave 0000000B C3 retということはきっとこんなことが出来るはず void hello() { printf("hello\n"); } int main(int argc, char *argv[]) { unsigned char code[] = {0x55, 0x89, 0xE5, 0xB8, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xD0, 0xC9, 0xC3}; *(unsigned int*)(&code[4]) = (unsigned int)hello; void (*call_

    DLLエントリポイント - 実験4 - higepon blog