トップ «前の日記(2012-04-20) 最新 次の日記(2012-04-24)» 編集

はじめてのにき

ここの位置付け

2004|11|
2005|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|06|07|08|09|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|05|06|07|08|09|10|11|12|
2016|01|02|03|04|05|06|07|08|09|10|11|12|
2017|01|02|03|04|05|06|07|08|09|10|11|12|
2018|01|02|03|04|05|06|07|08|09|10|11|12|
2019|01|02|03|04|05|06|07|08|09|10|11|12|
2020|01|02|03|04|05|06|07|08|09|10|11|12|
2021|01|02|03|04|05|06|07|08|09|10|11|12|
2022|01|02|03|04|05|06|07|08|09|10|11|12|
2023|01|02|03|04|05|06|07|08|09|10|11|12|
2024|01|02|03|04|05|06|07|08|09|10|11|

ToDo:


2012-04-22

_ nacl-mounts

使い方かわったようだ。

これだろうなー

http://code.google.com/p/chromium/issues/detail?id=123876

http://code.google.com/p/naclports/source/detail?r=574

よくわからんけど nmf を inject 用の IRT 入れてもらうように作りなおせばいいのかな…

うーんよくわからんが newlib じゃ動かないとかな気がしないでもないなこれ…

よくわからんので古いやつを使うことに

(06:13)

_ メモ

xor の対象があからさまにおかしいように見える

    e20:       8b 05 08 00 04 10       mov    0x10040008,%eax
    e26:       01 d0                   add    %edx,%eax
    e28:       ba 00 00 00 00          mov    $0x0,%edx
    e2d:       11 ca                   adc    %ecx,%edx
    e2f:       8b 08                   mov    (%eax),%ecx
    e31:       83 c0 04                add    $0x4,%eax
    e34:       89 8d 00 ff ff ff       mov    %ecx,-0x100(%ebp)
    e3a:       90                      nop
    e3b:       90                      nop
    e3c:       90                      nop
    e3d:       90                      nop
    e3e:       90                      nop
    e3f:       90                      nop
    e40:       89 95 04 ff ff ff       mov    %edx,-0xfc(%ebp)
    e46:       8b 08                   mov    (%eax),%ecx
    e48:       b8 ff ff ff ff          mov    $0xffffffff,%eax
    e4d:       ba ff ff ff ff          mov    $0xffffffff,%edx
    e52:       31 c1                   xor    %eax,%ecx
    e54:       31 d1                   xor    %edx,%ecx
    e56:       8b 05 d8 c6 05 10       mov    0x1005c6d8,%eax
    e5c:       90                      nop
    e5d:       90                      nop

(06:13)

_ うごいた

long long おかしいメモ

3LL<<-1 とかの、負の値の long long shift がおかしい、というか GCC と一致してない。

long long __ashldi3(long long a, int b)
{
    b &= 63;
#ifdef __TINYC__

とかで対処できる。

long long の ~ というか xor でおかしなことが起きていた。 どうも xor だけじゃなくてレジスタが足りなくなって、 long long もう二個目のレジスタを確保する時に一個目のレジスタがメモリに飛ぶ。 定数が入ってるヤツが vstack に積まれてると起きるのかな…謎。

               /* allocate second register */
               r2 = get_reg(rc2);
               printf("%s r=%d r2=%d\n", r==r2?"oops":"OK",vtop[-1].r,r2);

として oops は出ちゃいかん気がする。

しゃーないので、 __xordi3 とかを

long long __xordi3(long long u, long long v)
{
    DWunion uu, vv, ww;

    uu.ll = u;
    vv.ll = v;
    ww.s.high = uu.s.high ^ vv.s.high;
    ww.s.low = uu.s.low ^ vv.s.low;

    return ww.ll;
}

という感じで定義してやってそれを呼ぶことにした。 つーか TCC の long long は x64 以外で動いてるのが不思議すぎるし、 git blame しても誰も全くいじってないあたりから、たぶん fabrice 以外誰も理解してない気がする。 かっこつけず全部関数で定義すればいいのに…

あとは僕サイドの問題だけど、 libtcc1.a を読んだ時のシンボル解決がおかしい、というかシンボルが全く解決されてない。 そしてよくわからない。 しゃーないので tcc から libtcc1.a をリンクしてやって、 __divdi3 とかそのへんを全部 i686-nacl-tccsyms.tab につっこんでやるという荒技で解決。

(08:06)

お名前:
E-mail:
コメント:
人生、宇宙、すべての答え
本日のリンク元

2012年
4月
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
1.shinh(2012-04-29 17:30) 2.通りすがり(2012-04-29 11:54) 3.Rui(2012-04-10 03:10)
search / home / index

全てリンクフリーです。 コード片は自由に使用していただいて構いません。 その他のものはGPL扱いであればあらゆる使用に関して文句は言いません。 なにかあれば下記メールアドレスへ。

shinichiro.hamaji _at_ gmail.com / shinichiro.h