マイペースなプログラミング日記

DTMやプログラミングにお熱なd-kamiがマイペースに書くブログ

2009-01-01から1年間の記事一覧

ミスってた

アクセス権がおかしかったことに今気づく。アクセス権を直したら、うまくいった。なんてこった

一般保護例外

qemuでエラー発生。それは一般保護例外だった。原因はfar callにあるっぽい。下のソースのg_GDTManager->setGDTの引数は、インデックス、ベース、リミット、アクセス権の順となっている。g_GDTManager->loadGDTR()はLGDTを呼び出しているだけ。IO::farCallの…

シンボルテーブルの解析成功

シンボルテーブルの解析に成功したようだ。シンボルテーブルの名前インデックスは2つめの文字列テーブルのインデックスっぽい。1つめの文字列テーブルはプログラム中で使われる文字列が格納されてるようだ。実行時にこれをGDTのオフセットとして登録してお…

勘違い

インデックスの意味を勘違いしていた。文字列の配列のインデックスかと思ったら、何文字目かを表すインデックスっぽいな。なんてこった

シンボルテーブルの解析

現在、シンボルテーブルの解析中。それで問題が発生。それはnameの値が文字列テーブルよりでかいこと。エントリが進むにつれて値が大きくなってるので、前のエントリとの差分かと思ったが、objdumpやreadelfとの結果が違う。Googleで検索してみても、文字列…

Marathon Match 54 Result

1年ぶりに参加したMathon Matchの結果がでた。104位でRatingが1381->1357と下がった。ベストスコア、ゼロスコア共に0。次こそはRatingを上げたい。

セクションヘッダテーブル

ELFのセクションはtypeとoffsetはそのまま取得できるからいいとして、名前を取り出すのがめんどくさそう。セクションヘッダテーブルの文字列テーブルから文字列のリストを作ってから、indexでアクセスか。文字列の長さと個数がわからないので、なんかやっか…

セクションの情報発見

セクションの情報を発見した .text 機械語に翻訳されたコード .rodata プログラムで使用する文字列定数 .comment コメント .shstrtab セクション名の文字列のテーブル。セクションヘッダで使用 .symtab シンボルテーブル .strtab 関数名などプログラムで使用…

readelf

最近全然自作OSが全然進んでないな。まぁ、そんなときを乗り越えないとこの先やってけないな。とりあえず、現在readelfコマンドでELF形式のファイルの解析中。ヘッダの種類が3種類あるというのがめんどくさい。1つでいいじゃんと思うけど、まぁ、頑張って…

フォローしているけど、フォローされてない人を探してみる その2

前回のやつの改良型。フォローの数が100を越えても大丈夫になった。取得したユーザー数が100未満でループ脱出だと、ブロックしてるユーザーがいる場合(それも消えてない場合)にループを抜けてしまうっぽいので、取得したユーザー数が0になったときにループを…

フォローしているけど、フォローされてない人を探してみる

twitterでフォローしているけど、フォローされていない人を探すスクリプトを作った。ただしフォローしている、もしくはされているのどちらかが100を越えている場合は使えない。改良しなければ!またfriendsとfollowersを入れ替えれば逆もできる。 require 'n…

Apache Wicket 1.4-rc6 is released!

一体どこまでRCの数字が伸びるのか?またいつ正式版がでるのか? http://wicket.apache.org/

デスクトップにTwitterのTLを表示させてみる

C#

TwitterのTLをデスクトップに表示させてみた。結構邪魔なので使えなさそう。折り返しを入れれば使えるのだろうか? TwitterのTL取得部分 String userName = "hoge"; String password = "hogehoge"; //HttpWebRequestの作成 HttpWebRequest webreq = (HttpWeb…

デスクトップに文字列を描画する

C#

