2017-09-24 07:38 CEST

View Issue Details Jump to Notes ]
IDProjectCategoryView StatusLast Update
0000290Cheat Enginepublic2013-10-22 14:47
ReporterCsimbi 
Assigned ToDark Byte 
PrioritynormalSeveritycrashReproducibilityalways
StatusresolvedResolutionfixed 
Summary0000290: CE 6.3 - Autoassembler creates wrong byte code
DescriptionInstruction in AA:
  mov esi,[edi+ecx*10+4]
The resulting byte code is:
  0B650133 - 8B 74 0F 04 - mov esi,[edi+ecx+04]

Consequently, a program crash occurs as ESI will contain the wrong value.
TagsNo tags attached.
Attached Files

-Relationships
+Relationships

-Notes

~0000600

Csimbi (reporter)

Last edited: 2013-10-22 05:41

Tried this as a workaround:
  lea esi,[ecx*10+4]
  mov esi,[edi+esi]
But I got this:
  0B650133 - 8D 34 0D 04000000 - lea esi,[ecx+00000004]
  0B65013A - 8B 34 3E - mov esi,[esi+edi]

Tried this, too:
  lea esi,[ecx*10]
  mov esi,[edi+esi+4]
But I got:
  0B650133 - 8D 34 0D 00000000 - lea esi,[ecx+00000000]
  0B65013A - 8B 74 3E 04 - mov esi,[esi+edi+04]

Still no cigar.

Is it illegal to use ecx*10? If so, shouldn't I get a "can't compile this instruction" type of error?
Thanks!

This one works, but it's already three instructions (and I'm lucky that I need to multiply ECX with 16):
  mov esi,ecx
  shl esi,4
  mov esi,[edi+esi+4]

~0000601

Dark Byte (developer)

*10 is invalid yes. The svn version will now refuse to assemble if it encounters that instead of ignoring it
+Notes

-Issue History
Date Modified Username Field Change
2013-10-22 05:19 Csimbi New Issue
2013-10-22 05:22 Csimbi Note Added: 0000600
2013-10-22 05:24 Csimbi Note Edited: 0000600
2013-10-22 05:29 Csimbi Note Edited: 0000600
2013-10-22 05:29 Csimbi Note Edited: 0000600
2013-10-22 05:41 Csimbi Note Edited: 0000600
2013-10-22 14:47 Dark Byte Note Added: 0000601
2013-10-22 14:47 Dark Byte Status new => resolved
2013-10-22 14:47 Dark Byte Resolution open => fixed
2013-10-22 14:47 Dark Byte Assigned To => Dark Byte
+Issue History