157 lines
4 KiB
Plaintext
157 lines
4 KiB
Plaintext
<!DOCTYPE html>
|
|
<html lang="en">
|
|
<head>
|
|
<meta charset="utf-8">
|
|
<style>
|
|
body {
|
|
font-family: "mono";
|
|
font-size: 12px;
|
|
background-color: #f7f6fd;
|
|
}
|
|
|
|
.prog_container {
|
|
display: flex;
|
|
justify-content: space-around;
|
|
}
|
|
|
|
.prog {
|
|
background-color: white;
|
|
padding: 15px;
|
|
border: 1px solid #9584ff;
|
|
}
|
|
|
|
.progpath {
|
|
text-align: center;
|
|
font-size: 1.3em;
|
|
}
|
|
|
|
.subroutine {
|
|
margin: 20px 0;
|
|
}
|
|
|
|
.sub_collapser {
|
|
background-color: #8c8c8c;
|
|
color: white;
|
|
font-weight: bold;
|
|
border-radius: 50%;
|
|
text-align: center;
|
|
display: inline-block;
|
|
width: 1em;
|
|
}
|
|
|
|
.sub_body {
|
|
margin-left: 4ex;
|
|
}
|
|
|
|
.addr {
|
|
color: green;
|
|
}
|
|
|
|
.instr_bytes pre {
|
|
display: inline;
|
|
font-size: 12px;
|
|
font-family: "mono";
|
|
}
|
|
|
|
.instr_bytes {
|
|
color: grey;
|
|
}
|
|
|
|
.instr_box {
|
|
background-color: #ffffb4;
|
|
}
|
|
</style>
|
|
|
|
<script>
|
|
function hoverByClass(classname){
|
|
var colorover = "orange";
|
|
var colorout = "#ffffb4";
|
|
var elms=document.getElementsByClassName(classname);
|
|
for(var i=0;i<elms.length;i++){
|
|
elms[i].onmouseover = function(){
|
|
for(var k=0;k<elms.length;k++){
|
|
elms[k].style.backgroundColor=colorover;
|
|
}
|
|
};
|
|
elms[i].onmouseout = function(){
|
|
for(var k=0;k<elms.length;k++){
|
|
elms[k].style.backgroundColor=colorout;
|
|
}
|
|
};
|
|
}
|
|
}
|
|
</script>
|
|
|
|
<script>
|
|
function toggle_visibility(id) {
|
|
var e = document.getElementById(id);
|
|
var label = document.getElementById(id + "_collapser");
|
|
|
|
if(e.style.display == 'none') {
|
|
label.innerHTML = label.innerHTML.replace("+","-");
|
|
e.style.display = 'block';
|
|
}
|
|
else {
|
|
label.innerHTML = label.innerHTML.replace("-","+");
|
|
e.style.display = 'none';
|
|
}
|
|
}
|
|
</script>
|
|
</head>
|
|
<body>
|
|
<div class="prog_container">
|
|
{% for prog in progs %}
|
|
<div class="prog">
|
|
<h2 class="progpath">{{ prog.path }}</h2>
|
|
{% for subroutine in prog.prog %}
|
|
<div class="subroutine">
|
|
<div class="sub_headline">
|
|
<span class="sub_collapser"
|
|
id="sub_body_{{subroutine.sub_uuid}}_collapser"
|
|
onclick="toggle_visibility('sub_body_{{ subroutine.sub_uuid }}')"
|
|
>
|
|
-
|
|
</span>
|
|
<span class="addr">{{ subroutine.sub_addr }}</span>
|
|
<span class="sub_section">[{{ subroutine.sub_section }}]</span>
|
|
<span class="sub_name"><{{ subroutine.sub_name }}></span>:
|
|
</div>
|
|
<div class="sub_body" id="sub_body_{{ subroutine.sub_uuid }}">
|
|
{% for row in subroutine.sub_asm %}
|
|
{% for event in row.instr_events %}
|
|
{% if event.typ == "start" %}
|
|
<div class="instr_box box_eq_{{ event.box_eq }}"
|
|
id="instr_box_{{ event.id }}"
|
|
title="{{ event.data }}"
|
|
>
|
|
{% endif %}
|
|
{% endfor %}
|
|
<div class="sub_instr">
|
|
<span class="addr instr_addr">{{ row.instr_addr }}</span>
|
|
<span class="instr_bytes"><pre>{{ row.instr_bytes }}</pre></span>
|
|
<span class="instr_asm">{{ row.instr_asm }}</span>
|
|
</div>
|
|
{% for event in row.instr_events %}
|
|
{% if event.typ == "end" %}
|
|
</div> <!-- END instr_box_{{ event.id }} -->
|
|
{% endif %}
|
|
{% endfor %}
|
|
{% endfor %}
|
|
</div>
|
|
</div>
|
|
{% if not subroutine.sub_relevant %}
|
|
<script>toggle_visibility('sub_body_{{ subroutine.sub_uuid }}');</script>
|
|
{% endif %}
|
|
{% endfor %}
|
|
</div>
|
|
{% endfor %}
|
|
</div>
|
|
|
|
<script>
|
|
{% for class in box_classes %}
|
|
hoverByClass("box_eq_{{ class }}");
|
|
{% endfor %}
|
|
</script>
|
|
</body>
|
|
</html>
|