糖尿病の薬のメトホルミンは不老長寿薬なのか?

糖尿病を患っていて、糖尿病の薬を飲んでいる。

飲んでいる薬の1つにメトホルミンというのがあるのだけど、老化を防ぐ効果があるというのが最近言われていて、臨床実験をしているらしい。
「寿命120歳」不老薬に現実味 実は安価な糖尿病薬 米で臨床試験許可
安価な糖尿病治療薬に老化を防ぐ役割がある? 臨床実験へ スラド
Rimg0001
飲むのが面倒だったのだけど、これを知ってからはちょっと真剣に飲む気になった。


アンチエイジング薬とか若返りの薬とか色々と出てきそうだ。
若返り薬 「NMN」。サーチュイン遺伝子(長寿遺伝子)を活性化し、アンチエイジング。不老不死も? – NAVER まとめ
ついに登場、アメリカで話題騒然の「アンチエイジング薬」の正体とは? Basis

LLVM-IR(LLVM中間コード)を生成するTiny BASICコンパイラを作ってみた

LLVM中間コードを生成するTiny BASICコンパイラを作ってみた
(元の記事はこちらに書いていたものをblogに書き直ししている)

以前、CIL(MSIL)中間コードを生成するTiny BASICコンパイラというのを作ってみた。(2012-09-01)
それを元にJavaバイトコードを生成するTiny BASICコンパイラを作ってみた。(2013-03-01)
今回、これらをベースにLLVM中間コード(LLVM-IR)を生成するTiny BASICコンパイラを作ってみた。(2015-12-04)

1. つくってみたもの

 Tiny Basic Compiler (LLVM中間コード版)

 [ Tiny Basic Compiler 実行ファイル+ソースコード tinybas_llvm-ir_01.zip (download) ]

 特徴
 ・整数型の小型なBASIC
 ・シンプルな言語仕様なのでソースコードも短く、コンパイラの仕組みを学習するサンプルとして活用できる

2. 使い方

 BASICのソースコードをコンパイルし、出力される.llファイルをllvm-asというLLVM-IR用のアセンブラを使ってアセンブルして.bcファイルを生成する。
 lliを使ってビットコードファイルをインタープリタ実行することができる。

 順番に手順を説明すると以下のとおり。

 サンプルのソースコードは例えば次のようになる。(example1.bas)

10 INPUT X
20 Y= x*x + 6*x + 9
30 PRINT Y

 コマンドラインで、次のようにコマンド入力してコンパイルする。
 % tinybas example1.bas

 結果、example1.ll が得られる。
 この.ll ファイルはllvm-as用のアセンブリーソースコードである。
 llvm-asを使って.bcファイルを作る。
 % llvm-as example1.ll
 で、example1.bcが作られる。

 実行するには、次のようにする。
 % lli example1.bc

 ちなみにアセンブリーソースコード(example1.llファイル)は、以下のように生成される。

;============================================================
;	Compiler: Tiny Basic Compiler Ver 0.1
;	Source: example1.bas
;	Object: example1.ll
;============================================================

@.1 = private unnamed_addr constant [4 x i8] c"%d\0A\00", align 1
@.2 = private unnamed_addr constant [3 x i8] c"?\0A\00", align 1
@buf = common global [1024 x i8] zeroinitializer, align 1
declare i32 @printf(i8*, ...) nounwind
declare i8* @gets(i8*) nounwind
declare i32 @atoi(i8*) nounwind

