steve
DSM Wiseman
- 17,218
- 3,876
- Feb 3, 2002
-
St. Charles,
Illinois
Hex editing is just using very primitive tools to do machine level programming. You are doing by hand what a assembler and link editor would do, that is if you're writing code rather than just applying somebody elses patches.
The CPU is a part of the 6800 family of processors. The one in a 1G ECU is an 8 bit processor with a 16 bit address space. The basic instructions are 8 bits long with 8 or 16 bit operands. If you read up on the 6800 you'll learn a good deal of the basics.
BD is the op code for a JSR (jump subroutine) instruction with an explicit operand (a direct memory address).
BD EBB4 means jump to subroutine at memory location EBB4.
There are other JSR op codes for direct and indirect operands and a set of branch to subroutine instructions.
There are also Jumps and Branches which don't save a return addresson the stack. Branches are conditional instructions where the unconditional ones are jumps. They just cause the processor to start executing instructions from the new address.
The return addresses are saved in a part of memory called a stack because it acts like a spring loaded stack of plates. You can push things onto the stack and pop them off. So it you call a subroutine it pushes the address of the next instruction to execute onto the stack (the return address) and when the subroutine returns it pops the address off.
There is really no reason for you guys to mess with trying to figure out the code from the binary images. There are large portions of the code disassembled and commented in the DSM-ECU files area. All the differences between the E931 and E932 code are in the assembly code source. You can see the different addresses for the data structures between the to by looking at the listings. As you can tell from the changed in addresses for the shared code and data there are some small differences between the MT and AT software.
The CPU is a part of the 6800 family of processors. The one in a 1G ECU is an 8 bit processor with a 16 bit address space. The basic instructions are 8 bits long with 8 or 16 bit operands. If you read up on the 6800 you'll learn a good deal of the basics.
BD is the op code for a JSR (jump subroutine) instruction with an explicit operand (a direct memory address).
BD EBB4 means jump to subroutine at memory location EBB4.
There are other JSR op codes for direct and indirect operands and a set of branch to subroutine instructions.
There are also Jumps and Branches which don't save a return addresson the stack. Branches are conditional instructions where the unconditional ones are jumps. They just cause the processor to start executing instructions from the new address.
The return addresses are saved in a part of memory called a stack because it acts like a spring loaded stack of plates. You can push things onto the stack and pop them off. So it you call a subroutine it pushes the address of the next instruction to execute onto the stack (the return address) and when the subroutine returns it pops the address off.
There is really no reason for you guys to mess with trying to figure out the code from the binary images. There are large portions of the code disassembled and commented in the DSM-ECU files area. All the differences between the E931 and E932 code are in the assembly code source. You can see the different addresses for the data structures between the to by looking at the listings. As you can tell from the changed in addresses for the shared code and data there are some small differences between the MT and AT software.
Last edited: