SlideShare une entreprise Scribd logo
1  sur  18
Télécharger pour lire hors ligne
clu2cは64ビットOSで
     も使えます
  CLU動態保存整備士
      東平洋史
CLU関連の私の略歴を

1988年4月     東京工業大学第1類に入学
1989年4月     東京工業大学理学部情報科学科に配属
1990年4月     情報科学実験第二(木村泉先生担当)受講
            →CLU、ncluと出会う
1991年4月     木村泉研究室に入る →clu2cの開発始まる
1991年9月末    卒業論文のテーマ決まる
1994年3月     東京工業大学大学院博士課程前期修了
            →CLUから離れる
2009年11月頃   京都御所へ行くついでにKOFへ行くことにし、
            そういえばclu2cもオープンソースだよなあ、と
            思い出す。→これが活動開始のきっかけ。
CLU(くるう)とは何ですか?
 プログラミング言語
 • MITのBarbara Liskov考案(1974) ← 結構、古い
 • 強い型付
   • コンパイル時に全てのオブジェクトの型が決まる
   • でも、任意の場所で変数宣言可能
 • 抽象型(cluster)を定義可能
   • 継承はできない
 • 複数の戻り値が可能 → Rubyもパクった取り入れた
   a:int, b: real := type$procedure(c, d)
 • 変数の値は全てヒープ上のオブジェクト
   • Garbage Collection
• イテレータ → Rubyのブロックになった
• 例外処理 → Rubyもパクった取り入れた
いわばRubyの先祖です
CLUのプログラム例
start_up = proc()
  stdout:stream:= stream$primary_output()
  stream$putl(stdout, “Hello World!”)
end start_up

• 変数は使い始める場所で宣言
   – 変数名: 型名
   – 変数名: 型名 := 初期設定値
• 型$手続き名 という形で手続きを呼び出し
clu2c(くるーつーしー)とは何ですか?
プログラミング言語CLUの処理系
• プログラミング言語CLUで書かれたプログラム
  をCで書かれたプログラムに変換(CLU to C)
• Cで書かれたプログラムを実行形式(a.out)に
  コンパイル

 CLUの   clu2c     Cの
プログラム           プログラム
                                  実行形式
                        clulink
                                   a.out
                ライブラリ
稼働確認済みの環境
• Cygwin              • CentOS 6.3
• Ubuntu 12.04.1        – i386
   – i386             • Fedora 17
   – amd64              – i386
• OpenSUSE 12.2       • FreeBSD 9.0
   – 32bit              – i386
   – 64bit            • NetBSD 5.1.2
• OpenIndiana 151a5     – i386
   – i386             • Vine61
• Solaris 11/11         – i686
デモ
     次のどれかで動かしますよ
• Cygwin            • OpenIndiana 151a5
• Ubuntu 12.04.1        – i386
  – i386            • Solaris 11/11
  – amd64           • CentOS 6.3
• OpenSUSE 12.2         – i386
  – 32bit           • Fedora 17
  – 64bit               – i386
clu2cの実行例
CLUで書いたプログラム                           Cのプログラム(一部)
赤字は2バイト文字使用部分                          int AFstart__up() {
start_up = proc()                        if (OFstream_Dprimary__output()
                                                                          == SIG) {
 標準出力:stream:=
          stream$primary_output()          goto except0;
                                         }
 for i:int in int$from_to(1, 5) do
                                         LV_X49383d603d504e4f =
   標準出力!putl(”No. ” ||                                             retval_area[0];
       i!unparse() ||                    for (t1 = 1; t1 <= 5; t1++) {
                    ” Hello World!”)       OFint_Dunparse(t1);
 end                                       (略)
end start_up                             }
                                       }
方針

32ビット環境でも
64ビット環境でも
吐くコードは同じ
どう
やる?
整数型とビット数
データ     システ     char short int long long   ポイ
モデル     ム                           long   ンタ
ILP32   Win32   8    16    32 32 64        32
LLP64   Win64   8    16    32 32 64        64
LP64    64bit   8    16    32 64 64        64
        Linux
ILP64           8    16    64 64    64     64

ILP32…ポインタは32bit → long
LLP64、LP64、ILP64…ポインタは64bit → long long
なので
ヘッダファイルを修正
プリプロセッサで判定              #if defined(__LP64__) ||
• 64ビット環境                   defined(__LLP64__) ||
  ポインタ(object型)を            defined(__ILP64__)
  long longで宣言(64bit)    typedef long long object;
• 32ビット環境               #else
  ポインタ(object型)を         typedef long object;
  longで宣言(32bit)        #endif


     ほぼこれだけで済みました
clu2c現在の状態
開発自体は終了
• 木村泉先生退官により木村泉研究室消滅
• 東工大 理学部 情報科学科での公開は終了
  →フランスのFTPサーバからソースを回収
• 現在は「動態保存」
• こちらでソースを公開中
  – http://touhei.sakura.ne.jp/clu2c/
  – http://sourceforge.jp/projects/clu2c/
clu2cに残る課題
いずれもプロジェクト終了後に発生したもの
• UTF対応
 – ISO-2022-JP、Shift_JIS、EUC-JPには対応済み
