[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[WitchTech 00395] Re: 実行時間計測



なるなると申します。

 > <200008230955.SAA02448@kr027.tsi.co.jp>
 > From: shige@tsi.co.jp
 > Date: Wed, 23 August 2000 18:55:05 +0900

 > 毎回アセンブラソースに .186 って書き足してやるしか方法ないのかしら?
 > # そこまで速度気にするなら最初からアセンブラで書けと言われそうですが ^-^;

# 以下は V30MZ 説を信じるとしてですが、

速度的には、大野さんが [WitchTech 00386] でお書きになっているように

	shl reg, 1	1
	shl reg, imm8	3

なので、.186 で遅くならないのは imm8 が 3 以上のときだけです。ところが
LSI C-86 は 5 bit 以上シフトするときは cl を使ったシフトを生成しています。

ということで効果があるのは 3, 4 bit シフトのときだけなので気にしなくても良
いのではないかと思います。(レジスタに乗らない場合は話が変わりますが、そう
いう場合はまずレジスタに乗るようにするのが先決でしょう。)


コードサイズの関係で、どうしてもやりたければ、1byte 損しますが、

--misc.h
int _asm_c(char *);

#define DOT186 \
static void dot186_(void) \
{ \
	_asm_c("\n\t.186\n); \
}
--

--
#include "misc.h"

DOT186

int foo(int i)
{
	return i << 4;
}

# 上記は実際に試していません。


するか、makefile で細工するしかないでしょう。



ML Archives