SSブログ

Turbo C++ 2006 Explorer (1) - 仕様? [パソコン/ソフト]

 無料版の Borland® Turbo C++™ をインストールしてみた。古い C++Builder™(BCB) のプロジェクトファイルでも読み込みは出来る(無料版の制限にひっかかる部分はエラーになる)。
 DirectoryExists()Filectrl:: から Sysutils:: になっているとか、FormBorderStyle 設定時のVCLの振舞いが変更になっている(*1)とかの違いがあるようだ。
 IDEやbcc32.exeのインラインアセンブラでSSE/2/3を扱えるようになっているので、外部(?)のアセンブラを使用しなくても良さそうだ(*2)。Database Desktopがないのが気になるが、WinSight32は付属していた。

bcc32.exeのインラインアセンブラで、

void
hoge(void)
{
    int x;
    __asm {
        push ecx    //*A*
        mov x,1     //*B*
        pop ecx
    }
}

が、-O2オプションの時には、

        push    ecx
        push    ecx                     ;*A*
        mov     dword ptr [ebp+0],1     ;*B*
        pop     ecx
        pop     edx
        ret

(Internet Explorerでは↑のpush ecxがずれて表示される。Internet Explorer 7 で直るかと思ったが同じだった。)

というふうに、ebpの設定がないまま、いきなり[ebp+0]なので、どこに 1 が入るのかよく分からない。

 -SオプションによるASMファイルでは、

        push    ecx
        push    ecx                     ;*A*
        mov     dword ptr [esp+0],1     ;*B*
        pop     ecx
        pop     edx
        ret

*B*espになるのもよく分からない。espでも*A*があると拙いような気がする。
 #pragma等で、-kオプションが要るのかもしれない。

 あと、bcc32.exeのインラインアセンブラは、クラスの静的変数へのアクセスが出来ないようだ。どー書いても「構文エラー」になってしまう。

*1:
GetWindowLong/SetWindowLong/SetWindowPosすると良いらしい。
*2:
__asmequmacro 等が含まれるとtasm32に渡されるらしく、時間が増えて、SSEの所がエラーになる。

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

※ブログオーナーが承認したコメントのみ表示されます。

トラックバック 0