link もっと前
   2019年 6月 14日 -
      2019年 6月 5日  
link もっと後

link 未来から過去へ表示(*)
link 過去から未来へ表示

日々

link permalink

GCC を調べる - その 3 - RTL の出力

GCC の内部情報を出力してみます。GCC のバックエンドは GIMPLE と RTL (Register Transfer Language) があります。

ざっくり言って C 言語(など)→ GIMPLE → RTL → アセンブラの順に変換されます。GIMPLE の内容はまだよく知らないので説明できません……。今回は RTL を見ていこうと思います。

RTL を出力する方法

GCC で RTL を出力するには、コンパイル時に -fdump-rtl-all オプションを付けます。

RTL の出力オプション

$ riscv32-unknown-elf-gcc a.c -fdump-rtl-all

試しに下記のコードをコンパイルし、RTL を出力させると、

サンプルコード(C言語, a.c)

void main()
{
        int a = 1, b = 2, c;

        c = a + b;

        return c;
}

下記のような RTL が出力されます(GCC-8.3.0 での結果)。C 言語のファイル名が a.c だとすると、RTL は a.c.NNNr.XXXX という名前で出力されます。NNN は最適化パスの番号、XXXX は最適化パスの名前が入ります。

サンプルコード(RTL, a.c.235r.vregs)

;; Function main (main, funcdef_no=0, decl_uid=1514, cgraph_uid=0, symbol_order=0)

(note 1 0 3 NOTE_INSN_DELETED)
(note 3 1 2 2 [bb 2] NOTE_INSN_BASIC_BLOCK)
(note 2 3 5 2 NOTE_INSN_FUNCTION_BEG)
(insn 5 2 6 2 (set (reg:SI 104)
        (const_int 1 [0x1])) "a.c":3 132 {*movsi_internal}
     (nil))
(insn 6 5 7 2 (set (mem/c:SI (plus:SI (reg/f:SI 65 frame)
                (const_int -4 [0xfffffffffffffffc])) [1 a+0 S4 A32])
        (reg:SI 104)) "a.c":3 132 {*movsi_internal}
     (nil))
(insn 7 6 8 2 (set (reg:SI 105)
        (const_int 2 [0x2])) "a.c":3 132 {*movsi_internal}
     (nil))
(insn 8 7 9 2 (set (mem/c:SI (plus:SI (reg/f:SI 65 frame)
                (const_int -8 [0xfffffffffffffff8])) [1 b+0 S4 A32])
        (reg:SI 105)) "a.c":3 132 {*movsi_internal}
     (nil))
(insn 9 8 10 2 (set (reg:SI 107)
        (mem/c:SI (plus:SI (reg/f:SI 65 frame)
                (const_int -4 [0xfffffffffffffffc])) [1 a+0 S4 A32])) "a.c":5 132 {*movsi_internal}
     (nil))
(insn 10 9 11 2 (set (reg:SI 108)
        (mem/c:SI (plus:SI (reg/f:SI 65 frame)
                (const_int -8 [0xfffffffffffffff8])) [1 b+0 S4 A32])) "a.c":5 132 {*movsi_internal}
     (nil))
(insn 11 10 12 2 (set (reg:SI 106)
        (plus:SI (reg:SI 107)
            (reg:SI 108))) "a.c":5 3 {addsi3}
     (nil))
(insn 12 11 17 2 (set (mem/c:SI (plus:SI (reg/f:SI 65 frame)
                (const_int -12 [0xfffffffffffffff4])) [1 c+0 S4 A32])
        (reg:SI 106)) "a.c":5 132 {*movsi_internal}
     (nil))
(insn 17 12 0 2 (const_int 0 [0]) "a.c":7 240 {nop}
     (nil))

RTL は最適化処理を実行するたびに内容が変わるため、たくさんのファイルが出力されます。上記の RTL は GIMPLE から RTL に変換した後、命令割当のみ行った状態のものです。最適化パス名でいうと vregs というパスが終わった後の RTL です。

長くなってきたので分割します。

[編集者: すずき]
[更新: 2019年 6月 17日 22:25]
link 編集する

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



link permalink

広域水道事業

Facebook で都道府県営水道は東京だけではないと教えていただきました。

以前(2019年 6月 7日の日記参照)書いたように、水道は基本的には市町村が運営するものです。市町村で維持が難しくなった水道事業を都道府県が引き取る形になっているせいか、各県ごとに運営形態も提供範囲もバラバラです。

全ての都道府県を全て調べるのは大変なので、人口の多そうな都道府県を中心に水道事業の統合について、調べてみました。

神奈川県: 企業局 水道部経営課
横浜市、川崎市を除く西部ほぼ全域
県営水道の給水区域 - 神奈川県ホームページ
千葉県: 企業局
県営ではなく、市町村がいくつか協力し企業団(※1)を形成
千葉県内の各水道事業体のご案内 / 千葉県
愛知県: 企業庁 水道事業課
県営水道と企業団(※2)の複合で、名古屋市、東部一部地域を除く全域
事業概要(水道用水供給事業) - 愛知県
大阪府: 大阪広域水道企業団(府営水道を引き継いだ)
泉南、北部の一部市町村
大阪府域の水道の広域化について | 大阪広域水道企業団
京都府: 京都府営水道事務所、府民環境部公営企画課
南部の人口密集地
水道事業のあらまし / 京都府ホームページ

東京以外にも色々なところでやっていますね。共通しているのは人口が多い、供給面積が広い、ダムから遠く水源がないなど、1市町村で水道を賄えなくなっていることでしょうか。

今まで住んだことのある市町村は、偶然いずれも広域水道に入っていませんでした。つまり田舎ばかりだったということか……?