• ドキュメントの日本語化
clu2cプロジェクト参加者
•   江原善(初代リーダー)             プロジェクト終了後
•   木原誠司(コンパイラ実装)           • 前田修吾さん
•   地引昌弘(デバッガなど)              – Linuxへの移植およびPorts化
•   孫音(ライブラリ実装)             • 東平洋史
•   牛嶋哲(二代目リーダー)              – 前田さんの改造をCLU使用部
                                分に反映
    – 日本語文字使用部分実装
                              – Cygwin、Ubuntu 9.04への移植
•   富沢伸行(ライブラリ実装)             – 64bit環境への対応
•   浦野幹夫(ライブラリ実装)
•   野澤義雄(ライブラリ実装)
•   林智子(ライブラリ実装)
•   森村健司
    – Human68k、MS-DOSへの移植
• 森玲人(デバッガ担当)
• 東平洋史(最適化など)
など
参考文献
• CLU Reference Manual
  – Liskov, B., Atkinson, R.R., Bloom, T., Moss, E.B., Schaffert, R.
    and Snyder, A. 著
  – http://publications.csail.mit.edu/lcs/specpub.php?id=793
• CLUとその仲間たち
  – 久野靖 著
  – 共立出版 bit 1989年5月号~12月号
  – http://www.oreilly.co.jp/books/9784873113630/#files
• 開発効率と移植性を重視したCLU言語処理系の作成
  – 江原善 著
  – 東京工業大学理工学研究科情報科学専攻 修士論文
  – http://touhei.sakura.ne.jp/clu2c/clu2c-thesis.tar.gz

Contenu connexe

Tendances

BLS署名の実装とその応用
BLS署名の実装とその応用BLS署名の実装とその応用
BLS署名の実装とその応用MITSUNARI Shigeo
 
Cocoa勉強会#33-意外に楽に使えるlibcurl
Cocoa勉強会#33-意外に楽に使えるlibcurlCocoa勉強会#33-意外に楽に使えるlibcurl
Cocoa勉強会#33-意外に楽に使えるlibcurlMasayuki Nii
 
30日でできない!コンピューター自作入門 - カーネル/VM探検隊@つくば
30日でできない!コンピューター自作入門 - カーネル/VM探検隊@つくば30日でできない!コンピューター自作入門 - カーネル/VM探検隊@つくば
30日でできない!コンピューター自作入門 - カーネル/VM探検隊@つくばHirotaka Kawata
 
Using "C-bus" extension boards on LUNA-88K2 (at OSC 2015 Nagoya)
Using "C-bus" extension boards on LUNA-88K2 (at OSC 2015 Nagoya)Using "C-bus" extension boards on LUNA-88K2 (at OSC 2015 Nagoya)
Using "C-bus" extension boards on LUNA-88K2 (at OSC 2015 Nagoya)Kenji Aoyama
 
3次元SLAMは誰でもできるよ。そう、TX2とTurtleBot3ならね。
3次元SLAMは誰でもできるよ。そう、TX2とTurtleBot3ならね。3次元SLAMは誰でもできるよ。そう、TX2とTurtleBot3ならね。
3次元SLAMは誰でもできるよ。そう、TX2とTurtleBot3ならね。ROBOTIS Japan
 
自作コンピューターでなんかする - 第八回 カーネル/VM探検隊&懇親会
自作コンピューターでなんかする - 第八回 カーネル/VM探検隊&懇親会自作コンピューターでなんかする - 第八回 カーネル/VM探検隊&懇親会
自作コンピューターでなんかする - 第八回 カーネル/VM探検隊&懇親会Hirotaka Kawata
 
「Turtlebot3の紹介」 ROS Japan UG #10 勉強会
「Turtlebot3の紹介」 ROS Japan UG #10 勉強会「Turtlebot3の紹介」 ROS Japan UG #10 勉強会
「Turtlebot3の紹介」 ROS Japan UG #10 勉強会ROBOTIS Japan
 
Unix32 v 20100508
Unix32 v 20100508Unix32 v 20100508
Unix32 v 20100508xylnao
 
あるキャッシュメモリの話
あるキャッシュメモリの話あるキャッシュメモリの話
あるキャッシュメモリの話nullnilaki
 
Look at-the-lisper
Look at-the-lisperLook at-the-lisper
Look at-the-lisperhome
 
ロボットシステム学2015年第5回
ロボットシステム学2015年第5回ロボットシステム学2015年第5回
ロボットシステム学2015年第5回Ryuichi Ueda
 
[kernel/vm] Implements the RPS/RFS for FreeBSD
[kernel/vm] Implements the RPS/RFS for FreeBSD[kernel/vm] Implements the RPS/RFS for FreeBSD
[kernel/vm] Implements the RPS/RFS for FreeBSDgokzy
 
Cybozu Tech Conference 2016 バグの調べ方
Cybozu Tech Conference 2016 バグの調べ方Cybozu Tech Conference 2016 バグの調べ方
Cybozu Tech Conference 2016 バグの調べ方MITSUNARI Shigeo
 
UNIX/32V
UNIX/32V UNIX/32V
UNIX/32V xylnao
 
