[Scummvm-cvs-logs] SF.net SVN: scummvm:[47958] scummvm/trunk/engines/sci/engine/scriptdebug. cpp
fingolfin at users.sourceforge.net
fingolfin at users.sourceforge.net
Sun Feb 7 13:14:49 CET 2010
Revision: 47958
http://scummvm.svn.sourceforge.net/scummvm/?rev=47958&view=rev
Author: fingolfin
Date: 2010-02-07 12:14:49 +0000 (Sun, 07 Feb 2010)
Log Message:
-----------
SCI: Convert disassemble to use readPMachineInstruction.
This change is untested, please check it. Also, the opparams
array is not used but could be used to simplify the reading code.
Modified Paths:
--------------
scummvm/trunk/engines/sci/engine/scriptdebug.cpp
Modified: scummvm/trunk/engines/sci/engine/scriptdebug.cpp
===================================================================
--- scummvm/trunk/engines/sci/engine/scriptdebug.cpp 2010-02-07 12:14:26 UTC (rev 47957)
+++ scummvm/trunk/engines/sci/engine/scriptdebug.cpp 2010-02-07 12:14:49 UTC (rev 47958)
@@ -106,9 +106,6 @@
int scr_size;
reg_t retval = make_reg(pos.segment, pos.offset + 1);
uint16 param_value;
- int opsize;
- uint opcode;
- int bytecount = 1;
int i = 0;
Kernel *kernel = s->_kernel;
@@ -126,46 +123,16 @@
return pos;
}
- opsize = scr[pos.offset];
- opcode = opsize >> 1;
+ int16 opparams[4];
+ byte opsize;
+ int bytecount = readPMachineInstruction(scr + pos.offset, opsize, opparams);
+ const byte opcode = opsize >> 1;
opsize &= 1; // byte if true, word if false
printf("%04x:%04x: ", PRINT_REG(pos));
if (print_bytecode) {
- while (g_opcode_formats[opcode][i]) {
- switch (g_opcode_formats[opcode][i++]) {
-
- case Script_SByte:
- case Script_Byte:
- bytecount++;
- break;
-
- case Script_Word:
- case Script_SWord:
- bytecount += 2;
- break;
-
- case Script_SVariable:
- case Script_Variable:
- case Script_Property:
- case Script_Global:
- case Script_Local:
- case Script_Temp:
- case Script_Param:
- case Script_SRelative:
- if (opsize)
- bytecount ++;
- else
- bytecount += 2;
- break;
-
- default:
- break;
- }
- }
-
if (pos.offset + bytecount > scr_size) {
warning("Operation arguments extend beyond end of script");
return retval;
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
More information about the Scummvm-git-logs
mailing list