6502_gcc.S编译出来基本无差异
This commit is contained in:
@@ -103,9 +103,8 @@ _10:// BPL *
|
||||
// ----------------------------------------------------------------------------
|
||||
tst m6502_nz,#0x80000000
|
||||
ldrsb r0,[m6502_pc],#1
|
||||
IT EQ
|
||||
ITT EQ
|
||||
addeq m6502_pc,m6502_pc,r0
|
||||
IT EQ
|
||||
subeq cycles,cycles,#256
|
||||
fetch 2
|
||||
// ----------------------------------------------------------------------------
|
||||
@@ -230,9 +229,8 @@ _30:// BMI *
|
||||
// ----------------------------------------------------------------------------
|
||||
tst m6502_nz,#0x80000000
|
||||
ldrsb r0,[m6502_pc],#1
|
||||
IT NE
|
||||
ITT NE
|
||||
addne m6502_pc,m6502_pc,r0
|
||||
IT NE
|
||||
subne cycles,cycles,#256
|
||||
fetch 2
|
||||
// ----------------------------------------------------------------------------
|
||||
@@ -346,9 +344,8 @@ _50:// BVC *
|
||||
// ----------------------------------------------------------------------------
|
||||
tst cycles,#CYC_V
|
||||
ldrsb r0,[m6502_pc],#1
|
||||
IT EQ
|
||||
ITT EQ
|
||||
addeq m6502_pc,m6502_pc,r0
|
||||
IT EQ
|
||||
subeq cycles,cycles,#256
|
||||
fetch 2
|
||||
// ----------------------------------------------------------------------------
|
||||
@@ -442,8 +439,7 @@ _6A:// ROR
|
||||
_6C:// JMP ($nnnn) JMP ($data16) <EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѱַ *********************************
|
||||
// ----------------------------------------------------------------------------
|
||||
doABS
|
||||
ldr r1, =memmap_tbl
|
||||
add r1, globalptr
|
||||
add r1, globalptr,#memmap_tbl
|
||||
and r2,addy,#0xE000 //
|
||||
// ldr r1,[r1,r2,lsr#11] // >>11 addr&0x7FF
|
||||
lsr r0,r2,#11
|
||||
@@ -473,9 +469,8 @@ _70:// BVS *
|
||||
// ----------------------------------------------------------------------------
|
||||
tst cycles,#CYC_V
|
||||
ldrsb r0,[m6502_pc],#1
|
||||
IT NE
|
||||
ITT NE
|
||||
addne m6502_pc,m6502_pc,r0
|
||||
IT NE
|
||||
subne cycles,cycles,#256
|
||||
fetch 2
|
||||
// ----------------------------------------------------------------------------
|
||||
@@ -578,9 +573,8 @@ _90:// BCC *
|
||||
// ----------------------------------------------------------------------------
|
||||
tst cycles,#CYC_C // Test Carry
|
||||
ldrsb r0,[m6502_pc],#1
|
||||
IT EQ
|
||||
ITT EQ
|
||||
addeq m6502_pc,m6502_pc,r0
|
||||
IT EQ
|
||||
subeq cycles,cycles,#256
|
||||
fetch 2
|
||||
// ----------------------------------------------------------------------------
|
||||
@@ -708,9 +702,8 @@ _B0:// BCS *
|
||||
// ----------------------------------------------------------------------------
|
||||
tst cycles,#CYC_C // Test Carry
|
||||
ldrsb r0,[m6502_pc],#1
|
||||
IT NE
|
||||
ITT NE
|
||||
addne m6502_pc,m6502_pc,r0
|
||||
IT NE
|
||||
subne cycles,cycles,#256
|
||||
fetch 2
|
||||
// ----------------------------------------------------------------------------
|
||||
@@ -844,9 +837,8 @@ _D0:// BNE *
|
||||
// ----------------------------------------------------------------------------
|
||||
tst m6502_nz,#0xff
|
||||
ldrsb r0,[m6502_pc],#1
|
||||
IT NE
|
||||
ITT NE
|
||||
addne m6502_pc,m6502_pc,r0
|
||||
IT NE
|
||||
subne cycles,cycles,#256
|
||||
fetch 2
|
||||
// ----------------------------------------------------------------------------
|
||||
@@ -959,9 +951,8 @@ _F0:// BEQ *
|
||||
// ----------------------------------------------------------------------------
|
||||
tst m6502_nz,#0xff
|
||||
ldrsb r0,[m6502_pc],#1
|
||||
IT EQ
|
||||
ITT EQ
|
||||
addeq m6502_pc,m6502_pc,r0
|
||||
IT EQ
|
||||
subeq cycles,cycles,#256
|
||||
fetch 2
|
||||
// ----------------------------------------------------------------------------
|
||||
@@ -1066,8 +1057,7 @@ run6502:
|
||||
ldr cpu_zpage,=NES_RAM // r11
|
||||
ldr cpu_zpage,[cpu_zpage] // NES_RAM<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD>
|
||||
|
||||
ldr r1, =cpuregs
|
||||
add r1, globalptr
|
||||
add r1, globalptr,#cpuregs
|
||||
ldmia r1,{m6502_nz-m6502_pc} // restore 6502 state<EFBFBD>ָ<EFBFBD>6502״̬ r3-r9
|
||||
add cycles,cycles,r0
|
||||
|
||||
@@ -1081,8 +1071,7 @@ exit_run:
|
||||
cmp r0,#0x01;
|
||||
beq NMI6502 // EQ <EFBFBD><EFBFBD><EFBFBD><EFBFBD>(EQual)
|
||||
exit_nmi:
|
||||
ldr r0, =cpuregs
|
||||
add r0, globalptr
|
||||
add r0, globalptr,#cpuregs
|
||||
stmia r0,{m6502_nz-m6502_pc} // <EFBFBD><EFBFBD><EFBFBD><EFBFBD>6502״̬ r3-r9
|
||||
ldmfd sp!,{r4-r11,pc} // exit
|
||||
@ .end
|
||||
@@ -1142,8 +1131,7 @@ CPU_reset: // called by loadcart (r0-r9 are free to use)
|
||||
mov m6502_x,#0
|
||||
mov m6502_y,#0
|
||||
mov m6502_nz,#0
|
||||
ldr m6502_rmem, =readmem_tbl
|
||||
add m6502_rmem, globalptr // <EFBFBD><EFBFBD>readmem_tbl<EFBFBD>ĵ<EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD>m6502_rmem
|
||||
add m6502_rmem, globalptr,#readmem_tbl // <EFBFBD><EFBFBD>readmem_tbl<EFBFBD>ĵ<EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD>m6502_rmem
|
||||
|
||||
// ldr r0,=NES_RAM+0x100 // 256
|
||||
ldr r0,=NES_RAM // NES_RAM<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD>
|
||||
@@ -1159,8 +1147,7 @@ CPU_reset: // called by loadcart (r0-r9 are free to use)
|
||||
ldr r12,=RES_VECTOR // <EFBFBD><EFBFBD>λ<EFBFBD>ж<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ
|
||||
bl Vec6502
|
||||
|
||||
ldr r0, =cpuregs
|
||||
add r0, globalptr // <EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD>ַ
|
||||
add r0, globalptr,#cpuregs // <EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD>ַ
|
||||
stmia r0,{m6502_nz-m6502_pc} // <EFBFBD><EFBFBD><EFBFBD><EFBFBD>6502״̬
|
||||
|
||||
ldr r1,=exit_run
|
||||
@@ -1365,8 +1352,7 @@ dma_W: // (4014) sprite DMA transfer
|
||||
sub cycles,cycles,#512*256
|
||||
stmfd sp!,{r3,lr}
|
||||
and r1,r0,#0xe0
|
||||
ldr r2, =memmap_tbl
|
||||
add r2, globalptr
|
||||
add r2, globalptr,#memmap_tbl
|
||||
lsr r1,r1,#3
|
||||
ldr r2,[r2,r1]
|
||||
and r0,r0,#0xff
|
||||
|
@@ -156,8 +156,7 @@ flush: // update m6502_pc & lastbank
|
||||
ldr r1,[globalptr,#lastbank]
|
||||
sub r9,r9,r1
|
||||
and r1,r9,#0xE000 // //r9<EFBFBD><EFBFBD>0xe000<EFBFBD><EFBFBD>λ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
ldr r2, =memmap_tbl
|
||||
add r2, globalptr // //<EFBFBD>Ѵ洢<EFBFBD><EFBFBD>ӳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD>r2
|
||||
add r2, globalptr,#memmap_tbl // //<EFBFBD>Ѵ洢<EFBFBD><EFBFBD>ӳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD>r2
|
||||
lsr r1,r1,#11 // //>>11λ r1/2048
|
||||
ldr r0,[r2,r1] // //<EFBFBD><EFBFBD>ȡr2<EFBFBD><EFBFBD>ַ+r1ƫ<EFBFBD>Ƶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD>r0
|
||||
|
||||
|
@@ -9,8 +9,7 @@
|
||||
// <EFBFBD><EFBFBD> 6502 PC <EFBFBD><EFBFBD>ַת<EFBFBD><EFBFBD>Ϊ ROM ƫ<EFBFBD>Ƶ<EFBFBD>ַ
|
||||
.macro encodePC
|
||||
and r1, m6502_pc, #0xE000 // r9 & 0xE000
|
||||
ldr r2, =memmap_tbl
|
||||
add r2, globalptr // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD>ӳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><EFBFBD> r2
|
||||
add r2, globalptr,#memmap_tbl // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD>ӳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><EFBFBD> r2
|
||||
lsr r0, r1, #11 // >>11λ
|
||||
ldr r0, [r2, r0] // <EFBFBD><EFBFBD> r2 + r0 <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD> r0
|
||||
str r0, [globalptr,#lastbank] // <EFBFBD><EFBFBD><EFBFBD>浱ǰ bank ƫ<EFBFBD><EFBFBD>
|
||||
|
Reference in New Issue
Block a user