高速な暗号実装のためにしてきたこと
高速な暗号実装のためにしてきたこと高速な暗号実装のためにしてきたこと
高速な暗号実装のためにしてきたことMITSUNARI Shigeo
 
Intel AVX-512/富岳SVE用SIMDコード生成ライブラリsimdgen
Intel AVX-512/富岳SVE用SIMDコード生成ライブラリsimdgenIntel AVX-512/富岳SVE用SIMDコード生成ライブラリsimdgen
Intel AVX-512/富岳SVE用SIMDコード生成ライブラリsimdgenMITSUNARI Shigeo
 
Mruby jitプレゼン
Mruby jitプレゼンMruby jitプレゼン
Mruby jitプレゼンmiura1729
 

Tendances (20)

BLS署名の実装とその応用
BLS署名の実装とその応用BLS署名の実装とその応用
BLS署名の実装とその応用
 
Cocoa勉強会#33-意外に楽に使えるlibcurl
Cocoa勉強会#33-意外に楽に使えるlibcurlCocoa勉強会#33-意外に楽に使えるlibcurl
Cocoa勉強会#33-意外に楽に使えるlibcurl
 
30日でできない!コンピューター自作入門 - カーネル/VM探検隊@つくば
30日でできない!コンピューター自作入門 - カーネル/VM探検隊@つくば30日でできない!コンピューター自作入門 - カーネル/VM探検隊@つくば
30日でできない!コンピューター自作入門 - カーネル/VM探検隊@つくば
 
Arch TCP/IP TFTP
Arch TCP/IP TFTPArch TCP/IP TFTP
Arch TCP/IP TFTP
 
Using "C-bus" extension boards on LUNA-88K2 (at OSC 2015 Nagoya)
Using "C-bus" extension boards on LUNA-88K2 (at OSC 2015 Nagoya)Using "C-bus" extension boards on LUNA-88K2 (at OSC 2015 Nagoya)
Using "C-bus" extension boards on LUNA-88K2 (at OSC 2015 Nagoya)
 
3次元SLAMは誰でもできるよ。そう、TX2とTurtleBot3ならね。
3次元SLAMは誰でもできるよ。そう、TX2とTurtleBot3ならね。3次元SLAMは誰でもできるよ。そう、TX2とTurtleBot3ならね。
3次元SLAMは誰でもできるよ。そう、TX2とTurtleBot3ならね。
 
自作コンピューターでなんかする - 第八回 カーネル/VM探検隊&懇親会
自作コンピューターでなんかする - 第八回 カーネル/VM探検隊&懇親会自作コンピューターでなんかする - 第八回 カーネル/VM探検隊&懇親会
自作コンピューターでなんかする - 第八回 カーネル/VM探検隊&懇親会
 
「Turtlebot3の紹介」 ROS Japan UG #10 勉強会
「Turtlebot3の紹介」 ROS Japan UG #10 勉強会「Turtlebot3の紹介」 ROS Japan UG #10 勉強会
「Turtlebot3の紹介」 ROS Japan UG #10 勉強会
 
Unix32 v 20100508
Unix32 v 20100508Unix32 v 20100508
Unix32 v 20100508
 
あるキャッシュメモリの話
あるキャッシュメモリの話あるキャッシュメモリの話
あるキャッシュメモリの話
 
Look at-the-lisper
Look at-the-lisperLook at-the-lisper
Look at-the-lisper
 
量子情報16
量子情報16量子情報16
量子情報16
 
ロボットシステム学2015年第5回
ロボットシステム学2015年第5回ロボットシステム学2015年第5回
ロボットシステム学2015年第5回
 
[kernel/vm] Implements the RPS/RFS for FreeBSD
[kernel/vm] Implements the RPS/RFS for FreeBSD[kernel/vm] Implements the RPS/RFS for FreeBSD
[kernel/vm] Implements the RPS/RFS for FreeBSD
 
Cybozu Tech Conference 2016 バグの調べ方
Cybozu Tech Conference 2016 バグの調べ方Cybozu Tech Conference 2016 バグの調べ方
Cybozu Tech Conference 2016 バグの調べ方
 
0622
06220622
0622
 
UNIX/32V
UNIX/32V UNIX/32V
UNIX/32V
 
高速な暗号実装のためにしてきたこと
高速な暗号実装のためにしてきたこと高速な暗号実装のためにしてきたこと
高速な暗号実装のためにしてきたこと
 
Intel AVX-512/富岳SVE用SIMDコード生成ライブラリsimdgen
Intel AVX-512/富岳SVE用SIMDコード生成ライブラリsimdgenIntel AVX-512/富岳SVE用SIMDコード生成ライブラリsimdgen
Intel AVX-512/富岳SVE用SIMDコード生成ライブラリsimdgen
 
Mruby jitプレゼン
Mruby jitプレゼンMruby jitプレゼン
Mruby jitプレゼン
 

Similaire à clu2cは64ビットOSでも使えます (OSC 2012 Hiroshima LT用資料)

Rubyの御先祖CLU(くるう)のお話(OSC2013 Hamamatsu 発表資料)
Rubyの御先祖CLU(くるう)のお話(OSC2013 Hamamatsu 発表資料)Rubyの御先祖CLU(くるう)のお話(OSC2013 Hamamatsu 発表資料)
Rubyの御先祖CLU(くるう)のお話(OSC2013 Hamamatsu 発表資料)洋史 東平
 
clu2cの動態保存とはなんでしょう?(東海道らぐ 初オフ会 in オープンソースカンファレンス 2012 Kansai@Kyoto 資料)
clu2cの動態保存とはなんでしょう?(東海道らぐ 初オフ会 in オープンソースカンファレンス 2012 Kansai@Kyoto 資料)clu2cの動態保存とはなんでしょう?(東海道らぐ 初オフ会 in オープンソースカンファレンス 2012 Kansai@Kyoto 資料)
clu2cの動態保存とはなんでしょう?(東海道らぐ 初オフ会 in オープンソースカンファレンス 2012 Kansai@Kyoto 資料)洋史 東平
 
A story of porting OpenBSD/luna88k
A story of porting OpenBSD/luna88kA story of porting OpenBSD/luna88k
A story of porting OpenBSD/luna88kKenji Aoyama
 
StackExchangeで見たシステムプログラミング案件
StackExchangeで見たシステムプログラミング案件StackExchangeで見たシステムプログラミング案件
StackExchangeで見たシステムプログラミング案件yaegashi
 
Rubyの御先祖CLUのお話(OSC 2011 Shimane LT 資料)
Rubyの御先祖CLUのお話(OSC 2011 Shimane LT 資料)Rubyの御先祖CLUのお話(OSC 2011 Shimane LT 資料)
Rubyの御先祖CLUのお話(OSC 2011 Shimane LT 資料)洋史 東平
 
ROP Illmatic: Exploring Universal ROP on glibc x86-64 (ja)
ROP Illmatic: Exploring Universal ROP on glibc x86-64 (ja)ROP Illmatic: Exploring Universal ROP on glibc x86-64 (ja)
ROP Illmatic: Exploring Universal ROP on glibc x86-64 (ja)inaz2
 
スタート低レイヤー #0
スタート低レイヤー #0スタート低レイヤー #0
スタート低レイヤー #0Kiwamu Okabe
 
Rubyの御先祖CLUのお話(原本)
Rubyの御先祖CLUのお話(原本)Rubyの御先祖CLUのお話(原本)
Rubyの御先祖CLUのお話(原本)洋史 東平
 
NetBSDのクロスビルドのしくみとインストール済みLive Imageの作成
NetBSDのクロスビルドのしくみとインストール済みLive Imageの作成NetBSDのクロスビルドのしくみとインストール済みLive Imageの作成
NetBSDのクロスビルドのしくみとインストール済みLive Imageの作成Izumi Tsutsui
 
OpenStack + OpenContrailで実現するマルチテナントIaaSのご紹介
OpenStack + OpenContrailで実現するマルチテナントIaaSのご紹介OpenStack + OpenContrailで実現するマルチテナントIaaSのご紹介
OpenStack + OpenContrailで実現するマルチテナントIaaSのご紹介Takashi Sogabe
 
ロボットシステムのつくりかた 〜Robot Operating Systemというアプローチ〜
ロボットシステムのつくりかた 〜Robot Operating Systemというアプローチ〜ロボットシステムのつくりかた 〜Robot Operating Systemというアプローチ〜
ロボットシステムのつくりかた 〜Robot Operating Systemというアプローチ〜Hideki Takase
 
コンテナ情報交換会2
コンテナ情報交換会2コンテナ情報交換会2
コンテナ情報交換会2Masahide Yamamoto
 
197x Timer with Your Messages
197x Timer with Your Messages197x Timer with Your Messages
197x Timer with Your MessagesKuniaki Igarashi
 
OpenCLに触れてみよう
OpenCLに触れてみようOpenCLに触れてみよう
OpenCLに触れてみようYou&I
 
FOLIOのコードを動かしてみた
FOLIOのコードを動かしてみたFOLIOのコードを動かしてみた
FOLIOのコードを動かしてみたFutoshi Tanuma
 
OpenSolaris Printing Environment
OpenSolaris Printing EnvironmentOpenSolaris Printing Environment
OpenSolaris Printing EnvironmentNaruhiko Ogasawara
 

Similaire à clu2cは64ビットOSでも使えます (OSC 2012 Hiroshima LT用資料) (20)

Rubyの御先祖CLU(くるう)のお話(OSC2013 Hamamatsu 発表資料)
Rubyの御先祖CLU(くるう)のお話(OSC2013 Hamamatsu 発表資料)Rubyの御先祖CLU(くるう)のお話(OSC2013 Hamamatsu 発表資料)
Rubyの御先祖CLU(くるう)のお話(OSC2013 Hamamatsu 発表資料)
 
clu2cの動態保存とはなんでしょう?(東海道らぐ 初オフ会 in オープンソースカンファレンス 2012 Kansai@Kyoto 資料)
clu2cの動態保存とはなんでしょう?(東海道らぐ 初オフ会 in オープンソースカンファレンス 2012 Kansai@Kyoto 資料)clu2cの動態保存とはなんでしょう?(東海道らぐ 初オフ会 in オープンソースカンファレンス 2012 Kansai@Kyoto 資料)
clu2cの動態保存とはなんでしょう?(東海道らぐ 初オフ会 in オープンソースカンファレンス 2012 Kansai@Kyoto 資料)
 
