Turbo C++ 2006 Explorer (1) - 仕様? [パソコン/ソフト]
無料版の Borland® Turbo C++™ をインストールしてみた。古い C++Builder™(BCB) のプロジェクトファイルでも読み込みは出来る(無料版の制限にひっかかる部分はエラーになる)。
DirectoryExists()
が Filectrl::
から Sysutils::
になっているとか、Form
の BorderStyle
設定時の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:
__asm
に equ
や macro
等が含まれるとtasm32に渡されるらしく、時間が増えて、SSEの所がエラーになる。
コメント 0