Mercurial > repos > simple16
comparison src/cpu.c @ 36:5683d9ba9acc
Fix call instruction for the case in which A reg == DST reg
author | Michael Pavone <pavone@retrodev.com> |
---|---|
date | Sun, 03 Apr 2016 21:27:03 -0700 |
parents | 083347ccd508 |
children | 6e7bfe83d2b0 |
comparison
equal
deleted
inserted
replaced
35:5a5e02d1acf1 | 36:5683d9ba9acc |
---|---|
305 case CMP: | 305 case CMP: |
306 tmp = context->regs[dst] - context->regs[a]; | 306 tmp = context->regs[dst] - context->regs[a]; |
307 update_flags_arith(context, tmp); | 307 update_flags_arith(context, tmp); |
308 return; | 308 return; |
309 case CALL: | 309 case CALL: |
310 context->regs[dst] = context->regs[REG_PC] - 2; | 310 tmp = context->regs[REG_PC] - 2; |
311 context->regs[REG_PC] = context->regs[a]; | 311 context->regs[REG_PC] = context->regs[a]; |
312 context->regs[dst] = tmp; | |
312 context->state = STATE_NEED_FETCH; | 313 context->state = STATE_NEED_FETCH; |
313 return; | 314 return; |
314 case SWAP: | 315 case SWAP: |
315 tmp = context->regs[dst]; | 316 tmp = context->regs[dst]; |
316 context->regs[dst] = context->regs[a]; | 317 context->regs[dst] = context->regs[a]; |