ToDo:
使い方かわったようだ。
これだろうなー
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)
前 | 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 |
全てリンクフリーです。 コード片は自由に使用していただいて構いません。 その他のものはGPL扱いであればあらゆる使用に関して文句は言いません。 なにかあれば下記メールアドレスへ。