A story of porting OpenBSD/luna88k
A story of porting OpenBSD/luna88kA story of porting OpenBSD/luna88k
A story of porting OpenBSD/luna88k
 
StackExchangeで見たシステムプログラミング案件
StackExchangeで見たシステムプログラミング案件StackExchangeで見たシステムプログラミング案件
StackExchangeで見たシステムプログラミング案件
 
Rubyの御先祖CLUのお話(OSC 2011 Shimane LT 資料)
Rubyの御先祖CLUのお話(OSC 2011 Shimane LT 資料)Rubyの御先祖CLUのお話(OSC 2011 Shimane LT 資料)
Rubyの御先祖CLUのお話(OSC 2011 Shimane LT 資料)
 
Bsd suki
Bsd sukiBsd suki
Bsd suki
 
KOGEI & KAIT Funnel WS
KOGEI & KAIT Funnel WSKOGEI & KAIT Funnel WS
KOGEI & KAIT Funnel WS
 
ROP Illmatic: Exploring Universal ROP on glibc x86-64 (ja)
ROP Illmatic: Exploring Universal ROP on glibc x86-64 (ja)ROP Illmatic: Exploring Universal ROP on glibc x86-64 (ja)
ROP Illmatic: Exploring Universal ROP on glibc x86-64 (ja)
 
スタート低レイヤー #0
スタート低レイヤー #0スタート低レイヤー #0
スタート低レイヤー #0
 
Rubyの御先祖CLUのお話(原本)
Rubyの御先祖CLUのお話(原本)Rubyの御先祖CLUのお話(原本)
Rubyの御先祖CLUのお話(原本)
 
NetBSDのクロスビルドのしくみとインストール済みLive Imageの作成
NetBSDのクロスビルドのしくみとインストール済みLive Imageの作成NetBSDのクロスビルドのしくみとインストール済みLive Imageの作成
NetBSDのクロスビルドのしくみとインストール済みLive Imageの作成
 
OpenStack + OpenContrailで実現するマルチテナントIaaSのご紹介
OpenStack + OpenContrailで実現するマルチテナントIaaSのご紹介OpenStack + OpenContrailで実現するマルチテナントIaaSのご紹介
OpenStack + OpenContrailで実現するマルチテナントIaaSのご紹介
 
ロボットシステムのつくりかた 〜Robot Operating Systemというアプローチ〜
ロボットシステムのつくりかた 〜Robot Operating Systemというアプローチ〜ロボットシステムのつくりかた 〜Robot Operating Systemというアプローチ〜
ロボットシステムのつくりかた 〜Robot Operating Systemというアプローチ〜
 
コンテナ情報交換会2
コンテナ情報交換会2コンテナ情報交換会2
コンテナ情報交換会2
 
197x Timer with Your Messages
197x Timer with Your Messages197x Timer with Your Messages
197x Timer with Your Messages
 
OpenCLに触れてみよう
OpenCLに触れてみようOpenCLに触れてみよう
OpenCLに触れてみよう
 
FOLIOのコードを動かしてみた
FOLIOのコードを動かしてみたFOLIOのコードを動かしてみた
FOLIOのコードを動かしてみた
 
Open modeler
Open modelerOpen modeler
Open modeler
 
Tizen & Crosswalk
Tizen & CrosswalkTizen & Crosswalk
Tizen & Crosswalk
 
OpenSolaris Printing Environment
OpenSolaris Printing EnvironmentOpenSolaris Printing Environment
OpenSolaris Printing Environment
 

Plus de 洋史 東平

Microsoft Excelでgoogle chromeを動かした話
Microsoft Excelでgoogle chromeを動かした話Microsoft Excelでgoogle chromeを動かした話
Microsoft Excelでgoogle chromeを動かした話洋史 東平
 
関東地方で北海道を味わおう~上京した皆様へ~
関東地方で北海道を味わおう~上京した皆様へ~関東地方で北海道を味わおう~上京した皆様へ~
関東地方で北海道を味わおう~上京した皆様へ~洋史 東平
 
Microsoft ExcelでWebブラウザ(Selenium WebDriver)を動かした話
Microsoft ExcelでWebブラウザ(Selenium WebDriver)を動かした話Microsoft ExcelでWebブラウザ(Selenium WebDriver)を動かした話
Microsoft ExcelでWebブラウザ(Selenium WebDriver)を動かした話洋史 東平
 
関東地方で北海道を味わおう ~北海道の宿がとれない皆様へ~
関東地方で北海道を味わおう ~北海道の宿がとれない皆様へ~関東地方で北海道を味わおう ~北海道の宿がとれない皆様へ~
関東地方で北海道を味わおう ~北海道の宿がとれない皆様へ~洋史 東平
 
大人の事情が自販機に超自然現象を起こした アマゾンライダー編
大人の事情が自販機に超自然現象を起こした アマゾンライダー編大人の事情が自販機に超自然現象を起こした アマゾンライダー編
大人の事情が自販機に超自然現象を起こした アマゾンライダー編洋史 東平
 
大人の事情が自販機に 超自然現象を起こした Xライダー編
大人の事情が自販機に 超自然現象を起こした Xライダー編大人の事情が自販機に 超自然現象を起こした Xライダー編
大人の事情が自販機に 超自然現象を起こした Xライダー編洋史 東平
 
大人の事情は自販機に超自然現象を起こさなかったのか? ライダーマン
大人の事情は自販機に超自然現象を起こさなかったのか? ライダーマン大人の事情は自販機に超自然現象を起こさなかったのか? ライダーマン
大人の事情は自販機に超自然現象を起こさなかったのか? ライダーマン洋史 東平
 
大人の事情が自販機に超自然現象を起こした V3(ヴイスリャー)
大人の事情が自販機に超自然現象を起こした V3(ヴイスリャー)大人の事情が自販機に超自然現象を起こした V3(ヴイスリャー)
大人の事情が自販機に超自然現象を起こした V3(ヴイスリャー)洋史 東平
 
大人の事情が自販機に超自然現象を起こした その2
大人の事情が自販機に超自然現象を起こした その2大人の事情が自販機に超自然現象を起こした その2
大人の事情が自販機に超自然現象を起こした その2洋史 東平
 
大人の事情が自販機に超自然現象を起こした
大人の事情が自販機に超自然現象を起こした大人の事情が自販機に超自然現象を起こした
大人の事情が自販機に超自然現象を起こした洋史 東平
 
自販機の超自然現象 果たして収まるか?
自販機の超自然現象 果たして収まるか?自販機の超自然現象 果たして収まるか?
自販機の超自然現象 果たして収まるか?洋史 東平
 
続・自動販売機の大人の事情をテストした
続・自動販売機の大人の事情をテストした続・自動販売機の大人の事情をテストした
続・自動販売機の大人の事情をテストした洋史 東平
 
自動販売機の大人の事情をテストした
自動販売機の大人の事情をテストした自動販売機の大人の事情をテストした
自動販売機の大人の事情をテストした洋史 東平
 
PowerShellでWebブラウザ(Selenium Webdriver)を動かした話
PowerShellでWebブラウザ(Selenium Webdriver)を動かした話PowerShellでWebブラウザ(Selenium Webdriver)を動かした話
PowerShellでWebブラウザ(Selenium Webdriver)を動かした話洋史 東平
 
bashでWebブラウザ(Selenium WebDriver)を動かした話
bashでWebブラウザ(Selenium WebDriver)を動かした話bashでWebブラウザ(Selenium WebDriver)を動かした話
bashでWebブラウザ(Selenium WebDriver)を動かした話洋史 東平
 
Selenium WebDriverでFreeBSD 10.2のGoogle Chromeを自動実行
Selenium WebDriverでFreeBSD 10.2のGoogle Chromeを自動実行Selenium WebDriverでFreeBSD 10.2のGoogle Chromeを自動実行
Selenium WebDriverでFreeBSD 10.2のGoogle Chromeを自動実行洋史 東平
 
FreeBSD 10.2(amd64)でSelenium WebDriverを動かしてみた
FreeBSD 10.2(amd64)でSelenium WebDriverを動かしてみたFreeBSD 10.2(amd64)でSelenium WebDriverを動かしてみた
FreeBSD 10.2(amd64)でSelenium WebDriverを動かしてみた洋史 東平
 
Solaris 11.3(x86)でSelenium WebDriverを動かしてみた
Solaris 11.3(x86)でSelenium WebDriverを動かしてみたSolaris 11.3(x86)でSelenium WebDriverを動かしてみた
Solaris 11.3(x86)でSelenium WebDriverを動かしてみた洋史 東平
 

Plus de 洋史 東平 (20)

Microsoft Excelでgoogle chromeを動かした話
Microsoft Excelでgoogle chromeを動かした話Microsoft Excelでgoogle chromeを動かした話
Microsoft Excelでgoogle chromeを動かした話
 
関東地方で北海道を味わおう~上京した皆様へ~
関東地方で北海道を味わおう~上京した皆様へ~関東地方で北海道を味わおう~上京した皆様へ~
関東地方で北海道を味わおう~上京した皆様へ~
 
Microsoft ExcelでWebブラウザ(Selenium WebDriver)を動かした話
Microsoft ExcelでWebブラウザ(Selenium WebDriver)を動かした話Microsoft ExcelでWebブラウザ(Selenium WebDriver)を動かした話
Microsoft ExcelでWebブラウザ(Selenium WebDriver)を動かした話
 
関東地方で北海道を味わおう ~北海道の宿がとれない皆様へ~
関東地方で北海道を味わおう ~北海道の宿がとれない皆様へ~関東地方で北海道を味わおう ~北海道の宿がとれない皆様へ~
関東地方で北海道を味わおう ~北海道の宿がとれない皆様へ~
 
ぼくnmonです
ぼくnmonですぼくnmonです
ぼくnmonです
 
大人の事情が自販機に超自然現象を起こした アマゾンライダー編
大人の事情が自販機に超自然現象を起こした アマゾンライダー編大人の事情が自販機に超自然現象を起こした アマゾンライダー編
大人の事情が自販機に超自然現象を起こした アマゾンライダー編
 
