diff options
Diffstat (limited to 'tests')
-rw-r--r-- | tests/syntax-tests/highlighted/Assembly (x86_64)/test.nasm | 86 | ||||
-rw-r--r-- | tests/syntax-tests/source/Assembly (x86_64)/test.nasm | 86 |
2 files changed, 172 insertions, 0 deletions
diff --git a/tests/syntax-tests/highlighted/Assembly (x86_64)/test.nasm b/tests/syntax-tests/highlighted/Assembly (x86_64)/test.nasm new file mode 100644 index 00000000..816ec75e --- /dev/null +++ b/tests/syntax-tests/highlighted/Assembly (x86_64)/test.nasm @@ -0,0 +1,86 @@ +[38;2;102;217;239mglobal[0m[38;2;248;248;242m [0m[38;2;166;226;46menlight[0m + +[38;2;102;217;239msection[0m[38;2;248;248;242m [0m[38;2;102;217;239m.data[0m +[38;2;248;248;242m [0m[38;2;166;226;46mred[0m[38;2;248;248;242m [0m[3;38;2;102;217;239mdq[0m[38;2;248;248;242m [0m[38;2;190;132;255m0[0m[38;2;248;248;242m [0m[38;2;117;113;94m;[0m[38;2;117;113;94m some comment[0m +[38;2;248;248;242m [0m[38;2;166;226;46mgreen[0m[38;2;248;248;242m [0m[3;38;2;102;217;239mdq[0m[38;2;248;248;242m [0m[38;2;190;132;255m0[0m +[38;2;248;248;242m [0m[38;2;166;226;46mblue[0m[38;2;248;248;242m [0m[3;38;2;102;217;239mdq[0m[38;2;248;248;242m [0m[38;2;190;132;255m0[0m +[38;2;248;248;242m [0m[38;2;166;226;46mdata[0m[38;2;248;248;242m [0m[3;38;2;102;217;239mdq[0m[38;2;248;248;242m [0m[38;2;190;132;255m0[0m +[38;2;248;248;242m [0m[38;2;166;226;46mN[0m[38;2;248;248;242m [0m[3;38;2;102;217;239mdd[0m[38;2;248;248;242m [0m[38;2;190;132;255m0[0m +[38;2;248;248;242m [0m[38;2;166;226;46mM[0m[38;2;248;248;242m [0m[3;38;2;102;217;239mdd[0m[38;2;248;248;242m [0m[38;2;190;132;255m0[0m +[38;2;248;248;242m [0m[38;2;166;226;46mchange[0m[38;2;248;248;242m [0m[3;38;2;102;217;239mdd[0m[38;2;248;248;242m [0m[38;2;190;132;255m0[0m +[38;2;248;248;242m [0m[38;2;166;226;46mdelta[0m[38;2;248;248;242m [0m[3;38;2;102;217;239mdb[0m[38;2;248;248;242m [0m[38;2;190;132;255m0[0m + +[38;2;102;217;239msection[0m[38;2;248;248;242m [0m[38;2;102;217;239m.text[0m +[38;2;166;226;46menlight[0m[38;2;248;248;242m:[0m +[38;2;248;248;242m [0m[38;2;249;38;114mcall[0m[38;2;248;248;242m [0m[38;2;166;226;46massign_arguments[0m +[38;2;248;248;242m [0m[38;2;249;38;114mcall[0m[38;2;248;248;242m [0m[38;2;166;226;46mset_data[0m +[38;2;248;248;242m [0m[38;2;249;38;114mcall[0m[38;2;248;248;242m [0m[38;2;166;226;46mmake_deltas[0m +[38;2;248;248;242m [0m[38;2;249;38;114mret[0m + +[38;2;166;226;46massign_arguments[0m[38;2;248;248;242m:[0m +[38;2;248;248;242m [0m[38;2;249;38;114mmov[0m[38;2;248;248;242m [0m[3;38;2;102;217;239mqword[0m[38;2;248;248;242m[[0m[38;2;166;226;46mred[0m[38;2;248;248;242m][0m[38;2;248;248;242m,[0m[38;2;248;248;242m [0m[38;2;190;132;255mrdi[0m +[38;2;248;248;242m [0m[38;2;249;38;114mmov[0m[38;2;248;248;242m [0m[3;38;2;102;217;239mqword[0m[38;2;248;248;242m[[0m[38;2;166;226;46mgreen[0m[38;2;248;248;242m][0m[38;2;248;248;242m,[0m[38;2;248;248;242m [0m[38;2;190;132;255mrsi[0m +[38;2;248;248;242m [0m[38;2;249;38;114mmov[0m[38;2;248;248;242m [0m[3;38;2;102;217;239mqword[0m[38;2;248;248;242m[[0m[38;2;166;226;46mblue[0m[38;2;248;248;242m][0m[38;2;248;248;242m,[0m[38;2;248;248;242m [0m[38;2;190;132;255mrdx[0m +[38;2;248;248;242m [0m[38;2;249;38;114mmov[0m[38;2;248;248;242m [0m[3;38;2;102;217;239mdword[0m[38;2;248;248;242m[[0m[38;2;166;226;46mN[0m[38;2;248;248;242m][0m[38;2;248;248;242m,[0m[38;2;248;248;242m [0m[38;2;190;132;255mecx[0m +[38;2;248;248;242m [0m[38;2;249;38;114mmov[0m[38;2;248;248;242m [0m[3;38;2;102;217;239mdword[0m[38;2;248;248;242m[[0m[38;2;166;226;46mM[0m[38;2;248;248;242m][0m[38;2;248;248;242m,[0m[38;2;248;248;242m [0m[38;2;190;132;255mr8d[0m +[38;2;248;248;242m [0m[38;2;249;38;114mmov[0m[38;2;248;248;242m [0m[3;38;2;102;217;239mdword[0m[38;2;248;248;242m[[0m[38;2;166;226;46mchange[0m[38;2;248;248;242m][0m[38;2;248;248;242m,[0m[38;2;248;248;242m [0m[38;2;190;132;255mr9d[0m +[38;2;248;248;242m [0m[38;2;249;38;114mmov[0m[38;2;248;248;242m [0m[38;2;190;132;255mal[0m[38;2;248;248;242m,[0m[38;2;248;248;242m [0m[3;38;2;102;217;239mbyte[0m[38;2;248;248;242m[[0m[38;2;190;132;255mrsp[0m[38;2;248;248;242m [0m[38;2;249;38;114m+[0m[38;2;248;248;242m [0m[38;2;190;132;255m16[0m[38;2;248;248;242m][0m +[38;2;248;248;242m [0m[38;2;249;38;114mmov[0m[38;2;248;248;242m [0m[3;38;2;102;217;239mbyte[0m[38;2;248;248;242m[[0m[38;2;166;226;46mdelta[0m[38;2;248;248;242m][0m[38;2;248;248;242m,[0m[38;2;248;248;242m [0m[38;2;190;132;255mal[0m +[38;2;248;248;242m [0m[38;2;249;38;114mret[0m + +[38;2;166;226;46mset_data[0m[38;2;248;248;242m:[0m +[38;2;248;248;242m [0m[38;2;249;38;114mmov[0m[38;2;248;248;242m [0m[38;2;190;132;255meax[0m[38;2;248;248;242m,[0m[38;2;248;248;242m [0m[3;38;2;102;217;239mdword[0m[38;2;248;248;242m[[0m[38;2;166;226;46mchange[0m[38;2;248;248;242m][0m +[38;2;248;248;242m [0m[38;2;249;38;114mcmp[0m[38;2;248;248;242m [0m[38;2;190;132;255meax[0m[38;2;248;248;242m,[0m[38;2;248;248;242m [0m[38;2;190;132;255m1[0m +[38;2;248;248;242m [0m[38;2;249;38;114mjne[0m[38;2;248;248;242m [0m[38;2;166;226;46mnot_1[0m +[38;2;248;248;242m [0m[38;2;249;38;114mmov[0m[38;2;248;248;242m [0m[38;2;190;132;255mrax[0m[38;2;248;248;242m,[0m[38;2;248;248;242m [0m[3;38;2;102;217;239mqword[0m[38;2;248;248;242m[[0m[38;2;166;226;46mred[0m[38;2;248;248;242m][0m +[38;2;248;248;242m [0m[38;2;249;38;114mmov[0m[38;2;248;248;242m [0m[3;38;2;102;217;239mqword[0m[38;2;248;248;242m[[0m[38;2;166;226;46mdata[0m[38;2;248;248;242m][0m[38;2;248;248;242m,[0m[38;2;248;248;242m [0m[38;2;190;132;255mrax[0m +[38;2;248;248;242m [0m[38;2;249;38;114mret[0m +[38;2;166;226;46mnot_1[0m[38;2;248;248;242m:[0m +[38;2;248;248;242m [0m[38;2;249;38;114mcmp[0m[38;2;248;248;242m [0m[38;2;190;132;255meax[0m[38;2;248;248;242m,[0m[38;2;248;248;242m [0m[38;2;190;132;255m2[0m +[38;2;248;248;242m [0m[38;2;249;38;114mjne[0m[38;2;248;248;242m [0m[38;2;166;226;46mnot_2[0m +[38;2;248;248;242m [0m[38;2;249;38;114mmov[0m[38;2;248;248;242m [0m[38;2;190;132;255mrax[0m[38;2;248;248;242m,[0m[38;2;248;248;242m [0m[3;38;2;102;217;239mqword[0m[38;2;248;248;242m[[0m[38;2;166;226;46mgreen[0m[38;2;248;248;242m][0m +[38;2;248;248;242m [0m[38;2;249;38;114mmov[0m[38;2;248;248;242m [0m[3;38;2;102;217;239mqword[0m[38;2;248;248;242m[[0m[38;2;166;226;46mdata[0m[38;2;248;248;242m][0m[38;2;248;248;242m,[0m[38;2;248;248;242m [0m[38;2;190;132;255mrax[0m +[38;2;248;248;242m [0m[38;2;249;38;114mret[0m +[38;2;166;226;46mnot_2[0m[38;2;248;248;242m:[0m +[38;2;248;248;242m [0m[38;2;249;38;114mmov[0m[38;2;248;248;242m [0m[38;2;190;132;255mrax[0m[38;2;248;248;242m,[0m[38;2;248;248;242m [0m[3;38;2;102;217;239mqword[0m[38;2;248;248;242m[[0m[38;2;166;226;46mblue[0m[38;2;248;248;242m][0m +[38;2;248;248;242m [0m[38;2;249;38;114mmov[0m[38;2;248;248;242m [0m[3;38;2;102;217;239mqword[0m[38;2;248;248;242m[[0m[38;2;166;226;46mdata[0m[38;2;248;248;242m][0m[38;2;248;248;242m,[0m[38;2;248;248;242m [0m[38;2;190;132;255mrax[0m +[38;2;248;248;242m [0m[38;2;249;38;114mret[0m + + +[38;2;166;226;46mmake_deltas[0m[38;2;248;248;242m:[0m +[38;2;248;248;242m [0m[38;2;249;38;114mmov[0m[38;2;248;248;242m [0m[38;2;190;132;255mecx[0m[38;2;248;248;242m,[0m[38;2;248;248;242m [0m[3;38;2;102;217;239mdword[0m[38;2;248;248;242m[[0m[38;2;166;226;46mN[0m[38;2;248;248;242m][0m +[38;2;248;248;242m [0m[38;2;249;38;114mmov[0m[38;2;248;248;242m [0m[38;2;190;132;255meax[0m[38;2;248;248;242m,[0m[38;2;248;248;242m [0m[3;38;2;102;217;239mdword[0m[38;2;248;248;242m[[0m[38;2;166;226;46mM[0m[38;2;248;248;242m][0m +[38;2;248;248;242m [0m[38;2;249;38;114mimul[0m[38;2;248;248;242m [0m[38;2;190;132;255mecx[0m[38;2;248;248;242m,[0m[38;2;248;248;242m [0m[38;2;190;132;255meax[0m +[38;2;166;226;46mloop_start[0m[38;2;248;248;242m:[0m +[38;2;248;248;242m [0m[38;2;249;38;114mcall[0m[38;2;248;248;242m [0m[38;2;166;226;46mmake_delta[0m +[38;2;248;248;242m [0m[38;2;249;38;114mloop[0m[38;2;248;248;242m [0m[38;2;166;226;46mloop_start[0m +[38;2;248;248;242m [0m[38;2;249;38;114mret[0m + +[38;2;166;226;46mmake_delta[0m[38;2;248;248;242m:[0m +[38;2;248;248;242m [0m[38;2;249;38;114mmov[0m[38;2;248;248;242m [0m[38;2;190;132;255mrax[0m[38;2;248;248;242m,[0m[38;2;248;248;242m [0m[3;38;2;102;217;239mqword[0m[38;2;248;248;242m[[0m[38;2;166;226;46mdata[0m[38;2;248;248;242m][0m +[38;2;248;248;242m [0m[38;2;249;38;114madd[0m[38;2;248;248;242m [0m[38;2;190;132;255mrax[0m[38;2;248;248;242m,[0m[38;2;248;248;242m [0m[38;2;190;132;255mrcx[0m +[38;2;248;248;242m [0m[38;2;249;38;114mdec[0m[38;2;248;248;242m [0m[38;2;190;132;255mrax[0m +[38;2;248;248;242m [0m[38;2;249;38;114mmov[0m[38;2;248;248;242m [0m[38;2;190;132;255mdl[0m[38;2;248;248;242m,[0m[38;2;248;248;242m [0m[3;38;2;102;217;239mbyte[0m[38;2;248;248;242m[[0m[38;2;166;226;46mdelta[0m[38;2;248;248;242m][0m +[38;2;248;248;242m [0m[38;2;249;38;114mcmp[0m[38;2;248;248;242m [0m[38;2;190;132;255mdl[0m[38;2;248;248;242m,[0m[38;2;248;248;242m [0m[38;2;190;132;255m0[0m +[38;2;248;248;242m [0m[38;2;249;38;114mjl[0m[38;2;248;248;242m [0m[38;2;166;226;46msubstracting[0m +[38;2;166;226;46madding[0m[38;2;248;248;242m:[0m +[38;2;248;248;242m [0m[38;2;249;38;114madd[0m[38;2;248;248;242m [0m[38;2;190;132;255mdl[0m[38;2;248;248;242m,[0m[38;2;248;248;242m [0m[3;38;2;102;217;239mbyte[0m[38;2;248;248;242m[[0m[38;2;190;132;255mrax[0m[38;2;248;248;242m][0m +[38;2;248;248;242m [0m[38;2;249;38;114mjc[0m[38;2;248;248;242m [0m[38;2;166;226;46madding_overflow[0m +[38;2;248;248;242m [0m[38;2;249;38;114mmov[0m[38;2;248;248;242m [0m[3;38;2;102;217;239mbyte[0m[38;2;248;248;242m[[0m[38;2;190;132;255mrax[0m[38;2;248;248;242m][0m[38;2;248;248;242m,[0m[38;2;248;248;242m [0m[38;2;190;132;255mdl[0m +[38;2;248;248;242m [0m[38;2;249;38;114mret[0m +[38;2;166;226;46madding_overflow[0m[38;2;248;248;242m:[0m +[38;2;248;248;242m [0m[38;2;249;38;114mmov[0m[38;2;248;248;242m [0m[3;38;2;102;217;239mbyte[0m[38;2;248;248;242m[[0m[38;2;190;132;255mrax[0m[38;2;248;248;242m][0m[38;2;248;248;242m,[0m[38;2;248;248;242m [0m[38;2;190;132;255m255[0m[38;2;248;248;242m [0m +[38;2;248;248;242m [0m[38;2;249;38;114mret[0m +[38;2;166;226;46msubstracting[0m[38;2;248;248;242m:[0m +[38;2;248;248;242m [0m[38;2;249;38;114mmov[0m[38;2;248;248;242m [0m[38;2;190;132;255mr9b[0m[38;2;248;248;242m,[0m[38;2;248;248;242m [0m[38;2;190;132;255mdl[0m +[38;2;248;248;242m [0m[38;2;249;38;114mmov[0m[38;2;248;248;242m [0m[38;2;190;132;255mdl[0m[38;2;248;248;242m,[0m[38;2;248;248;242m [0m[38;2;190;132;255m0[0m +[38;2;248;248;242m [0m[38;2;249;38;114msub[0m[38;2;248;248;242m [0m[38;2;190;132;255mdl[0m[38;2;248;248;242m,[0m[38;2;248;248;242m [0m[38;2;190;132;255mr9b[0m +[38;2;248;248;242m [0m[38;2;249;38;114mmov[0m[38;2;248;248;242m [0m[38;2;190;132;255mr8b[0m[38;2;248;248;242m,[0m[38;2;248;248;242m [0m[3;38;2;102;217;239mbyte[0m[38;2;248;248;242m[[0m[38;2;190;132;255mrax[0m[38;2;248;248;242m][0m +[38;2;248;248;242m [0m[38;2;249;38;114msub[0m[38;2;248;248;242m [0m[38;2;190;132;255mr8b[0m[38;2;248;248;242m,[0m[38;2;248;248;242m [0m[38;2;190;132;255mdl[0m +[38;2;248;248;242m [0m[38;2;249;38;114mjc[0m[38;2;248;248;242m [0m[38;2;166;226;46msubstracting_overflow[0m +[38;2;248;248;242m [0m[38;2;249;38;114mmov[0m[38;2;248;248;242m [0m[3;38;2;102;217;239mbyte[0m[38;2;248;248;242m[[0m[38;2;190;132;255mrax[0m[38;2;248;248;242m][0m[38;2;248;248;242m,[0m[38;2;248;248;242m [0m[38;2;190;132;255mr8b[0m +[38;2;248;248;242m [0m[38;2;249;38;114mret[0m +[38;2;117;113;94m;[0m[38;2;117;113;94m another comment[0m +[38;2;166;226;46msubstracting_overflow[0m[38;2;248;248;242m:[0m +[38;2;248;248;242m [0m[38;2;249;38;114mmov[0m[38;2;248;248;242m [0m[3;38;2;102;217;239mbyte[0m[38;2;248;248;242m[[0m[38;2;190;132;255mrax[0m[38;2;248;248;242m][0m[38;2;248;248;242m,[0m[38;2;248;248;242m [0m[38;2;190;132;255m0[0m +[38;2;248;248;242m [0m[38;2;249;38;114mret[0m diff --git a/tests/syntax-tests/source/Assembly (x86_64)/test.nasm b/tests/syntax-tests/source/Assembly (x86_64)/test.nasm new file mode 100644 index 00000000..05c87947 --- /dev/null +++ b/tests/syntax-tests/source/Assembly (x86_64)/test.nasm @@ -0,0 +1,86 @@ +global enlight + +section .data + red dq 0 ; some comment + green dq 0 + blue dq 0 + data dq 0 + N dd 0 + M dd 0 + change dd 0 + delta db 0 + +section .text +enlight: + call assign_arguments + call set_data + call make_deltas + ret + +assign_arguments: + mov qword[red], rdi + mov qword[green], rsi + mov qword[blue], rdx + mov dword[N], ecx + mov dword[M], r8d + mov dword[change], r9d + mov al, byte[rsp + 16] + mov byte[delta], al + ret + +set_data: + mov eax, dword[change] + cmp eax, 1 + jne not_1 + mov rax, qword[red] + mov qword[data], rax + ret +not_1: + cmp eax, 2 + jne not_2 + mov rax, qword[green] + mov qword[data], rax + ret +not_2: + mov rax, qword[blue] + mov qword[data], rax + ret + + +make_deltas: + mov ecx, dword[N] + mov eax, dword[M] + imul ecx, eax +loop_start: + call make_delta + loop loop_start + ret + +make_delta: + mov rax, qword[data] + add rax, rcx + dec rax + mov dl, byte[delta] + cmp dl, 0 + jl substracting +adding: + add dl, byte[rax] + jc adding_overflow + mov byte[rax], dl + ret +adding_overflow: + mov byte[rax], 255 + ret +substracting: + mov r9b, dl + mov dl, 0 + sub dl, r9b + mov r8b, byte[rax] + sub r8b, dl + jc substracting_overflow + mov byte[rax], r8b + ret +; another comment +substracting_overflow: + mov byte[rax], 0 + ret |