■
とりあえず、こんなところに80人もくるものだなー。と。
エロゲとブログと
大変どうでもよろしいが、世の中における行動力とかそういうのには、多分、二種類あって、
- ポジティブな気分をベースとする行動力
- ネガティブな気分をベースとする行動力
多分、僕はおもいっきり後者なんだと思う。
んで、まあ、なんだ。エロゲとかやってると、ネガティブな気分が適度に無くなってしまってよくないよなー、とか、そういう考えが。
あと、同じことはブログにも言えて、ネタの小出しによって失われるネガティブ気分の被害は結構大きいのではないのかと、じゃあ、こんな文章書くのやめろよ。
あー、そう、だから、キモいパワーを想像力へと変換することこそがオタとして素晴らしく生きていくために必要な作業であって。そのためには、キモいパワーを溜める必要があって、そんで、それを溜めるために、エロゲで発散とかブログで小出しにしたらよくない。
漫画はいいのか?問題無いように感じるのだけど、漫画は30分くらいで終わるので、発散量が少ないからだろう。多分。
大往生
今日も2-3まで。これは調子いいんでは?4億いけないけど。3.5億。まあ、昔の勘はとりもどした?いや、昔はなかなか2-3までいけなかったんだよなー。
技術文書とキモい文書
あー、そう、キャラが喋ったり対話したりしながら進んでいくような感じの技術文書の問題点は、何よりも、わかりにくいことだよなー。
やろうとしてることは素晴らしいとは思うのだけど、どっちにしても中途半端なので、技術文書としても駄目だし、キモい文書としても、よろしくないし。
つまり、混ぜるな危険という話で、そう考えれば普通の話か。
とりあえず、なんか、ぱっと思い付いたところ
http://www.kab-studio.biz/Programing/PragmaTwice/index.html
http://www6.airnet.ne.jp/manyo/xml/index.html
こういうのは、大体書いてる人が飽きてやめるのが通例だと思うのだけど、pragma twiceのほうはヤバいぜ!!C,STL,MFC,W32API,浮動小数点からトランジスタまで!
あと、この人がid:AjaxErogeの人だと今知った!この人には一生勝てない!!
■
どうも、えいだです!!VBプログラマに見下されるらしいです!!
参考: http://sevendegrees.blogspot.com/2006/08/blog-post_04.html
文書がわかりにくくなろうとならなかろうと、そういった、まあ、アレのナニであるよーつまり、世間の意見に惑わされてるようでは一流じゃねーとかそういった感じー。
あと、約170歳は約190歳の間違いであったので、お詫びして訂正しまる。
昨日のあらすじは、「Adaを勉強する前にPPCとMach-Oを勉強する必要があるですよ」っていう話。
というわけで、今日のえいだはMach-Oについて調べるのですもはやAda関係ぬー!!あだーー!!OSX界の西田亙に俺はなる!それは無理ですー!!
とみせかけて、調べなくても全部書いてあるのだったー!!あとは各自読むるとよいです。
http://developer.apple.com/documentation/DeveloperTools/Conceptual/MachOTopics/Articles/dynamic_code.html
#include <stdio.h> int main() { puts("a"); }
まず、こんなコードがあるとしまして、(とぅーどぅー:こういうのをAdaでさらっと書けるように)これをふとぅーにコンパイルすると
/Users/Ada/test/gcc$ gcc-4.1 main.c -O2 -S /Users/Ada/test/gcc$ cat main.s .machine ppc .cstring .align 2 LC0: .ascii "a?0" .text .align 2 .globl _main _main: mflr r0 bcl 20,31,"L00000000001$pb" "L00000000001$pb": stw r31,-4(r1) mflr r31 mtlr r0 addis r3,r31,ha16(LC0-"L00000000001$pb") lwz r31,-4(r1) la r3,lo16(LC0-"L00000000001$pb")(r3) b L_puts$stub .section __TEXT,__picsymbolstub1,symbol_stubs,pure_instructions,32 .align 5 L_puts$stub: .indirect_symbol _puts mflr r0 bcl 20,31,"L00000000001$spb" "L00000000001$spb": mflr r11 addis r11,r11,ha16(L_puts$lazy_ptr-"L00000000001$spb") mtlr r0 lwzu r12,lo16(L_puts$lazy_ptr-"L00000000001$spb")(r11) mtctr r12 bctr .lazy_symbol_pointer L_puts$lazy_ptr: .indirect_symbol _puts .long dyld_stub_binding_helper .subsections_via_symbols
あっというまにこんなコードになります!すごい!全然読めぬ!嘘です。ちょっとだけ読めるようになりました。mflr と mtlr がリンクレジスタごにょごにょだってわかればよゆーです。
まず、これはややこすぅいーです!ダイナミックリンクしたコードを呼ぶように、Indirect function callしてるのと、自身のコードをPIC(Positioin Independent Code)にするためのコードが混ざってるからです!!
まず、基本的な知識として、
- 共有ライブラリは、PICにして、呼ぶときは、Indirect function callするとよろしい
- PICにしたりIndirect function callしたりするのはコストがかかるので、ただのアプリケーションプログラムはそういうことしないほうがよい
というのがあるまする。これらについては、ELFのPLTとか、GOTとか、PEのidataとか、そういうあたりを調べれば出てくると思わるる。ので、各自調べて。
さて、ここで、驚くべき事実が明らかに!!OSXのgccはふとぅーに使うと、PICのコードを生成するんです!!なぜだぁーーー!
よーするに、無駄があるんです!無駄がーー!PICにしなくてよいです!なんか話がずれてきたーーー!
PICにしないほうほうは-mdynamic-no-picとかそんなの。
/Users/Ada/test/gcc$ gcc-4.1 main.c -O2 -S -mdynamic-no-pic /Users/Ada/test/gcc$ cat main.s .machine ppc .cstring .align 2 LC0: .ascii "a?0" .text .align 2 .globl _main _main: lis r3,ha16(LC0) la r3,lo16(LC0)(r3) b L_puts$stub .section __TEXT,__symbol_stub1,symbol_stubs,pure_instructions,16 .align 4 L_puts$stub: .indirect_symbol _puts lis r11,ha16(L_puts$lazy_ptr) lwzu r12,lo16(L_puts$lazy_ptr)(r11) mtctr r12 bctr .lazy_symbol_pointer L_puts$lazy_ptr: .indirect_symbol _puts .long dyld_stub_binding_helper .subsections_via_symbols
だいぶすっきりな感じでございまー。
おるるー昨日問題になってたpure_instructionsとかは
http://developer.apple.com/documentation/DeveloperTools/Conceptual/MachORuntime/index.html
ここを読めばわかるかもー。ただのセクションのフラグだー。(説明を省きすぎだー)S_ATTR_PURE_INSTRUCTIONSとかいうの。
さてさて、話がずれまくったので戻しますよ。
まず、共有ライブラリ…と思ったけど、なんか面倒になったのでいいやー。大体わかったし。
まとめ:
アプリケーションをコンパイルするときは -mdynamic-no-pic を付けましょう
参考: http://www.unsanity.org/archives/000044.php
明日はPPC…といきたいところだけど、諸事情で無理なのでAdaやるぜーAdaー
■
普通に調べものになってしまった。