llvm clang esl 一些常用指令

2021-10-22 15:32:49 字數 1962 閱讀 8253

1、clang -emit-llvm -c test.c

2、llvm-link x.bc y.bc z.bc … -o final.bc

3、llvm-dis x.bc && **im x.bc 多級指標、stl、類

lli hw.ll

gdb /home/zhgu/workspace/llvm-6.0.0/build-debug/bin/clang-6.0

clang -o -emit-llvm -c struct.c -o struct.bc

clang -s -fobjc-arc struct.bc -o struct.s

clang -c struct.s -o struct.o

llc -stop-before=machine-cp struct.ll -o struct.mir

llc llvm編譯器,將.bc編譯成.o clang a.o.bc -o struct

llc a.o.bc -o hello.s gcc hello.s -o hello

optimizer opt;

opt.reset();

opt.setoutputfilename(「before_replace_double_gep.bc」);

opt.setnooutput(false);

opt.optimize(*module_);

opt.reset();

opt.setoutputfilename(「after_replace_double_gep.bc」);

opt.setnooutput(false);

opt.optimize(*module_);

esl 編譯

workspace/esl_0.1_2019/esl_0.1/

./build/make_pro

make -j12

gdb …/bin/linux_64/esl-debug

1、 全域性識別符號(函式,全域性變數)以「@」字元開頭。 本地識別符號(註冊名稱,型別)以』%'字元開頭。

2、'getelementptr』指令用於獲取聚合資料結構的子元素的位址。 它僅執行位址計算,不訪問記憶體。

= getelementptr inbounds , * *

3、llvm-ir的變數有三種,通過字首@或者%的形式區分,其中@表示全域性變數,%表示區域性變數:

%或者@接數字,表示的是臨時變數,在乙個函式中,從0開始編號使用。比如%0,%1,。。

%或者@接字串,表示有名字的變數,可以任意使用;

第三類就是立即數

4\add nsw是有符號的相加

5\getelementptr inbounds即使獲得陣列對應元素的指標

6\align : align 的意思是「對齊」

「對齊」的意義是:若乙個結構中含有乙個int,乙個char,乙個int則他應該占用4*3=12位元組,雖然char本身只占用乙個位元組的空間,但由於要向4「對齊」所以其占用記憶體空間仍為4(根據大端小端分別儲存)

7\metadata 在 ir 檔案中是以「記錄」的形式的組織的。每一條 metadata 記錄都單獨占有一行。metadata 記錄可以看成「結構體變數」。它可以包含整形資料、字串資料或者其他 metada 資料。

8\llvm的函式分為declare和definition兩種。如上所示,declare指的是實現在當前翻譯單元外的函式,definition反之

p *(static_castllvm::pointertype*(constexpr->gettype())->getelementtype())

type * val_op_type = cast(val_op->gettype())->getelementtype();

val_op->gettype()->getpointerelementtype()->gettypeid()

llvm-as a.ll (a.ll->a.bc)

gdb …/bin/linux_64/esl-debug

mysql的一些基本指令 mysql 一些常用指令

登陸 1 mysql u root p 登陸,輸入root密碼 退出登陸 mysql exit mysql 為所有ip授權 mysql grant all privileges on to root identified by 123456 with grant option 為單一ip授權 就是想...

javaScript的內建物件以及一些常用的方法

js內建物件 string物件 字串物件,提供了對字串進行操作的屬性和方法。array物件 陣列物件,提供了陣列操作方面的屬性和方法。date物件 日期時間物件,可以獲取系統的日期時間資訊。boolean物件 布林物件,乙個布林變數就是乙個布林物件。沒有可用的屬性和方法 number物件 數值物件。...

HDFS的一些常問問題

為什麼hdfs的blocksize是128m?磁碟的塊大小為512byte,hdfs的塊大小為128mb,主要原因是為了減少磁碟的尋道時間。一次尋道大約需要10ms,目前市面上的千兆網絡卡速度為100mb s,尋道時間應該只佔傳輸時間的1 我們需要設定一塊的大小為100m,因此設定塊的大小為128m...