mirror of
https://github.com/sharkdp/bat
synced 2024-11-06 21:20:25 +00:00
test: x86-64 Assembly NASM syntax test
This commit is contained in:
parent
8832a96e82
commit
5fe98689d4
86
tests/syntax-tests/highlighted/Assembly (x86_64)/test.nasm
Normal file
86
tests/syntax-tests/highlighted/Assembly (x86_64)/test.nasm
Normal file
@ -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
|
86
tests/syntax-tests/source/Assembly (x86_64)/test.nasm
Normal file
86
tests/syntax-tests/source/Assembly (x86_64)/test.nasm
Normal file
@ -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
|
Loading…
Reference in New Issue
Block a user