More testing
This commit is contained in:
parent
098ab080ca
commit
1671ce2285
1
3-lang0ll/.gitignore
vendored
1
3-lang0ll/.gitignore
vendored
@ -2,5 +2,6 @@
|
|||||||
/lang0ll*.exe
|
/lang0ll*.exe
|
||||||
/lang0ll*.ll
|
/lang0ll*.ll
|
||||||
/lang0ll*.o
|
/lang0ll*.o
|
||||||
|
/lang0ll*.s
|
||||||
/foo.exe
|
/foo.exe
|
||||||
/foo.ll
|
/foo.ll
|
||||||
|
|||||||
71
3-lang0ll/backup.ll
Normal file
71
3-lang0ll/backup.ll
Normal file
@ -0,0 +1,71 @@
|
|||||||
|
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"
|
||||||
|
|
||||||
|
declare noalias i8* @malloc(i64)
|
||||||
|
|
||||||
|
define i8* @__add(i8* %lft, i8* %rgt)
|
||||||
|
{
|
||||||
|
%lft_len = call i64 @__strlen(i8* %lft)
|
||||||
|
%rgt_len = call i64 @__strlen(i8* %rgt)
|
||||||
|
%new_len = add i64 %lft_len, %rgt_len
|
||||||
|
|
||||||
|
%res = call i8* @malloc(i64 %new_len)
|
||||||
|
; todo: copy lft
|
||||||
|
; todo: copy rgt
|
||||||
|
; todo: set 0 byte
|
||||||
|
ret i8* %res
|
||||||
|
}
|
||||||
|
|
||||||
|
define i64 @__strlen(i8* %str)
|
||||||
|
{
|
||||||
|
start:
|
||||||
|
br label %loop_start
|
||||||
|
|
||||||
|
loop_start:
|
||||||
|
%i.0 = phi i64 [0, %start], [%i.new, %loop]
|
||||||
|
%c_adr = getelementptr i8, i8* %str, i64 %i.0
|
||||||
|
%c = load i8, i8* %c_adr
|
||||||
|
%done = icmp eq i8 %c, 0
|
||||||
|
br i1 %done, label %exit, label %loop
|
||||||
|
|
||||||
|
loop:
|
||||||
|
%i.new = add i64 %i.0, 1
|
||||||
|
br label %loop_start
|
||||||
|
|
||||||
|
exit:
|
||||||
|
ret i64 %i.0
|
||||||
|
}
|
||||||
|
|
||||||
|
define i8* @__mapgetkey(i8* %mapname, i8* %key, i8* %def)
|
||||||
|
{
|
||||||
|
; todo
|
||||||
|
ret i8* %def
|
||||||
|
}
|
||||||
|
|
||||||
|
define i8* @addstringchar(i8* %0, i8* %1)
|
||||||
|
{
|
||||||
|
; todo
|
||||||
|
ret i8* %0
|
||||||
|
}
|
||||||
|
|
||||||
|
define i8* @registerid(i8* %id_id)
|
||||||
|
{
|
||||||
|
%id_idname = call i8* @__mapgetkey(i8* noundef getelementptr inbounds ([14 x i8], [14 x i8]* @str.01, i64 0, i64 0), i8* %id_id, i8* noundef getelementptr inbounds ([14 x i8], [14 x i8]* @str.011, i64 0, i64 0))
|
||||||
|
%1 = call i64 @__strlen(i8* %id_idname)
|
||||||
|
%11 = icmp ne i64 %1, 0
|
||||||
|
br i1 %11, label %lbl1, label %lbl11
|
||||||
|
lbl1:
|
||||||
|
ret i8* %id_idname
|
||||||
|
lbl11:
|
||||||
|
%id_idnamea = call i8* @__add(i8* noundef getelementptr inbounds ([14 x i8], [14 x i8]* @str.0111, i64 0, i64 0), i8* %id_id)
|
||||||
|
ret i8* %id_idnamea
|
||||||
|
}
|
||||||
|
|
||||||
|
define i64 @main() {
|
||||||
|
%res = call i64 @__strlen(i8* @str.01)
|
||||||
|
ret i64 %res
|
||||||
|
}
|
||||||
|
|
||||||
|
@str.01 = internal constant [11 x i8] c"REGISTERID\00"
|
||||||
|
@str.011 = internal constant [0 x i8] c""
|
||||||
|
@str.0111 = internal constant [3 x i8] c"id_"
|
||||||
Loading…
x
Reference in New Issue
Block a user