大人の事情が自販機に 超自然現象を起こした Xライダー編
大人の事情が自販機に 超自然現象を起こした Xライダー編大人の事情が自販機に 超自然現象を起こした Xライダー編
大人の事情が自販機に 超自然現象を起こした Xライダー編
 
大人の事情は自販機に超自然現象を起こさなかったのか? ライダーマン
大人の事情は自販機に超自然現象を起こさなかったのか? ライダーマン大人の事情は自販機に超自然現象を起こさなかったのか? ライダーマン
大人の事情は自販機に超自然現象を起こさなかったのか? ライダーマン
 
大人の事情が自販機に超自然現象を起こした V3(ヴイスリャー)
大人の事情が自販機に超自然現象を起こした V3(ヴイスリャー)大人の事情が自販機に超自然現象を起こした V3(ヴイスリャー)
大人の事情が自販機に超自然現象を起こした V3(ヴイスリャー)
 
大人の事情が自販機に超自然現象を起こした その2
大人の事情が自販機に超自然現象を起こした その2大人の事情が自販機に超自然現象を起こした その2
大人の事情が自販機に超自然現象を起こした その2
 
大人の事情が自販機に超自然現象を起こした
大人の事情が自販機に超自然現象を起こした大人の事情が自販機に超自然現象を起こした
大人の事情が自販機に超自然現象を起こした
 
自販機の超自然現象 果たして収まるか?
自販機の超自然現象 果たして収まるか?自販機の超自然現象 果たして収まるか?
自販機の超自然現象 果たして収まるか?
 
続・自動販売機の大人の事情をテストした
続・自動販売機の大人の事情をテストした続・自動販売機の大人の事情をテストした
続・自動販売機の大人の事情をテストした
 
自動販売機の大人の事情をテストした
自動販売機の大人の事情をテストした自動販売機の大人の事情をテストした
自動販売機の大人の事情をテストした
 
PowerShellでWebブラウザ(Selenium Webdriver)を動かした話
PowerShellでWebブラウザ(Selenium Webdriver)を動かした話PowerShellでWebブラウザ(Selenium Webdriver)を動かした話
PowerShellでWebブラウザ(Selenium Webdriver)を動かした話
 
bashでWebブラウザ(Selenium WebDriver)を動かした話
bashでWebブラウザ(Selenium WebDriver)を動かした話bashでWebブラウザ(Selenium WebDriver)を動かした話
bashでWebブラウザ(Selenium WebDriver)を動かした話
 
OSUnC川越2016
OSUnC川越2016OSUnC川越2016
OSUnC川越2016
 
Selenium WebDriverでFreeBSD 10.2のGoogle Chromeを自動実行
Selenium WebDriverでFreeBSD 10.2のGoogle Chromeを自動実行Selenium WebDriverでFreeBSD 10.2のGoogle Chromeを自動実行
Selenium WebDriverでFreeBSD 10.2のGoogle Chromeを自動実行
 
FreeBSD 10.2(amd64)でSelenium WebDriverを動かしてみた
FreeBSD 10.2(amd64)でSelenium WebDriverを動かしてみたFreeBSD 10.2(amd64)でSelenium WebDriverを動かしてみた
FreeBSD 10.2(amd64)でSelenium WebDriverを動かしてみた
 
Solaris 11.3(x86)でSelenium WebDriverを動かしてみた
Solaris 11.3(x86)でSelenium WebDriverを動かしてみたSolaris 11.3(x86)でSelenium WebDriverを動かしてみた
Solaris 11.3(x86)でSelenium WebDriverを動かしてみた
 

Dernier

SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものですiPride Co., Ltd.
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...Toru Tamaki
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A surveyToru Tamaki
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Danieldanielhu54
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Yuma Ohgami
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNetToru Tamaki
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdftaisei2219
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略Ryo Sasaki
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムsugiuralab
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)Hiroki Ichikura
 

Dernier (10)

SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
 

