reg colors work in haddrline and hexdump

This commit is contained in:
George Hotz 2014-08-18 16:16:59 -07:00
parent 5096a04ca2
commit 96a0385623
7 changed files with 60 additions and 15 deletions

View File

@ -307,6 +307,7 @@ def getregisters(forknum, clnum):
rret['regactions'] = "regreadwrite"
else:
rret['regactions'] = "regwrite"
rret['num'] = i
ret.append(rret)
emit('registers', ret)

View File

@ -0,0 +1,11 @@
import random
c = []
for i in range(40):
r = random.randint(40, 192)
g = random.randint(40, 192)
b = random.randint(40, 192)
c.append("#%02X%02X%02X" % (r,g,b))
print c

View File

@ -131,7 +131,7 @@ var baseevents = {
return false;
},
'click .data': function(e) {
var daddr = e.target.getAttribute('daddr');
var daddr = e.target.getAttribute('id').split("_")[1];
Session.set('daddr', daddr);
},
'click .register': function(e) {
@ -163,7 +163,7 @@ var basedblevents = {
return false;
},
'click .data': function(e) {
var daddr = e.target.getAttribute('daddr');
var daddr = e.target.getAttribute('id').split("_")[1];
Session.set('daddr', daddr);
},
};

View File

@ -35,30 +35,30 @@ Deps.autorun(function() {
}
});
function draw_hflag(addr, name, color) {
draw_hflag = function(addr, name, color, alwaysontop) {
$("#hflag_"+name).remove();
var t = $("#pchunk_"+string_round(addr, 3));
if (t.length == 1) {
p("drawing hflag");
//p("drawing hflag");
var hflag = $('<div class="hflag" id="hflag_'+name+'"></div>');
if (alwaysontop) hflag.css("z-index", 2);
hflag.css("background-color", color);
var off = ((((fhex(addr)%PAGE_SIZE)*1.0)/PAGE_SIZE) * t.width()) - (hflag.width()/2.0);
p(off);
hflag.css("margin-left", off+"px");
t.append(hflag);
}
}
};
Deps.autorun(function() {
var addr = Session.get('iaddr');
if (addr === undefined) return;
draw_hflag(addr, 'iaddr', '#AA0000');
draw_hflag(addr, 'iaddr', '#AA0000', true);
});
Deps.autorun(function() {
var addr = Session.get('daddr');
if (addr === undefined) return;
draw_hflag(addr, 'daddr', 'yellow');
draw_hflag(addr, 'daddr', 'yellow', true);
});

View File

@ -1,5 +1,9 @@
stream = io.connect(STREAM_URL);
var regcolors = ['#59AE3F', '#723160', '#2A80A2', '#9E66BD', '#BC8D6B', '#3F3EAC', '#BC48B8', '#6B7C76', '#5FAC7F', '#A69B71', '#874535', '#AD49BF', '#73356F', '#55A4AC', '#988590', '#505C62', '#404088', '#56726B', '#BAAC62', '#454066', '#BCAEAA', '#4E7F6A', '#3960B5', '#295231', '#3B37A5', '#6A9191', '#976394', '#7F957D', '#B7AFBD', '#BD4A70', '#A35169', '#2F2D95', '#8879A8', '#8D3A8E', '#636E7C', '#82688D', '#9FA893', '#2A6885', '#812C87', '#568E71'];
var current_regs = undefined;
stream.on('maxclnum', function(msg) {
update_maxclnum(msg);
});
@ -8,6 +12,21 @@ stream.on('pmaps', function(msg) {
Session.set('pmaps', msg)
});
function redraw_reg_flags() {
$(".rflag").remove();
if (current_regs !== undefined) {
for (r in current_regs) {
var th = current_regs[r];
var t = $('#data_'+th.value);
if (t.length == 1) {
var rr = $('<div class="rflag"></div>');
rr.css("background-color", regcolors[th.num]);
t.prepend(rr);
}
}
}
}
Meteor.startup(function() {
$("#hexdump")[0].addEventListener("mousewheel", function(e) {
if (e.wheelDelta < 0) {
@ -59,7 +78,7 @@ stream.on('memory', function(msg) {
me = "0x"+me;
var exclass = "";
if (addr+i == daddr) { exclass = "highlight"; }
html += '<td colspan="'+PTRSIZE+'" class="data '+a+' '+exclass+'" daddr='+hex(addr+i)+">"+me+"</td>";
html += '<td colspan="'+PTRSIZE+'" class="data '+a+' '+exclass+'" id=data_'+hex(addr+i)+">"+me+"</td>";
} else {
for (var j = 0; j < PTRSIZE; j++) {
var ii = msg['dat'][addr+i+j];
@ -71,7 +90,7 @@ stream.on('memory', function(msg) {
}
var exclass = "";
if (addr+i+j == daddr) { exclass = "highlight"; }
html += '<td class="data '+exclass+'" daddr='+hex(addr+i+j)+">"+me+"</td>";
html += '<td class="data '+exclass+'" id=data_'+hex(addr+i+j)+">"+me+"</td>";
}
}
@ -94,12 +113,14 @@ stream.on('memory', function(msg) {
}
html += "</tr></table>";
$("#hexdump")[0].innerHTML = html;
redraw_reg_flags();
});
Template.regviewer.hexvalue = function() {
return this.value;
Template.regviewer.regcolor = function() {
// draw the hflags here
draw_hflag(this.value, this.name, regcolors[this.num]);
return regcolors[this.num];
};
Template.regviewer.datatype = function() {
@ -130,6 +151,8 @@ Deps.autorun(function() {
});
stream.on('registers', function(msg) {
current_regs = msg;
redraw_reg_flags();
$('#regviewer')[0].innerHTML = "";
var tsize = msg[0]['size'];
if (tsize > 0) PTRSIZE = tsize;

View File

@ -231,7 +231,9 @@ body {
.data {
text-align: right;
/*padding-left: 2px;*/
min-width: 18px;
padding-top: 0px;
padding-bottom: 0px;
}
.datachange {
@ -240,10 +242,12 @@ body {
.datainstruction {
color: #CC0000;
min-width: 84px;
}
.datamemory {
color: #888800;
min-width: 84px;
}
.hdatainstruction {
@ -260,6 +264,12 @@ body {
font-family: monospace;
}
.rflag {
width: 3px;
height: 12px;
display: inline-block;
}
.regread {
background-color: #666644;
}

View File

@ -87,7 +87,7 @@
<template name="regviewer">
{{#each regs}}
<div class="reg {{regactions}}">
<span class="register">{{name}}: </span><span class="{{datatype}} {{isselected}}">{{hexvalue}}</span>
<span class="register" style="color:{{regcolor}}">{{name}}: </span><span class="{{datatype}} {{isselected}}">{{value}}</span>
</div>
{{/each}}
</template>