2009-03-01から1ヶ月間の記事一覧

tar xz

特に「j」とか「z」とか付けなくても「tar xz」で適当に形式を判別して解凍してくれた。知らなかったなー。

ベガーズ・イン・スペイン

ベガーズ・イン・スペイン (ハヤカワ文庫SF)作者: ナンシークレス,Nancy Kress,金子司出版社/メーカー: 早川書房発売日: 2009/03/31メディア: 文庫購入: 4人 クリック: 29回この商品を含むブログ (41件) を見る結構面白い。 プロバリティシリーズも読もうか…

s61s+LD190G+Majestouch Wireless+MICRO GRAST≒デスクトップ

x61sとLD190GとMajestouch WirelessとMICRO GRASTでデスクトップ環境を作成。フツーのデスクトップ環境より配線が少なくてなかなか良い。モニタは電源もUSBなら完璧なのになー。

gcc:末尾再帰の最適化…はされないなぁ…

ASM

ずいぶん前に話題にはなっていたようだけど。 #include <stdio.h> static int sum(int n) { if (n == 1) { return 1; } else { return n + sum(n - 1); } } int main() { printf("%d\n", sum(100)); return 0; } .file "foo.c" .text .p2align 4,,15 .def _sum; .scl </stdio.h>…

vc:末尾再帰の最適化はされたけど

ASM

※末尾再帰の理解が間違っているので参照しないでください(2015/08/07 12:17)一応。 #include <stdio.h> static int sum(int n, int r) { if (n == 1) return r; return sum(n - 1, r + n); } int main() { printf("%d\n", sum(5, 0)); return 0; } ; Listing generat</stdio.h>…

gcc:gccでも最適化はされた?…された!

ASM

下と同じソース。callは無くなったけど、_sumまではジャンプして、結局スタックを積んでるような。 「-O3」にしたら最適化された。 .file "foo.c" .text .p2align 4,,15 .def _sum; .scl 3; .type 32; .endef _sum: pushl %ebp movl %eax, %ecx movl %esp, %…

日時リテラル

なんで「a = 9999-99-99 99:99:99」みたいな日時リテラルって見かけないんだろう? 数値とかと見分けつかないからかなぁ?

局所変数・関数呼び出し

ASM

int add(int a, int b) { int c; c = a + b; return c; } int main() { int n; n = add(1, 2); return n; } ; Listing generated by Microsoft (R) Optimizing Compiler Version 15.00.30729.01 TITLE C:\Program Files\Microsoft Visual Studio 9.0\VC\foo.…

link:Microsoft Macro Assembler リファレンス

ASM

http://msdn.microsoft.com/ja-jp/library/afzk3475.aspx とりあえずメモだけ。

胎界主 有料版

http://www.taikaisyu.com/hitorigoto/29dl/index.html 出たら買おっと。

簡単な出力

ASM

VCとgccでアセンブラを出力してみる。 int i; int j = 100; int k = 0; int main() { i = 1; j = 2; k = i + j; return 0; } GCC .file "foo.c" .globl _j .data .align 4 _j: .long 100 .globl _k .bss .align 4 _k: .space 4 .def ___main; .scl 2; .type …

-fverbose-asm

ASM

fverbose-asmでもう少し詳しくなった。 .file "foo.c" # GNU C version 3.4.4 (cygming special, gdc 0.12, using dmd 0.125) (i686-pc-cygwin) # compiled by GNU C version 3.4.4 (cygming special, gdc 0.12, using dmd 0.125). # GGC heuristics: --para…

バッチで切り替えることにした

