abdev

プロセス間通信

などという、ちょっと高等テクニックを駆使しながら、デバッガを作り続けております。 先日もお話したとおり、デバッグターゲットの64アプリは、32デバッガからCreateProcessすることができません。厳密にいうと、起動はできるのですが、ブレークポイントや…

コミュニティを改良

phpBBに[hide]タグを追加してみました。以前から、長いソースコードをベタッと貼り付けると記事が見づらくなるというご意見をいただいていたので、これでちょっとは解消されるハズです。 もし、[window]タグなるものがあったら、こっちのほうが使いやすいの…

デバッグメッセージの取得に成功!

一週間、悩みに悩んだGetThreadContext。本日、やっとその真相が明らかになりました。 Declare Function GetThreadContext Lib "kernel32" (hThread As HANDLE, ByRef lpContext As Any) As Long この関数でターゲットアプリのレジスタの内容を取得すること…

デバッガ開発で大きな壁が

今日は一日中パソコンです。外はいい天気なのにな〜。 さてさて、ここらで気分を変えて、64コンパイラが生成したコードをデバッグするためのデバッガ造りを始めることにしたのですが、、、 初っ端から躓いております。GetThreadContext関数が正常に動作しま…

新ディレクティブ導入。そして…

このブログをご覧の皆さんはもうお気づきかと思いますが、ここ3〜4日、64コンパイラの開発が進んでおりませんハイ。遊んでおります・・・ 要所要所で少しでも作業を…と思いつつの3〜4日だったのですが、やはり、友達が来てしまうと集中力は1/10になりますな…

RADツール×64コンパイラ

今日もボチボチ作業を進めております。 さてさて、もう晩くなっちゃったんで、ディープなことを書く気力はありませんが、進行状況だけ、サササッと。 64コンパイラがとうとう姿を現し始めました。レジスタ割付、x64呼び出し規約、XMMレジスタのフル活用など…

16バイトの境界

いゃ〜、昨日は早寝の予定だったのですが、とある一つの問題で、明け方3時過ぎまで作業をしてしまいました(汗)。 64コンパイラ試作版でMessageBox関数を呼び出すテストをしていたのですが、それが成功するときもあれば、失敗してしまうこともあるんです。…

形成が進む、64コンパイラ

色々な問題を解消していくうちに、なんとか簡単なコードをコンパイルできるようになってきました。この調子でいけば、一ヵ月後には確実にβリリースができそうです。タイトルは、う〜ん、 ActiveBasic Ver5.0β1 って、そのままやん/(--)/ しかし、ちょっとま…

賢いスタックフレーム

64コンパイラは、ネイティブコードを構成する各オペコードをAMD64の規格へと変更しながら作られていくのですが、x86の機械語をAMD64の機械語にただ単に挿げ替えればいいということではありません。 先日、話題に出したように、レジスタは16個に増えるし、実…

共同作業、どうやって実現させよう…

最近、どうしても解決できない悩みに直面しているんです。それは、言語仕様設計に関することでも、64ビットネイティブコードに関することでもありません。 そう、それは、作業量。 どんなに賢く、どんなに努力して時間を有効活用して開発に取り組んでも、お…

レジスタベースの演算コード生成

遅寝早起きで爆進中でございます。 今朝は演算コードの生成部分についてのディープな話から…。しかし、この話題はコンパイラの中核を成す部分だといっても過言ではない、と〜っても重要なところなんでやんす。 コンパイラに搭載される演算コードの生成部分。…

XMMレジスタが大活躍

Pentium MMX Pentium Pentium 2 Pentium 3 Pentium 4 K6 K6-2 Athlon Athlon XP 突然ですが、このリストは皆さんご存知の32ビットCPUの仲間たちですね。色々な技術がてんこ盛りのことだと思いますが、ベースとなるものはx86。特殊命令を除けば、すべて互換性…

x64のAPI関数呼び出し

x64対応のEXEファイルのPEヘッダ、基本的な部分は解読できました。そして今日はなんとか、簡単な計算プログラムをコンパイルできる状態へと持っていくことができました〜。コンパイルとはいっても、64ビットモードで動作するめちゃくちゃ簡単なネイティブコ…

64コンパイラの開発スタート

寝る時間を惜しんでまで、64ビットネイティブEXEのPEヘッダと格闘しています。第一ラウンドはなんとか勝ち越せそうなのですが、どうもWin64の関数呼び出しに戸惑いそうな雰囲気…。 Win64の規約って、変に速さを意識しているのか、デフォルトでレジスタを使っ…

構想と共に、膨らむ悩み

東京から終電で帰ってきた昨夜。酒を飲みつつのミーティングの内容は核心をつくものばかりでした。東大の内部事情の話題から始まり、ネットゲーム開発に関すること、おいらにとって重要な10年後の言語市場について、などなど。 自己保身が確立されていない今…

東京でミーティング

