Skip to content

NagayamaRyoga/llvm-watermarker

Repository files navigation

LLVM Watermarker

LLVMを用いた電子透かし埋め込み器

開発環境

Language: C++17

OS: Ubuntu 18.04

Compilers: GCC 7.3.0, Clang 7.0.0, rustc 1.31.1

Libraries: LLVM 7.0

命名規約

種別 規約 理由 備考
UpperCamelCase 慣例
名前空間 snake_case 好み
ローカル変数/引数 snake_case 好み
グローバル変数 g_snake_case 慣例 使わない
ファイルローカル変数 snake_case 好み staticではなくanonymous namespaceを使う
関数 snake_case なんとなく
メンバ変数 snake_case_ 慣例
staticメンバ変数 snake_case なんとなく 必要なければ避ける
メンバ関数 snake_case なんとなく
メンバ型 snake_case 標準準拠
列挙子 UpperCamelCase 好み かっこいい気がする
マクロ SNAKE_CASE 慣例 必要ある時のみ

プロジェクトのダウンロード

$ git clone [email protected]:NagayamaRyoga/llvm-watermarker.git --recursive
$ cd llvm-watermarker

ビルド

$ make

実行方法

# コードレイアウトによる埋め込み
$ opt -load=bin/src/nykk.so -block-wm -watermark="<watermark>" -o <output-llvm-bitcode> <input-llvm-bitcode>
# 命令の変更による埋め込み
$ opt -load=bin/src/nykk.so -inst-wm -watermark="<watermark>" -o <output-llvm-bitcode> <input-llvm-bitcode>