mirror of
https://github.com/xenia-project/xenia.git
synced 2026-04-06 07:03:33 +00:00
Prettier ppc disasm.
This commit is contained in:
parent
de6dc92663
commit
d861ef8aab
11 changed files with 311 additions and 21 deletions
|
|
@ -42,22 +42,116 @@ module.controller('FunctionViewController', function(
|
|||
theme: 'default',
|
||||
indentUnit: 2,
|
||||
tabSize: 2,
|
||||
lineNumbers: true,
|
||||
firstLineNumber: 0,
|
||||
lineNumberFormatter: function(line) {
|
||||
return String(line);
|
||||
},
|
||||
gutters: [],
|
||||
lineNumbers: false,
|
||||
gutters: [
|
||||
'debugger-fnview-gutter-icon',
|
||||
'debugger-fnview-gutter-addr',
|
||||
'debugger-fnview-gutter-code'
|
||||
],
|
||||
readOnly: true
|
||||
});
|
||||
|
||||
function updateCode() {
|
||||
var codeType = $scope.codeType;
|
||||
var value = '';
|
||||
if ($scope.fn) {
|
||||
value = $scope.fn.disasm[codeType];
|
||||
function hex32(number) {
|
||||
var str = "" + number.toString(16).toUpperCase();
|
||||
while (str.length < 8) str = "0" + str;
|
||||
return str;
|
||||
};
|
||||
|
||||
function updateSourceCode(fn) {
|
||||
var cm = $scope.codeMirror;
|
||||
if (!fn) {
|
||||
$scope.sourceLines = [];
|
||||
cm.setValue('');
|
||||
return;
|
||||
}
|
||||
|
||||
var doc = cm.getDoc();
|
||||
|
||||
var lines = fn.disasm.source.lines;
|
||||
$scope.sourceLines = lines;
|
||||
|
||||
var textContent = [];
|
||||
for (var n = 0; n < lines.length; n++) {
|
||||
var line = lines[n];
|
||||
textContent.push(line[3]);
|
||||
}
|
||||
cm.setValue(textContent.join('\n'));
|
||||
|
||||
for (var n = 0; n < lines.length; n++) {
|
||||
var line = lines[n];
|
||||
|
||||
var el = document.createElement('div');
|
||||
el.classList.add('debugger-fnview-gutter-addr-el');
|
||||
el.innerText = hex32(line[1]);
|
||||
cm.setGutterMarker(n, 'debugger-fnview-gutter-addr', el);
|
||||
if (line[0] != 'i') {
|
||||
el.classList.add('debugger-fnview-gutter-addr-el-inactive');
|
||||
}
|
||||
|
||||
if (line[0] == 'i') {
|
||||
el = document.createElement('div');
|
||||
el.classList.add('debugger-fnview-gutter-code-el');
|
||||
el.innerText = hex32(line[2]);
|
||||
cm.setGutterMarker(n, 'debugger-fnview-gutter-code', el);
|
||||
}
|
||||
}
|
||||
};
|
||||
function updateCode() {
|
||||
var cm = $scope.codeMirror;
|
||||
var fn = $scope.fn || null;
|
||||
var codeType = $scope.codeType;
|
||||
|
||||
var gutters;
|
||||
switch (codeType) {
|
||||
case 'source':
|
||||
gutters = [
|
||||
'debugger-fnview-gutter-icon',
|
||||
'debugger-fnview-gutter-addr',
|
||||
'debugger-fnview-gutter-code'
|
||||
];
|
||||
break;
|
||||
default:
|
||||
gutters = [
|
||||
'debugger-fnview-gutter-icon',
|
||||
'debugger-fnview-gutter-addr'
|
||||
];
|
||||
break;
|
||||
}
|
||||
cm.setOption('gutters', gutters);
|
||||
|
||||
cm.clearGutter('debugger-fnview-gutter-icon');
|
||||
cm.clearGutter('debugger-fnview-gutter-addr');
|
||||
cm.clearGutter('debugger-fnview-gutter-code');
|
||||
|
||||
// Set last to make all option changes stick.
|
||||
switch (codeType) {
|
||||
case 'source':
|
||||
updateSourceCode(fn);
|
||||
break;
|
||||
default:
|
||||
var value = fn ? fn.disasm[codeType] : null;
|
||||
cm.setValue(value || '');
|
||||
break;
|
||||
}
|
||||
$scope.codeMirror.setValue(value || '');
|
||||
};
|
||||
$scope.$watch('codeType', updateCode);
|
||||
|
||||
$scope.codeMirror.on('gutterClick', function(
|
||||
instance, line, gutterClass, e) {
|
||||
if (e.which == 1) {
|
||||
if (gutterClass == 'debugger-fnview-gutter-icon') {
|
||||
console.log('click', e);
|
||||
}
|
||||
}
|
||||
});
|
||||
// $scope.codeMirror.on('gutterContextMenu', function(
|
||||
// instance, line, gutterClass, e) {
|
||||
// console.log('context menu');
|
||||
// e.preventDefault();
|
||||
// });
|
||||
// $scope.codeMirror.on('contextmenu', function(
|
||||
// instance, e) {
|
||||
// console.log('context menu main');
|
||||
// e.preventDefault();
|
||||
// });
|
||||
});
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue