2013-08-01から1ヶ月間の記事一覧

アセンブラ談義

汎用コンテナの所まで後ずさりしてLLVMをやってる。Blackfinを改造してこんなコードを吐かせた。 .file "t2.bc" .text .globl _main .align 4 .type _main,@function _main: // @main // BB#0: sp += -24; LIMMimm7p(p0,0); //(゚Д゚)ハァ? LIMMimm7p(p1,-3); //…

バグ、大体特定できた

行き詰まったら寝かせるのがヨロシ。 液晶の前でウンウン唸ってても時間の浪費ですからね。というわけで、OSECPUで詰まってた所、大体解決しました。 jitCompA0001_movReg32EbpDisp(w, 0 /* EAX */, 256 + pxx * 32);こういうコード、256 + pxx * 16にしなき…

つらぽよ

ポインタ、結局128ビットで落ち着く事になったんだけど、128ビット化のパッチ当てたらバグった・・・ OSECPUがJITコンパイルする関係で、バグの特定が結構難しいんだよなぁ。どうしよ。

ポインタの扱いその2

256ビットの何が嫌かって、コピーする時に32バイトをバンバンコピーするのがなぁ。 OSECPUはメモリアクセス系命令が貧弱だから、スタックアクセスの時にヤバイ事になる気がする。・・・う〜ん、ここはLMEMiとかを作るかなぁ。そっち方面で拡張しようかしらん…

ポインタの扱い

大学の試験勉強と並行してやっているので、あまり進んでないけど、ポインタの扱いを改良している。今考えているポインタの実装法は大まかに分けて3種類あって、各実装法におけるポインタサイズは、以下のとおり・32ビット ・64ビット ・256ビット(OSECPU共…

MIDUHA

OSECPU派生プロジェクト、MIDUHA(MIDUHA-VM)と呼ぶ事にする。

OSECPUコードリーディング

自分用メモ。P3Fは、たぶん割り当てられた256ビット領域を全く使ってない。

OSECPU派生プロジェクト始動?

今LLVMからOSECPUバイナリを吐こうとしているのですが、現在のOSECPUの仕様ではどうも都合が悪いのです。 最初はOSECPUにパッチを当てる事で実現させようかと思っていたのですが、OSECPUの改変箇所がかなり多いので、 いっその事OSECPUとはプロジェクトを分…

スタック二本

前に同じサイズのスタックを二本用意する、ってアイディアを書いたけど、これはOSECPUのセキュリティの考え方からすると アウトなのでボツにする。スタックを二本用意するなら、ポインタ専用とデータ専用をそれぞれ用意すべき。 ただ、これをLLVMで実装…

OSECPU funcf6を読む

自分用メモ。 jitCompA000_dataWidth(jitCompA000_convTyp(r->ireg[typ]))mallocのreg0にT_VPTRを指定したら、256が取れる。 widthはこれを8で割った物、つまりバイトですな。T_VPTRは32バイトですよっと。その後は返すポインタレジスタの設定。i1は32バイト…

OSECPUにおける既存リソースの活用は可能か?

たぶん難しいと思うんだよね。 だって、ほら、ポインタとデータをごちゃ混ぜにしたコードをどうやって移植すんのら、と。LLVMがOSECPUアーキテクチャーに対応したとして、ライブラリ等は書き直した方が早いよなー。

スタックを二本用意する

簡単そうに見えるけど、意外と難しい。妥協すればたぶん何とかなる。普通、データもポインタもごちゃ混ぜにしてスタックを確保するんだけど、その時のスタックサイズと同じ大きさのスタックを二つ用意する。 取り出す値によって、スタックレジスタを切り替え…

某キャンプの感想記事

前に書いたエントリ、短いのは良いけど、凄くバカっぽい文章だし、マトモな事何も書いてないから、 もうちょっと真面目に書いた方が良いのかなぁ、なんて思ったのです。だって、他の参加者やチューターさん、 みんな真面目に書いてるんだもん。 ・・・だけど…

Blackfin大好き!

Blackfinというアーキテクチャがありましてですね。 .file "t2.bc" .text .globl _main .align 4 .type _main,@function _main: // @main // BB#0: sp += -32; r0 = 0 (x); [sp + 28] = r0; r0 = 3 (x); [sp + 24] = r0; r0 = 5 (x); [sp + 20] = r0; r1 = […

data register & pointer register

データレジスタとポインタレジスタが完全分離されているアーキテクチャのLLVMバックエンド実装に 困っていたんだけど、調べてみたら実装例が出てきたから上手く行きそう。

LLVMバックエンドがわからん

僕みたいなバカにも分かるチュートリアル、ないんでしょーか? 既存のコード読んでもワケワカメなんですよね。お陰で某キャンプ中の成果がゼロという。激おこですよ。 ・・・・2年間もブログを書いてなかったら、文体がかなり変わったなぁ。 まあ、以前みた…

Wikiをどう手なずけるか、ということ

OSECPUのWikiの中から目当ての情報を引き出すのに苦労している。 ページタイトルがpage**だから、タイトルからページを推測できない。検索掛けると、連番でついたタイトルがずらずら出てきて、「Oh...」となってしまうのですよ。 これは目次から辿るのがいい…

セキュリティ・キャンプ2013

川合さんのOSゼミのチューターとして参加しました。 このブログ見ている人には細かい事書かなくても伝わると思うので、というよりそこら辺の関係者をターゲットに書いている節が あるので、細かい話は適当に割愛します。よーするに、部外者お断りって事。 の…

ブログ再開したみたいっすよ

世に不思議は多けれど どれほど奇天烈、奇奇怪怪な出来事も、 人がいなければ、人が見なければ、人がかかわらなければ、 ただの現象 う〜ん、人生、何がどうなってああなってこうなるか分からんもんですな。 まさか昔ネタで作ったブログを再開する事になると…