define i32 @main() {
;------------------------------------
	%acc = alloca i32 , align 4
	br label %_L10

_L10:
	%_V0 = alloca i32 , align 4
	%1 = call i32(i8*,...)* @printf(i8* getelementptr inbounds([3 x i8]* @.2, i32 0, i32 0)) nounwind
	%2 = call i8* @gets(i8* getelementptr inbounds ([1024 x i8]* @buf, i32 0, i32 0)) nounwind
	%3 = call i32 @atoi(i8* getelementptr inbounds ([1024 x i8]* @buf, i32 0, i32 0)) nounwind
	store i32 %3, i32* %_V0 ,align 4
	br label %_L20

_L20:
	%_V1 = alloca i32 , align 4
	%4 = load i32* %_V0, align 4
	store i32 %4, i32* %acc
	%5 = load i32* %acc, align 4
	%6 = load i32* %_V0, align 4
	store i32 %6, i32* %acc
	%7 = load i32* %acc, align 4
	%8 = mul nsw i32 %5, %7
	store i32 %8, i32* %acc
	%9 = load i32* %acc, align 4
	store i32 6 , i32* %acc, align 4
	%10 = load i32* %acc, align 4
	%11 = load i32* %_V0, align 4
	store i32 %11, i32* %acc
	%12 = load i32* %acc, align 4
	%13 = mul nsw i32 %10, %12
	store i32 %13, i32* %acc
	%14 = load i32* %acc, align 4
	%15 = add nsw i32 %9, %14
	store i32 %15, i32* %acc
	%16 = load i32* %acc, align 4
	store i32 9 , i32* %acc, align 4
	%17 = load i32* %acc, align 4
	%18 = add nsw i32 %16, %17
	store i32 %18, i32* %acc
	%19 = load i32* %acc, align 4
	store i32 %19, i32* %_V1 ,align 4
	br label %_L30

_L30:
	%20 = load i32* %_V1, align 4
	store i32 %20, i32* %acc
	%21 = load i32* %acc, align 4
	%22 = call i32(i8*,...)* @printf(i8* getelementptr inbounds([4 x i8]* @.1, i32 0, i32 0), i32 %21) nounwind
	br label %_END

_END:
;------------------------------------
	ret i32 0
}

Java版TinyBasicやMSIL版TinyBasicに比べると、冗長なコードが多い。
LLVM-IRのコード生成はSSA(静的単一代入形式)などの仕組みが少し難しく、うまいコード生成が作れなかった。

このページの上記の説明では説明不足なので、blogで補足を書き足していく予定。

上記のページに書いただけでは説明不足なので、こちらのblogで補足説明を書いていく予定。(週1くらいで)

iPad mini Retina(iPad mini 2)のバッテリーが劣化したので、バッテリー付きジャケットを探してみた

iPad mini Retina(iPad mini 2)のバッテリーが劣化したので、バッテリー付きジャケットを探してみた。

最初は安くバッテリーを交換してくれる修理業者を探して行ってみたのだけど、iPhoneのバッテリー交換はやっているが、iPadは受け付けていないのだそうだ。

バッテリー付きのジャケットを探したのだけど、もう品切れで売っていない製品ばかりだった。3Gルーター付きのバッテリー内蔵ジャケットの品切れの店が多かったが、なんとか1個だけ入手することができた。
Rimg0001
【OTAO】Apple iPad mini / mini Retina Wi-Fi版専用・3Gルーター/バッテリー搭載多機能ケース・WIFI PARTNER [並行輸入品]
続きを読む

星崎のリトル水族館ざうおに行ってきた

星崎のリトル水族館ざうおに行ってきた。
(水族館に行ったメモ:シリーズ その35)
20151129_130045
水族館という名前なのだけど、熱帯魚ショップのような感じの店だ。
建物の1Fは、「ざうお」という料理屋になっており、そちらがメインの本業。
水族館は最近(2015年9月に)始めたらしい。
続きを読む

Windows 10 Mobileの端末を手に入れるには

Windows 10 Mobileの端末を手に入れるにはどうするのがいいのだろう?

既に買ったMADOSMAをOTAで自分でアップデートするのであれば、お金が掛からずに一番安く上がるのだけど、まだOTAが来ないようだ。12月中ということだが、具体的な日付は不明だ。
いち早くアップデートしたければ、有償で既存機種をアップデートしてくれるらしい。(店舗に行かないと駄目だが)
ということで、後者の方法で名古屋から東京に行って、有償アップデートするという方法がある。
12月10日以降は青春18切符が使えるので、それで東京に行ってアップデートすれば、たぶんOTAよりも早くMADOSMAをWindows 10 Mobileにアップデートすることが可能だ。
初代「MADOSMA」のWindows 10 Mobile有償アップデートサービスが開始 従来モデルをアップデート、いち早くWindows 10 Mobileが体験可能に
続きを読む