2. いいわけ 1 • なぜかよくわからないけど好評だったらしい • でも – いみわかんねwww – 後半が意味不明 – つーかそれ目grep言わないでしょ • というツッコミが… • 頭おかしいというのがうけたらしい? – 全然おかしくないよ! • が、人によっては「ためになる資料です!!」というコ メントもあったり 2 / 83

Linux の共有ライブラリを作るとき PIC でコンパイルするのはなぜか 通常、Linux の共有ライブラリを作るときは各 .c ファイルを PIC (Position Independent Code) となるようコンパイルします。しかし、実は PIC でコンパイルしなくても共有ライブラリは作れます。それでは PIC にする意味はあるのでしょうか。 さっそく実験してみます。 int func () { printf(""); printf(""); printf(""); } PIC でコンパイルするには gcc に -fpic または -fPIC を渡します。-fpic の方が小さく高速なコードを生成する可能性がありますが、プロセッサによっては -fpic で生成できる GOT (Global Offset Table) のサイズに制限があります。一方、-fPIC はどのプロセッサで
mysqlでは、char、varcharカラムに対して検索条件(where)やソート(order by)時に大文字小文字を区別してくれません。 区別させる場合にはテーブル作成時に binary属性を設定する必要があります。 (通常はこの方法での対応をお勧めします) create table binary_column varcolum varchar(10) binary primary key, charcolum char(10) binary ); こんな感じでしょうか。 既に作成済みのテーブルに対してbinary属性を設定することも可能です。 alter table binary_column modify charcolum char(10) binary; primary key属性が設定されているカラムに対してはこれでいいのですが、既にprimary key属性が設定されてい
Perlといえばテキスト処理や正規表現が得意で、バイナリを扱うような話についてはあまり聞かない印象があります。Perlが持つ関数pack/unpack等でもバイナリ処理は可能ですが、今回はData::ParseBinaryを使ってバイナリファイルを気軽に解析してみましょう。 基本 ファイルからストリームを作る 解析したいファイルをData::ParseBinaryで扱えるストリームに変換します。 use Data::ParseBinary; my $stream = CreateStreamReader(File => $file_handle); 解析したい構造を定義する Struct関数で解析したい構造を定義します。Struct以下には基本データ型やコンテナ型、ビット/バイトパディング型、制御構文型等を使用できます。各型に指定したラベルが解析結果として得られるハッシュのキーとなります。
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(
ActivePerl (Windows版) には Win32::API - Perl Win32 API Import Facility - metacpan.org が付属しているので、今日からすぐに Win32::API を利用したプログラミングが出来ます。 簡単なメッセージボックスを表示するPerlプログラムは以下になります。 #!/usr/bin/perl use Win32::API; my $MessageBox = Win32::API->new("user32", "MessageBoxA", "NPPN", "N"); $MessageBox->Call(0, "Hello, World!\n", "Message", 0); このプログラム実行すると、「Hello, World!」と書かれたWindowsメッセージボックスが表示されます。 これを Win32::API
Perlでアセンブリプログラミングしているとき、実行マシンのCPUを判別してプログラムの処理を分岐したいときがでてくると思います。 そういうときに困ってしまわないように Acme::x86::CPUID を作ってみました。 package Acme::x86::CPUID; use DynaLoader; sub ProcessorBrandString { my $cpu = "\0" x 48; my $x86 = "" . "S\xbf" . pack("P", $cpu) . "\xb8\x02\x00\x00\x80" . ("P\x0f\xa2\x89\x07\x89_\x04\x89O\x08\x89W\x0c\x8d\x7f\x10X\x8d\@\x01" x 3) . "[\xc3" ; DynaLoader::dl_install_xsub("X",unpack"L",
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く