clu2cは64ビットOSでも使えます (OSC 2012 Hiroshima LT用資料)

  • 1. clu2cは64ビットOSで も使えます CLU動態保存整備士 東平洋史
  • 2. CLU関連の私の略歴を 1988年4月 東京工業大学第1類に入学 1989年4月 東京工業大学理学部情報科学科に配属 1990年4月 情報科学実験第二(木村泉先生担当)受講 →CLU、ncluと出会う 1991年4月 木村泉研究室に入る →clu2cの開発始まる 1991年9月末 卒業論文のテーマ決まる 1994年3月 東京工業大学大学院博士課程前期修了 →CLUから離れる 2009年11月頃 京都御所へ行くついでにKOFへ行くことにし、 そういえばclu2cもオープンソースだよなあ、と 思い出す。→これが活動開始のきっかけ。
  • 3. CLU(くるう)とは何ですか? プログラミング言語 • MITのBarbara Liskov考案(1974) ← 結構、古い • 強い型付 • コンパイル時に全てのオブジェクトの型が決まる • でも、任意の場所で変数宣言可能 • 抽象型(cluster)を定義可能 • 継承はできない • 複数の戻り値が可能 → Rubyもパクった取り入れた a:int, b: real := type$procedure(c, d) • 変数の値は全てヒープ上のオブジェクト • Garbage Collection • イテレータ → Rubyのブロックになった • 例外処理 → Rubyもパクった取り入れた いわばRubyの先祖です
  • 4. CLUのプログラム例 start_up = proc() stdout:stream:= stream$primary_output() stream$putl(stdout, “Hello World!”) end start_up • 変数は使い始める場所で宣言 – 変数名: 型名 – 変数名: 型名 := 初期設定値 • 型$手続き名 という形で手続きを呼び出し
  • 5. clu2c(くるーつーしー)とは何ですか? プログラミング言語CLUの処理系 • プログラミング言語CLUで書かれたプログラム をCで書かれたプログラムに変換(CLU to C) • Cで書かれたプログラムを実行形式(a.out)に コンパイル CLUの clu2c Cの プログラム プログラム 実行形式 clulink a.out ライブラリ
  • 6. 稼働確認済みの環境 • Cygwin • CentOS 6.3 • Ubuntu 12.04.1 – i386 – i386 • Fedora 17 – amd64 – i386 • OpenSUSE 12.2 • FreeBSD 9.0 – 32bit – i386 – 64bit • NetBSD 5.1.2 • OpenIndiana 151a5 – i386 – i386 • Vine61 • Solaris 11/11 – i686
  • 7. デモ 次のどれかで動かしますよ • Cygwin • OpenIndiana 151a5 • Ubuntu 12.04.1 – i386 – i386 • Solaris 11/11 – amd64 • CentOS 6.3 • OpenSUSE 12.2 – i386 – 32bit • Fedora 17 – 64bit – i386
  • 8. clu2cの実行例 CLUで書いたプログラム Cのプログラム(一部) 赤字は2バイト文字使用部分 int AFstart__up() { start_up = proc() if (OFstream_Dprimary__output() == SIG) { 標準出力:stream:= stream$primary_output() goto except0; } for i:int in int$from_to(1, 5) do LV_X49383d603d504e4f = 標準出力!putl(”No. ” || retval_area[0]; i!unparse() || for (t1 = 1; t1 <= 5; t1++) { ” Hello World!”) OFint_Dunparse(t1); end (略) end start_up } }
  • 11. 整数型とビット数 データ システ char short int long long ポイ モデル ム long ンタ ILP32 Win32 8 16 32 32 64 32 LLP64 Win64 8 16 32 32 64 64 LP64 64bit 8 16 32 64 64 64 Linux ILP64 8 16 64 64 64 64 ILP32…ポインタは32bit → long LLP64、LP64、ILP64…ポインタは64bit → long long
  • 13. ヘッダファイルを修正 プリプロセッサで判定 #if defined(__LP64__) || • 64ビット環境 defined(__LLP64__) || ポインタ(object型)を defined(__ILP64__) long longで宣言(64bit) typedef long long object; • 32ビット環境 #else ポインタ(object型)を typedef long object; longで宣言(32bit) #endif ほぼこれだけで済みました
  • 14.
  • 15. clu2c現在の状態 開発自体は終了 • 木村泉先生退官により木村泉研究室消滅 • 東工大 理学部 情報科学科での公開は終了 →フランスのFTPサーバからソースを回収 • 現在は「動態保存」 • こちらでソースを公開中 – http://touhei.sakura.ne.jp/clu2c/ – http://sourceforge.jp/projects/clu2c/
  • 16. clu2cに残る課題 いずれもプロジェクト終了後に発生したもの • UTF対応 – ISO-2022-JP、Shift_JIS、EUC-JPには対応済み • ドキュメントの日本語化
  • 17. clu2cプロジェクト参加者 • 江原善(初代リーダー) プロジェクト終了後 • 木原誠司(コンパイラ実装) • 前田修吾さん • 地引昌弘(デバッガなど) – Linuxへの移植およびPorts化 • 孫音(ライブラリ実装) • 東平洋史 • 牛嶋哲(二代目リーダー) – 前田さんの改造をCLU使用部 分に反映 – 日本語文字使用部分実装 – Cygwin、Ubuntu 9.04への移植 • 富沢伸行(ライブラリ実装) – 64bit環境への対応 • 浦野幹夫(ライブラリ実装) • 野澤義雄(ライブラリ実装) • 林智子(ライブラリ実装) • 森村健司 – Human68k、MS-DOSへの移植 • 森玲人(デバッガ担当) • 東平洋史(最適化など) など
  • 18. 参考文献 • CLU Reference Manual – Liskov, B., Atkinson, R.R., Bloom, T., Moss, E.B., Schaffert, R. and Snyder, A. 著 – http://publications.csail.mit.edu/lcs/specpub.php?id=793 • CLUとその仲間たち – 久野靖 著 – 共立出版 bit 1989年5月号~12月号 – http://www.oreilly.co.jp/books/9784873113630/#files • 開発効率と移植性を重視したCLU言語処理系の作成 – 江原善 著 – 東京工業大学理工学研究科情報科学専攻 修士論文 – http://touhei.sakura.ne.jp/clu2c/clu2c-thesis.tar.gz