そろそろ1.9.1も考慮しないと…ということで、当面、バッチでの切り替えで過ごすことにした。 @echo off if exist C:\usr\local\ruby-1.8.orig ( move C:\usr\local\ruby-1.8 C:\usr\local\Ruby-1.9.1 > NUL move C:\usr\local\ruby-1.8.orig C:\usr\local\ru…

Windows-31JとShift_JIS

http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-dev/35774 Windows-31JとShift_JISのどちらを使うべきか迷ったので、すこし調べてみる。 エイリアスじゃなくて複製なのは、将来的な拡張を見越してかなぁ?それともRuby内部でも実際に違うのかしら…

link:多言語化

http://doc.loveruby.net/refm/api/view/spec/m17n メモメモ。

www

http://www.fmp.jp/~guu/fmp.html

AquesTalk/Rubyの修正

https://twitter.com/hajimepg/status/1316278995 こーゆーつぶやきがあったので、帰ったら修正します。 #include <windows.h> #include "ruby.h" static VALUE ruby_path(VALUE self) { HMODULE hModule; char path[_MAX_PATH]; char short_path[_MAX_PATH]; hModule =</windows.h>…

Dependency Walker

http://www.dependencywalker.com/ メモ。

libmspackでキャビネットファイルを解凍する

extractでディレクトリの展開はしてくれない、と。 #include <stdio.h> #include <stdlib.h> #include <libgen.h> #include <mspack.h> static int open_cabinet_set(struct mscab_decompressor *cabd, struct mscabd_cabinet *cab) { struct mscabd_cabinet *c, *c2; for (c = cab; c && (c->flags </mspack.h></libgen.h></stdlib.h></stdio.h>…

mkdir_p()

pオプション的動作のmkdir()。そーゆー動作の関数ってなかったっけなー? #include <string.h> #include <sys/types.h> #include <sys/stat.h> #include <errno.h> #ifdef _WIN32 #include <direct.h> #include <malloc.h> #define mkdir(p, m) _mkdir(p) typedef int mode_t; #else #include <unistd.h> #include <alloca.h> #endif #define IS_SE</alloca.h></unistd.h></malloc.h></direct.h></errno.h></sys/stat.h></sys/types.h></string.h>…

ruby.exeのパスを取得する

#include <windows.h> #include "ruby.h" static VALUE ruby_path(VALUE self) { HMODULE hModule; char path[_MAX_PATH]; hModule = GetModuleHandleA(NULL); GetModuleFileNameA(hModule, path, _MAX_PATH); return rb_str_new2(path); } __declspec(dllexport) void </windows.h>…

AquesTalk/Ruby: おおむね完成

http://storehouse.sakura.ne.jp/viewvc/viewvc.cgi/aqtk-ruby/?root=svn http://aqtk.rubyforge.org/ ※リリース済み 要AquesTalk。以下の文章なら一発で読み上げられるようになった。 require 'aqtk' AquesTalk::Da.play_sync(<

AquesTalk/Ruby 0.1.0

http://aqtk.rubyforge.org/ リリースしました。

AquesTalk/Ruby(作りかけ)

http://storehouse.sakura.ne.jp/viewvc/viewvc.cgi/aqtk-ruby/?root=svn だいたい出来てきた。特徴としては… KAKASIを組み込んであるので(ある程度)漢字が読める 辞書をリソースとして取り込んでいるので、一応、辞書いらず やること。 英語をなんとかする …

一時ファイルを作ってファイル閉じたらすぐ削除

#include <windows.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <sys/types.h> #include <sys/stat.h> #include <io.h> #include <fcntl.h> #include <share.h> char *make_tempfile(void *data, int len) { char *filnam; int fd; char tmpdirnam[_MAX_PATH]; char tmpfilnam[_MAX_PATH]; in…</share.h></fcntl.h></io.h></sys/stat.h></sys/types.h></string.h></stdlib.h></stdio.h></windows.h>

拡張ライブラリにリソースを埋め込む

#include <windows.h> #include "resource.h" #include "ruby.h" static HINSTANCE hDll; static VALUE get_rc(VALUE self) { VALUE str; HRSRC hRc; HGLOBAL hGm; LPVOID p; long size; hRc = FindResourceA(hDll, MAKEINTRESOURCEA(IDR_TEXT1), "TEXT"); if (hRc == N</windows.h>…

KAKASIを使う

エラー時の戻り値は空文字列かな。 #include <stdio.h> #include <stdlib.h> #include <errno.h> #include "libkakasi.h" int main() { char *argv[] = { "kakasi", "-isjis", "-JH", "-HK" }; char *p; if (kakasi_getopt_argv(4, argv) != 0) { perror("kakasi_getopt_argv()"); exit(1</errno.h></stdlib.h></stdio.h>…

一時ファイルを作ってファイル閉じたらすぐ削除 その2

fcloseを使ってみる。 #include <windows.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <sys/types.h> #include <sys/stat.h> #include <io.h> #include <fcntl.h> #include <share.h> char *make_tempfile(void *data, int len) { char *filnam; int fd; char tmpdirnam[_MAX_PATH]; char tmpfilnam[…</share.h></fcntl.h></io.h></sys/stat.h></sys/types.h></string.h></stdlib.h></stdio.h></windows.h>

文字列リソースを使う

#include <windows.h> #include "resource.h" #include <stdio.h> int main() { char buf[BUFSIZ]; LoadStringA(NULL, IDS_STRING101, buf, BUFSIZ); puts(buf); return 0; } テスト 続行するには何かキーを押してください . . .</stdio.h></windows.h>

リソースに埋め込んだファイルを読み込む

#include <windows.h> #include "resource.h" #include <stdio.h> int main() { HRSRC hrc; HGLOBAL hgb; LPVOID p; hrc = FindResourceA(NULL, MAKEINTRESOURCEA(IDR_TEXT1), "TEXT"); printf("%d\n", SizeofResource(NULL, hrc)); hgb = LoadResource(NULL, hrc); p = LockReso</stdio.h></windows.h>…