[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[WitchTech 00417] Re: DS!=SS 対応コンパイラ?
- Subject: [WitchTech 00417] Re: DS!=SS 対応コンパイラ?
- From: narunaru@123mail.net
- Date: Sat, 2 Sep 2000 01:24:40 +0900 (JST)
なるなると申します。
> <20000902003606.dd40fd2.20253@nifty.ne.jp>
> From: CQB04050@nifty.ne.jp
> Date: Sat, 2 September 2000 00:36:06 +0900
> 私はWonderWitch用のコンパイラにPC9801用のTurboC++を使っているのですが
> この前、マニュアルでDS!=SSにするオプションを見つけました。
# Borland C/C++ にもあります。(Turbo C 2.0 は知りません。)
> 元プログラム
> http://homepage2.nifty.com/amenity/sample.txt
>
> DS!=SSオプションつきのアセンブラコード
> http://homepage2.nifty.com/amenity/sample_a.txt
# このくらいなら、デバッグ情報だけ削除してそのまま書いてしまっても良いかも
しれません。
--sample.txt
#include <sys\bios.h>
void main()
{
int i;
int a[] = { 0,1,2,3,4,5,6,7,8,9 };
text_screen_init();
for(i = 0;i < 10;++i)
{
text_put_numeric(0,i,4,4,a[i]);
}
key_wait();
}
生成コードの該当個所だけ抜き出すと以下のようになっていて、この範囲では問題
ないと思います。
--from sample_a.txt
; DS != SS でコンパイル
; 配列の初期化 memcpy(ss:bp-20, ds:d@w+0, 20);
push ss
lea ax,word ptr [bp-20]
push ax
push ds
mov ax,offset DGROUP:d@w+0
push ax
mov cx,20
call near ptr N_SCOPY@
; 初期化はどちらでも ss にコピーしている。
; a[i] のアクセス
mov bx,si
shl bx,1
lea ax,word ptr [bp-20]
add bx,ax
push word ptr ss:[bx] ; <--- 違う場所 ----------------------------
; 要素のアクセスは DS != SS を指定したときだけ ss を使用している。
ML Archives