一个简单的汇编代码高亮JS逻辑
效果:
汇编代码高亮
lea rax,[b] lea rcx,[a] mov rdi,rax mov rsi,rcx mov ecx,80h rep movs byte ptr [rdi],byte ptr [rsi] mov eax,0Ah imul rax,rax,0 lea rax,[rbp+rax+0C8h] mov rdx,rax lea rcx,[string "b.strs[0]=%s\n" (07FF74AF79D38h)] call printf (07FF74AF711D1h) lea rax,[rbp+210h] lea rcx,[b] mov rdi,rax mov rsi,rcx mov ecx,80h rep movs byte ptr [rdi],byte ptr [rsi] lea rdx,[rbp+210h] lea rcx,[string "hello world. b = %d" (07FF74AF79D48h)] call printf (07FF74AF711D1h)
实现代码:
<!DOCTYPE html>
<html>
<body>
<h2>汇编代码高亮</h2>
<p id="demo"></p>
<script>
function highlightAssemblyCode(assemblyCode) {
// 匹配字符串
var highlighted = assemblyCode.replace(/(".*?"|\'.*?\')/g, '<span style="color: #7f007f;">$1</span>');
// 匹配指令
var highlighted = highlighted.replace(/(lea|mov|rep movs|imul|call)/g, '<span style="color: #00007f; font-weight: bold;">$1</span>');
// 匹配寄存器
highlighted = highlighted.replace(/(rax|rcx|rdi|rsi|rdx|rbp|eax|ecx)/g, '<span style="color: #46aa03; font-weight: bold;">$1</span>');
// 匹配十六进制数
highlighted = highlighted.replace(/(0x[a-fA-F0-9]+|\b[0-9A-Fa-f]+h\b)/g, '<span style="color: #ff0000;">$1</span>');
// 匹配方括号和括号
// highlighted = highlighted.replace(/(\[|\]|\(|\))/g, '<span style="color: #009900; font-weight: bold;">$1</span>');
// 匹配byte ptr
highlighted = highlighted.replace(/(byte ptr)/g, '<span style="color: #0000ff; font-weight: bold;">$1</span>');
// 添加换行
highlighted = highlighted.replace(/\n/g, '<br>\n');
return highlighted;
}
var assemblyCode = `lea rax,[b]
lea rcx,[a]
mov rdi,rax
mov rsi,rcx
mov ecx,80h
rep movs byte ptr [rdi],byte ptr [rsi]
mov eax,0Ah
imul rax,rax,0
lea rax,[rbp+rax+0C8h]
mov rdx,rax
lea rcx,[string "b.strs[0]=%s" (07FF74AF79D38h)]
call printf (07FF74AF711D1h)
lea rax,[rbp+210h]
lea rcx,[b]
mov rdi,rax
mov rsi,rcx
mov ecx,80h
rep movs byte ptr [rdi],byte ptr [rsi]
lea rdx,[rbp+210h]
lea rcx,[string "hello world. b = %d" (07FF74AF79D48h)]
call printf (07FF74AF711D1h)`;
document.getElementById("demo").innerHTML = highlightAssemblyCode(assemblyCode);
</script>
</body>
</html>
参考:
https://highlight.hohli.com/index.php

浙公网安备 33010602011771号