デスクトップの右上に文字列を描画するプログラムを作った。 using System; using System.Drawing; using System.Runtime.InteropServices; namespace Desktop{ class Desktop [DllImport("user32.dll")] private static extern IntPtr GetDC(IntPtr hwnd); …

メソッドの追加? その2

前回のメソッドの追加?では追加したメソッドから追加された側のフィールドやメソッドにアクセスできなかった。しかし、これもリフレクションを使えばできるのでは?と思い、やってみた。追加するメソッドにはObject型の引数parentが渡される。これは追加さ…

メソッドの追加?

「java リフレクション メソッドの追加」で検索して、このブログにたどり着いた人がいるみたいだけど、既存のクラスのオブジェクトに動的にメソッドを追加したいのだろうか?それなら無理だと思うが、自分で作ったクラスなら可能かな?とりあえずやってみよ…

Marathon Match 54 現在60位

なんとか頑張ってスコアを82.71まで上げて現在60位となっている。ここからスコアを上げるのが大変になるんだろう。スコアは85までは上げたいところ。あと、システムテストで順位を落としがちなので、システムテストに強いプログラムを作らなければいけないな

Marathon Match 54

Marathon Match 54に参加してるけど、今回は酷いことになりそうだ。パズル問題だけど、全然点数伸ばせる気がしない。とりあえず、blueに踏みとどまれるように頑張りたい。あと、気づけば最後の参加から1年も経ってるんだな。怠けないように、これから参加を…

リフレクションでメソッドを呼び出してみる

第127回 Ruby vs Java ダックタイピングとインタフェースで見る多態性を読んで、なんとなくリフレクションを使ってみたくなったので、リフレクションを使ったJavaのコードを書いた。C++のtemplateを使った人がいたので、俺はリフレクションを使うんだー!と…

ファイル読み込みが原因じゃなかった

ファイルの内容を表示させようとしたら、TextVRAMの境界(?)を越えてしまったことが原因らしい。ファイルの内容を表示させないようにしたらうまくいった

エラー

ファイル読み込み時にエラーが発生。sizeが512以下になったときに、エラーがでるっぽい。1回の読み込みで512バイト読み込み、1250バイトのファイルを2回まで読み込んだら、1024バイト分読み込んでくれたが、残りの226バイトを読み込もうとするとエラーになる…

ディスクに書き込むのが大変そう

ディスクの書き込みが思ったより大変そう。1ブロックごとに書き込んでいくので、ある場所に30バイトだけ書き込みたくても、1ブロック書き込んでしまい、ブロック内の他の部分を消してしまう。それを防ぐために1度1ブロック読み込んでおいて、メモリ上で変更…

リフレクションを使ってコンストラクタを呼び出してみる

大学院の研究でJavaを使っていて、リフレクションを使いたいなと思ったので、リフレクションを使った簡単なプログラムを作ってみることにした。リフレクションでコンストラクタを呼び出すクラスはPassedFilterとNotPassedFilterというinterfaceのFilterを実…

実行形式ファイル

ファイルを読み込めたはいいが、実行が出来ない。とりあえず、cppなソースをコンパイルしてelfに変換して、これを解析することにした。objdumpを使えば必要な情報は揃うが、自分でやらなければいけない。それで、Googleで『elf ヘッダ』で検索したらELF/実行…

はてなメッセージ一覧を取得してみる

Rubyではてなメッセージ一覧を取得するスクリプトを書いてみた。フォーム情報の取得、送信にはMechanizeを使ってる。 require 'rubygems' require 'mechanize' username = 'hoge' password = 'password' class HatenaMessage def initialize() @agent = WWW:…

ファイルの一部分の読み込みに成功

ファイルの先頭512バイトを読み込むことに成功した。後はファイル全体を読み込むのみ

ファイル名の取得

ルートディレクトリにあるファイルの名前とサイズを取得できるようになった。ファイル情報は0x2600から始まるので、19セクタ目から読み込んで、ファイル情報を取得。最初に見つけたファイルはシステムファイルみたいで、何故だか名前にNULL文字が含まれてい…

最適化かけなくてもうまくいった

最適化かける前は駄目だったのに元に戻したらうまくいっている。何でだ?まぁ、とりあえず実機でも動いてくれたので良かった。

-O2付けたらうまくいった

gccのオプションに-O2を付けたらtickのところもエラーがでなくなった。変わったこと言えばファイルサイズが小さくなったこと。メモリに読み込んだ位置も64KBより手前で終わってるので、それが良かったのかな?しかし、必要な処理まで最適化で消えてしまって…

問題の部分

TimerManagerのtickが問題だったらしい。呼び出してる部分1行をコメントアウトしたら正常に動いてくれた。しかし、tickの何が問題なんだ?unityTimeを表示させてみるとめちゃくちゃな値が入っている。何でだろう? TimerManager::TimerManager(){ unityTime…