※1: 千葉県の水道企業団
九十九里地域水道企業団(匝瑳市、東金市、茂原市、横芝光町、大網白里市、九十九里町、山武市、一宮町、睦沢町、長生村、白子町、長柄町、長南町)
北千葉広域水道企業団(千葉県水道局、松戸市、野田市、柏市、流山市、我孫子市、習志野市、八千代市)
東総広域水道企業団(銚子市、旭市、東庄町)
君津広域水道企業団(千葉県水道局、木更津市、君津市、富津市、袖ケ浦市)
印旛郡市広域市町村圏事務組合水道企業部(成田市、佐倉市、四街道市、酒々井町、八街市、印西市、白井市)
南房総広域水道企業団(館山市、勝浦市、鴨川市、大多喜町、いすみ市、御宿町、鋸南町、南房総市、三芳(企))

※2: 愛知県の水道企業団
愛知中部水道企業団(豊明市・日進市・みよし市・長久手市・東郷町)
北名古屋水道企業団(北名古屋市・豊山町)、丹羽広域事務組合(大口町・扶桑町)
海部南部水道企業団(愛西市・弥富市・飛島村)

メモ: 技術系の話は Facebook から転記しておくことにした。大幅加筆した。

[編集者: すずき]
[更新: 2019年 8月 26日 00:09]
link 編集する

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



link permalink

東京のおいしい水

普段、蛇口から出てくる水道水をグイグイ飲んでいますが、特に味や臭いが気になることはありません。以前、つくばに住んでいた時は水道水から異臭がしていたので、天と地の差です。

どこの水か気になったので、調べていたら、東京都水道局がとても便利なサイトを提供してくれていました(配水系統〜ご家庭の水道水情報 | 水源・水質 | 東京都水道局)。住所を入力すると、配水している浄水場、水質検査の結果を見ることができます。

我が家は大田区の東、つまり羽田空港側です。サイトで調べると三郷浄水場から水が来ているようです。家から 30kmくらい離れてます。埼玉からはるばるお疲れ様です……。

水源は江戸川で、水質の良い川ではありませんが、その分浄水場が頑張っていて(高度浄水設備を備えている)、浄水後の水質はかなり良いようです。

メモ: 技術系の話は Facebook から転記しておくことにした。

[編集者: すずき]
[更新: 2019年 6月 9日 11:14]
link 編集する

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



link permalink

東京の不思議な水道

東京の水道は他の地域に比べるとちょっと変わっています。

水道のことは「東京都」水道局に連絡しますよね?東京以外、例えば以前住んでいた高槻では「高槻市」水道部に連絡します。「大阪府」ではないのです。

水道法は水道を市町村レベルで管理、運営することを定めています(水道法 第六条の2)。特別区(東京23区)については下記規定があり、東京都が管理するものと定められています。

第四十九条
特別区の存する区域においては、この法律中「市町村」とあるのは、「都」と読み替えるものとする。

しかし東京都は23区以外も、武蔵野市、昭島市、羽村市及び檜原村を除いて「東京都」が全ての市町村の水道を管理します。これはかなり変わった運用形態だと思います。

経緯はリンク先(多摩の水道 | 水道事業紹介 | 東京都水道局 - 多摩水道について)にさらっと書かれています。超人口密集地だと、水道一つとっても苦労が多いんですね……。

メモ: 技術系の話は Facebook から転記しておくことにした。

[編集者: すずき]
[更新: 2019年 6月 9日 11:03]
link 編集する

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



link もっと前
   2019年 6月 14日 -
      2019年 6月 5日  
link もっと後

管理用メニュー

link 記事を新規作成

合計:  counter total
本日:  counter today

link About www.katsuster.net
RDF ファイル RSS 1.0
QR コード QR コード

最終更新: 9/20 00:01

カレンダー

<2019>
<<<06>>>
------1
2345678
9101112131415
16171819202122
23242526272829
30------

最近のコメント 5件

  • link 19年09月01日
    すずき 「私も正直びっくりです。間違って違う製品を...」
    (更新:09/04 23:39)
  • link 19年09月01日
    hdk 「車向けの製品の中でも、車載コンピューター...」
    (更新:09/02 23:20)
  • link 19年07月18日
    hdk 「あっ、AAMはマニュアルのオペレーション...」
    (更新:07/25 00:02)
  • link 19年07月18日
    すずき 「AAM(ASCII Adjust AX ...」
    (更新:07/24 22:22)
  • link 19年07月18日
    hdk 「加算減算は符号のありなしどちらも命令が同...」
    (更新:07/24 07:25)

最近の記事 3件

link もっとみる
  • link 19年09月18日
    すずき 「[linux-next が久しぶりに更新された] ここしばらく更新...」
    (更新:09/20 00:01)
  • link 19年09月17日
    すずき 「[今まで知らなかった make の挙動] シェルから make に...」
    (更新:09/19 02:27)
  • link 19年09月07日
    すずき 「[Sin 波の美しさ勝負] 最近 linux-next で Roc...」
    (更新:09/08 13:17)

こんてんつ

open/close wiki
open/close Java API

過去の日記

open/close 2002年
open/close 2003年
open/close 2004年
open/close 2005年
open/close 2006年
open/close 2007年
open/close 2008年
open/close 2009年
open/close 2010年
open/close 2011年
open/close 2012年
open/close 2013年
open/close 2014年
open/close 2015年
open/close 2016年
open/close 2017年
open/close 2018年
open/close 2019年
open/close 過去日記について

その他の情報

open/close アクセス統計
open/close サーバ一覧
open/close サイトの情報