今朝もちょっと遅めの起床。起きてからは開発作業のほうを進めています。今日の作業内容はパラメータヒントを複数行に対応させること。 プロジェクトエディタのコード解析部分(コンパイラとは別)をいじるので、まぁ、それなりには大変なんですが、なんとか…

仮想関数の強化

今日は朝から知人に指摘された仮想関数に関する機能を実装しているところです。内容は、クラス継承時に仮想関数をオーバーライドしたときのvtableの上書き動作です。 その前に、ABでは仮想関数を保持するクラスをNewしたときのコンパイラ動作が未完成のまま…

AB未来予想図は欲張り

相変わらず、おいらの頭の中は、様々な画期的技術と路線の定まらないAB予想図でごちゃごちゃになってます。 ここ2日間、普段は調べないようなことを色々あさったわけですが、、、 ABの今後にどのような方向性を持たせるのかといった、最もベースとなる部分が…

言語の成長過程にショック

ブースト会議で指摘された様々な要素を調べているわけですが、調べれば調べるほどカルチャーショックを受けます。それは、おいらがとってきた言語システム(AB)の成長工程が、昨今の言語システムのそれとは少し異なっているところから始まります。 おいらは…

オブジェクトポインタのポインタを扱うときの問題

//整数型 #define DEF_CHAR 0x0001 #define DEF_BYTE 0x0002 #define DEF_INTEGER 0x0003 #define DEF_WORD 0x0004 #define DEF_LONG 0x0005 #define DEF_DWORD 0x0006 #define DEF_INT64 0x0007 #define DEF_QWORD 0x0008//実数型 #define DEF_SINGLE 0x000…

キャストを可能にすべく… Ver4.1はまだか!?

本日は休日。相変わらず、この問題に取り組んでいるところです。どうも、おいらは開発に専念してしまうとWebコンテンツの製作が疎かになってしまうみたいですね。どなたか、同士を組んでDiscoversoftの運営を活発なものにしたいものです。 さてさて、キャス…

型思想

キャストの問題を処理していて、フッと思ったことなのですが、Win32APIが用意してくれる型って、ちょっと悪趣味だと思いません?だって、よく考えてみてくださいよ。typedef int INT; typedef long LONG;とかしてるんですよ。APIの上では、型を大文字で統一…

パラメータヒントが閉じたときのチラツキが気になる!

おいらが気になるくらいなので、頻繁にプロジェクトエディタを利用するABユーザーさんも気にはしていたことと思います。 それはパラメータヒントを表示してからカーソルを移動するなどして、そのヒントが消えたとき。一瞬だけプロジェクトエディタのウィンド…

演算部分の改良計画 〜作業の様子2〜

CheckDifferentType関数を新たに設けました。この関数、コンパイラ内部で、以下のようなタイミングで呼ばれる便利な関数です。 ・変数にデータを格納するとき ・関数にパラメータを引き渡すとき 呼び出されると、双方(右辺、左辺)の型の整合性を判断します…

演算部分の改良計画 〜作業の様子1〜

今日は夕方から家業の配達の手伝いがあるので、それまでは開発を進めます。 まずは、問題にあがっているキャストの問題。すぐにキャスト可能な仕様に改良することはできないので、ことはじめとしてコンパイラの演算コード生成部をすべての型に対応させるとこ…

ABの演算部、大改良計画

キャストの問題が出てきてから色々と考えているのですが、ABの演算部分がかなり簡略化された構造になっとることを再確認させられました。こいつはおいらが1人でABを開発することから、コードの軽量化とその内容のわかりやすさを重視した上でのことであり、言…

ABのタイプキャスト問題

型チェックの甘さが問題になっていることについて、考えをまとめてみます。 元々、Basic言語というヤツはタイプチェックしてないっぽいですよね(--;;;。あったとしても、数値型と文字列型の判別くらいでしょうか…。 10 a="1" 20 b=2 30 c=a+b 40 Print c '3…

64ビットコンパイラ製作のための情報収集

最近、本格的に64ビットコンパイラの製作をはじめようかな〜と思い始めてきたおいら。まずはディープに情報集めからはじめようと思います。 普通の64ビットユーザーになろうとするならば、まずは対応PCを模索するか、物好きな方はCPUの種類とそれに対応する…

Ver4.04.00に向けた地味な作業を

久々に、朝から夕方まで、パソコンの前に座っていました。今日は思い切りAB開発に時間を費やしたんですよ。 午前中はサボッていたメール処理。たまっていた要返信メールを書いてしまいます。で、昼食は外へ出かけ、家に戻ってActiveBasic Ver4.04.00の開発を…

Yahoo! JAPANに出現したActiveBasicカテゴリ

おいらが知らない間にカテゴリ登録がなされていました。ウーム、ユーザーさんのどなたかが、カテゴリ分けの要望を出してくれたのでしょうか…謎です。まぁ、とにかく、ActiveBasicの認知度がそれだけ高まったということなんで、嬉しい限りです。このカテゴリ…