move under IDA

Talk about development tools here

Moderator: BigEvilCorporation

Post Reply
KanedaFr
Administrateur
Posts: 1139
Joined: Tue Aug 29, 2006 10:56 am
Contact:

move under IDA

Post by KanedaFr » Mon Sep 27, 2010 8:39 am

Hi,

I'm currently disasm a rom and I'm stuck on a strange problem.

0x2F 0x38 0xB0 0x3A must be read as
move.l (0xFFB03A).w, -(SP)
but ida write
move.l (0xFFFFB03A).w, -(SP)

and so I miss all features since 0xFFFFB03A isn't on a valid memory range..
does someone know how to setup IDA so RAM addressing is valid ?

thanks

GManiac
Very interested
Posts: 92
Joined: Thu Jan 29, 2009 2:05 am
Location: Russia

Post by GManiac » Mon Sep 27, 2010 9:06 am

Right address will be 0xFFFFB03A because of sign-extension. Job of disassembler is to show you the right address (0xFFFFB03A), it doesn't know about 24-bits address wire. And job of emulator is to implement address correctly, knowing about 24 bits, so emulator will get 0x00FFB03A.

As to IDA I thnk there are some ways:
- define range of adresses
- write script cutting all adresses to 24-bit mode.

KanedaFr
Administrateur
Posts: 1139
Joined: Tue Aug 29, 2006 10:56 am
Contact:

Post by KanedaFr » Mon Sep 27, 2010 9:14 am

I was about to create a RAM from FFFF0000 and not 00FF0000 since IDA doesn't like it...
it seems it's the only valuable solution....unless RAM values are hardcoded :(

no way to create mirroring address on IDA ? it would be cool to say FFFF0001 is the same thing as 00FF0001

HardWareMan
Very interested
Posts: 745
Joined: Sat Dec 15, 2007 7:49 am
Location: Kazakhstan, Pavlodar

Post by HardWareMan » Mon Sep 27, 2010 9:35 am

I use my own IDA Loader. I simply create two segments: $00FFxxxx and $FFFFxxxx. I dont know, is it possible to create one segment and alias to it.

Chilly Willy
Very interested
Posts: 2984
Joined: Fri Aug 17, 2007 9:33 pm

Post by Chilly Willy » Mon Sep 27, 2010 10:24 pm

KanedaFr wrote:I was about to create a RAM from FFFF0000 and not 00FF0000 since IDA doesn't like it...
it seems it's the only valuable solution....unless RAM values are hardcoded :(

no way to create mirroring address on IDA ? it would be cool to say FFFF0001 is the same thing as 00FF0001
You probably want two segments: 0x00FF0000 to 0x00FF7FFF, and 0xFFFF8000 to 0xFFFFFFFF. The second segment can use short absolute addressing; the first can't.

Post Reply