|
|
source_filename = "assign_test.sy"
|
|
|
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"
|
|
|
target triple = "x86_64-pc-linux-gnu"
|
|
|
; 配置信息
|
|
|
|
|
|
define dso_local i32 @main() { ; 定义主函数
|
|
|
%1 = alloca float, align 4 ; 分配一个float, 相当于b
|
|
|
%2 = alloca [2 x i32], align 4 ; 分配两个i32,相当于a[2]
|
|
|
store float 0x3FFCCCCCC0000000, float* %1, align 4 ; 相当于b=1.8,用二进制表示1.8
|
|
|
%3 = getelementptr [2 x i32], [2 x i32]* %2, i64 0, i64 0 ; 获得%2的第0个元素的指针,下同
|
|
|
store i32 2, i32* %3 ; 将这个值赋给2,即a[0]=2,相当于a[2]={2}。
|
|
|
%4 = getelementptr [2 x i32], [2 x i32]* %2, i64 0, i64 0
|
|
|
%5 = load i32, i32* %4, align 4
|
|
|
%6 = sitofp i32 %5 to float ; 把%5(也就是a[0])转成float
|
|
|
%7 = load float, float* %1, align 4
|
|
|
%8 = fmul float %6, %7
|
|
|
%9 = fptosi float %8 to i32 ; 把%8(也就是a[0]*b)转成i32
|
|
|
%10 = getelementptr [2 x i32], [2 x i32]* %2, i64 0, i64 1 ; 获得%2的第1个元素的指针,下同
|
|
|
store i32 %9, i32* %10, align 4 ; 把%9的结果存储在%10(即a[1]中)
|
|
|
%11 = getelementptr [2 x i32], [2 x i32]* %2, i64 0, i64 1
|
|
|
%12 = load i32, i32* %11, align 4 ; 读出%10(即a[1])的值
|
|
|
ret i32 %12 ; main 返回
|
|
|
}
|
|
|
|