Skip to content

Commit

Permalink
test: Add inp_vararg.c test
Browse files Browse the repository at this point in the history
  • Loading branch information
keyvank committed Dec 7, 2024
1 parent 91e38d1 commit be139c6
Show file tree
Hide file tree
Showing 6 changed files with 413 additions and 1 deletion.
1 change: 1 addition & 0 deletions scripts/test.py
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@
"./examples/lots_of_variables.c": [],
"./examples/inp_arg_macro.c": [],
"./examples/inp_extern.c": [],
"./examples/inp_vararg.c": [],
}
C_PROGRAM_NAME = "./30cc"
OUTPUT_FOLDER = "tests/output"
Expand Down
2 changes: 1 addition & 1 deletion tests/output/inp_vararg.c_asm_output.asm
Original file line number Diff line number Diff line change
Expand Up @@ -91,7 +91,7 @@ mov [rbp-33], al
mov rdi, [rbp-16]
mov rsi, [rbp-24]
mov rdx, [rbp-32]
mov rcx, [rbp-33]
mov cl, [rbp-33]
mov rax, rbp
sub rax, 8
mov [rbp-41], rax
Expand Down
170 changes: 170 additions & 0 deletions tests/output/inp_vararg.c_lex_output.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,170 @@
TKN_VOID
TKN_STAR
TKN_ID(malloc)
TKN_L_PAREN
TKN_INT
TKN_R_PAREN
TKN_SEMICOLON
TKN_VOID
TKN_ID(printf)
TKN_L_PAREN
TKN_CHAR
TKN_STAR
TKN_COMMA
TKN_DOTS
TKN_R_PAREN
TKN_SEMICOLON
TKN_VOID
TKN_ID(sprintf)
TKN_L_PAREN
TKN_CHAR
TKN_STAR
TKN_COMMA
TKN_CHAR
TKN_STAR
TKN_COMMA
TKN_DOTS
TKN_R_PAREN
TKN_SEMICOLON
TKN_DIRECTIVE:
TKN_ID(define)
TKN_ID(PUSHARGS)
TKN_L_PAREN
TKN_R_PAREN
TKN_ASM
TKN_L_PAREN
TKN_LIT_STR(push rdi)
TKN_LIT_STR(push rsi)
TKN_LIT_STR(push rdx)
TKN_LIT_STR(push rcx)
TKN_LIT_STR(push r8)
TKN_LIT_STR(push r9)
TKN_R_PAREN
TKN_EOF
TKN_DIRECTIVE:
TKN_ID(define)
TKN_ID(SLARGS)
TKN_L_PAREN
TKN_R_PAREN
TKN_ASM
TKN_L_PAREN
TKN_LIT_STR(mov rdi, rsi)
TKN_LIT_STR(mov rsi, rdx)
TKN_LIT_STR(mov rdx, rcx)
TKN_LIT_STR(mov rcx, r8)
TKN_LIT_STR(mov r8, r9)
TKN_LIT_STR(mov r9, 0)
TKN_R_PAREN
TKN_EOF
TKN_DIRECTIVE:
TKN_ID(define)
TKN_ID(SRARGS)
TKN_L_PAREN
TKN_R_PAREN
TKN_ASM
TKN_L_PAREN
TKN_LIT_STR(mov r9, r8)
TKN_LIT_STR(mov r8, rcx)
TKN_LIT_STR(mov rcx, rdx)
TKN_LIT_STR(mov rdx, rsi)
TKN_LIT_STR(mov rsi, rdi)
TKN_LIT_STR(mov rdi, 0)
TKN_R_PAREN
TKN_EOF
TKN_DIRECTIVE:
TKN_ID(define)
TKN_ID(POPARGS)
TKN_L_PAREN
TKN_R_PAREN
TKN_ASM
TKN_L_PAREN
TKN_LIT_STR(pop r9)
TKN_LIT_STR(pop r8)
TKN_LIT_STR(pop rcx)
TKN_LIT_STR(pop rdx)
TKN_LIT_STR(pop rsi)
TKN_LIT_STR(pop rdi)
TKN_R_PAREN
TKN_EOF
TKN_CHAR
TKN_STAR
TKN_ID(cc_asprintf)
TKN_L_PAREN
TKN_CHAR
TKN_STAR
TKN_ID(inp)
TKN_COMMA
TKN_DOTS
TKN_R_PAREN
TKN_L_BRACE
TKN_ID(SRARGS)
TKN_L_PAREN
TKN_R_PAREN
TKN_SEMICOLON
TKN_ID(PUSHARGS)
TKN_L_PAREN
TKN_R_PAREN
TKN_SEMICOLON
TKN_CHAR
TKN_STAR
TKN_ID(ret)
TKN_ASSIGN
TKN_L_PAREN
TKN_CHAR
TKN_STAR
TKN_R_PAREN
TKN_ID(malloc)
TKN_L_PAREN
TKN_LIT_INT(128)
TKN_R_PAREN
TKN_SEMICOLON
TKN_ID(POPARGS)
TKN_L_PAREN
TKN_R_PAREN
TKN_SEMICOLON
TKN_ID(sprintf)
TKN_L_PAREN
TKN_ID(ret)
TKN_COMMA
TKN_ID(inp)
TKN_R_PAREN
TKN_SEMICOLON
TKN_RETURN
TKN_ID(ret)
TKN_SEMICOLON
TKN_R_BRACE
TKN_INT
TKN_ID(main)
TKN_L_PAREN
TKN_R_PAREN
TKN_L_BRACE
TKN_CHAR
TKN_STAR
TKN_ID(ret)
TKN_ASSIGN
TKN_ID(cc_asprintf)
TKN_L_PAREN
TKN_LIT_STR(salam %s %u%c)
TKN_COMMA
TKN_LIT_STR(donya)
TKN_COMMA
TKN_LIT_INT(123)
TKN_COMMA
TKN_LIT_CHAR(!)
TKN_R_PAREN
TKN_SEMICOLON
TKN_ID(printf)
TKN_L_PAREN
TKN_LIT_STR(%s %s
)
TKN_COMMA
TKN_LIT_STR(haha)
TKN_COMMA
TKN_ID(ret)
TKN_R_PAREN
TKN_SEMICOLON
TKN_RETURN
TKN_LIT_INT(0)
TKN_SEMICOLON
TKN_R_BRACE
TKN_EOF
128 changes: 128 additions & 0 deletions tests/output/inp_vararg.c_prep_output.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,128 @@
TKN_VOID
TKN_STAR
TKN_ID(malloc)
TKN_L_PAREN
TKN_INT
TKN_R_PAREN
TKN_SEMICOLON
TKN_VOID
TKN_ID(printf)
TKN_L_PAREN
TKN_CHAR
TKN_STAR
TKN_COMMA
TKN_DOTS
TKN_R_PAREN
TKN_SEMICOLON
TKN_VOID
TKN_ID(sprintf)
TKN_L_PAREN
TKN_CHAR
TKN_STAR
TKN_COMMA
TKN_CHAR
TKN_STAR
TKN_COMMA
TKN_DOTS
TKN_R_PAREN
TKN_SEMICOLON
TKN_CHAR
TKN_STAR
TKN_ID(cc_asprintf)
TKN_L_PAREN
TKN_CHAR
TKN_STAR
TKN_ID(inp)
TKN_COMMA
TKN_DOTS
TKN_R_PAREN
TKN_L_BRACE
TKN_ASM
TKN_L_PAREN
TKN_LIT_STR(mov r9, r8)
TKN_LIT_STR(mov r8, rcx)
TKN_LIT_STR(mov rcx, rdx)
TKN_LIT_STR(mov rdx, rsi)
TKN_LIT_STR(mov rsi, rdi)
TKN_LIT_STR(mov rdi, 0)
TKN_R_PAREN
TKN_SEMICOLON
TKN_ASM
TKN_L_PAREN
TKN_LIT_STR(push rdi)
TKN_LIT_STR(push rsi)
TKN_LIT_STR(push rdx)
TKN_LIT_STR(push rcx)
TKN_LIT_STR(push r8)
TKN_LIT_STR(push r9)
TKN_R_PAREN
TKN_SEMICOLON
TKN_CHAR
TKN_STAR
TKN_ID(ret)
TKN_ASSIGN
TKN_L_PAREN
TKN_CHAR
TKN_STAR
TKN_R_PAREN
TKN_ID(malloc)
TKN_L_PAREN
TKN_LIT_INT(128)
TKN_R_PAREN
TKN_SEMICOLON
TKN_ASM
TKN_L_PAREN
TKN_LIT_STR(pop r9)
TKN_LIT_STR(pop r8)
TKN_LIT_STR(pop rcx)
TKN_LIT_STR(pop rdx)
TKN_LIT_STR(pop rsi)
TKN_LIT_STR(pop rdi)
TKN_R_PAREN
TKN_SEMICOLON
TKN_ID(sprintf)
TKN_L_PAREN
TKN_ID(ret)
TKN_COMMA
TKN_ID(inp)
TKN_R_PAREN
TKN_SEMICOLON
TKN_RETURN
TKN_ID(ret)
TKN_SEMICOLON
TKN_R_BRACE
TKN_INT
TKN_ID(main)
TKN_L_PAREN
TKN_R_PAREN
TKN_L_BRACE
TKN_CHAR
TKN_STAR
TKN_ID(ret)
TKN_ASSIGN
TKN_ID(cc_asprintf)
TKN_L_PAREN
TKN_LIT_STR(salam %s %u%c)
TKN_COMMA
TKN_LIT_STR(donya)
TKN_COMMA
TKN_LIT_INT(123)
TKN_COMMA
TKN_LIT_CHAR(!)
TKN_R_PAREN
TKN_SEMICOLON
TKN_ID(printf)
TKN_L_PAREN
TKN_LIT_STR(%s %s
)
TKN_COMMA
TKN_LIT_STR(haha)
TKN_COMMA
TKN_ID(ret)
TKN_R_PAREN
TKN_SEMICOLON
TKN_RETURN
TKN_LIT_INT(0)
TKN_SEMICOLON
TKN_R_BRACE
TKN_EOF
3 changes: 3 additions & 0 deletions tests/output/inp_vararg.c_run_output.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
./out ""
-------------
haha salam donya 123!
Loading

0 comments on commit be139c6

Please sign in to comment.