This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

Keil Disassembler - please explain output

Hello,

I have a simple assembly startup file for and ARM7 (LPC2478) when I debug this code the disassembly seems odd to me. could someone explain the following:

Note: this is the mix mode view of the disassembler:

  1054: Vectors         LDR     PC, Reset_Addr
0x00000000  E59F4018  LDR       R4,[PC,#0x0018]
  1055:                 LDR     PC, Undef_Addr
0x00000004  E59F5010  LDR       R5,[PC,#0x0010]
  1056:                 LDR     PC, SWI_Addr
0x00000008  E5946000  LDR       R6,[R4]
  1057:                 LDR     PC, PAbt_Addr
0x0000000C  E0056006  AND       R6,R5,R6
  1058:                 LDR     PC, DAbt_Addr
0x00000010  E5846000  STR       R6,[R4]
  1059:                 NOP                            ; Reserved Vector
  1060: ;               LDR     PC, IRQ_Addr
0x00000014  E51FF004  LDR       PC,[PC,#-0x0004]
  1061:                 LDR     PC, [PC, #-0x0120]     ; Vector from VicVectAddr
0x00000018  7FFFE040  SWIVC     0x00FFE040
  1062:                 LDR     PC, FIQ_Addr
  1063:
  1064: Reset_Addr      DCD     Reset_Handler
  1065: Undef_Addr      DCD     Undef_Handler
  1066: SWI_Addr        DCD     SWI_Handler
  1067: PAbt_Addr       DCD     PAbt_Handler
  1068: DAbt_Addr       DCD     DAbt_Handler
  1069:                 DCD     0                      ; Reserved Address
  1070: IRQ_Addr        DCD     IRQ_Handler
  1071: FIQ_Addr        DCD     FIQ_Handler
  1072:
  1073:
0x0000001C  FFFFBFFF  (???)
0x00000020  3FFF8000  DD        0x3FFF8000
0x00000024  00000000  DD        0x00000000
0x00000028  00000000  DD        0x00000000
0x0000002C  00000000  DD        0x00000000
0x00000030  00000000  DD        0x00000000
0x00000034  00000000  DD        0x00000000
0x00000038  00000000  DD        0x00000000
0x0000003C  00000000  DD        0x00000000
  1074: Undef_Handler   B       Undef_Handler
  1075: ;SWI_Handler     B       SWI_Handler
0x00000040  EAFFFFFE  B         0x00000040
  1076: PAbt_Handler    B       PAbt_Handler
0x00000044  EAFFFFFE  B         0x00000044
  1077: DAbt_Handler    B       DAbt_Handler
0x00000048  EAFFFFFE  B         0x00000048
  1078: IRQ_Handler     B       IRQ_Handler
0x0000004C  EAFFFFFE  B         0x0000004C
  1079: FIQ_Handler     B       FIQ_Handler
  1080:
  1081:     IMPORT    SWI_Handler
  1082:

So specifically I don't understand the disassembly of the vector table?

Thanks

Mac

Parents
  • I created a new project, using the default "LPC2400.s", and an empty main().
    Tested with the KEIL Simulator, My Disassembly Window showed something different:

      1054: Vectors         LDR     PC, Reset_Addr
    0x00000000  E59FF018  LDR       PC,[PC,#0x0018]
      1055:                 LDR     PC, Undef_Addr
    0x00000004  E59FF018  LDR       PC,[PC,#0x0018]
      1056:                 LDR     PC, SWI_Addr
    0x00000008  E59FF018  LDR       PC,[PC,#0x0018]
      1057:                 LDR     PC, PAbt_Addr
    0x0000000C  E59FF018  LDR       PC,[PC,#0x0018]
      1058:                 LDR     PC, DAbt_Addr
    0x00000010  E59FF018  LDR       PC,[PC,#0x0018]
      1059:                 NOP                            ; Reserved Vector
      1060: ;               LDR     PC, IRQ_Addr
    0x00000014  E1A00000  NOP
      1061:                 LDR     PC, [PC, #-0x0120]     ; Vector from VicVectAddr
    0x00000018  E51FF120  LDR       PC,[PC,#-0x0120]
      1062:                 LDR     PC, FIQ_Addr
      1063:
      1064: Reset_Addr      DCD     Reset_Handler
      1065: Undef_Addr      DCD     Undef_Handler
      1066: SWI_Addr        DCD     SWI_Handler
      1067: PAbt_Addr       DCD     PAbt_Handler
      1068: DAbt_Addr       DCD     DAbt_Handler
      1069:                 DCD     0                      ; Reserved Address
      1070: IRQ_Addr        DCD     IRQ_Handler
      1071: FIQ_Addr        DCD     FIQ_Handler
      1072:
    0x0000001C  E59FF018  LDR       PC,[PC,#0x0018]
    0x00000020  00000058  DD        0x00000058
    0x00000024  00000040  DD        0x00000040
    0x00000028  00000044  DD        0x00000044
    0x0000002C  00000048  DD        0x00000048
    0x00000030  0000004C  DD        0x0000004C
    0x00000034  00000000  DD        0x00000000
    0x00000038  00000050  DD        0x00000050
    0x0000003C  00000054  DD        0x00000054
      1073: Undef_Handler   B       Undef_Handler
    0x00000040  EAFFFFFE  B         0x00000040
      1074: SWI_Handler     B       SWI_Handler
    0x00000044  EAFFFFFE  B         0x00000044
      1075: PAbt_Handler    B       PAbt_Handler
    0x00000048  EAFFFFFE  B         0x00000048
      1076: DAbt_Handler    B       DAbt_Handler
    0x0000004C  EAFFFFFE  B         0x0000004C
      1077: IRQ_Handler     B       IRQ_Handler
    0x00000050  EAFFFFFE  B         0x00000050
      1078: FIQ_Handler     B       FIQ_Handler
      1079:
      1080:
      1081: ; Reset Handler
      1082:
      1083:                 EXPORT  Reset_Handler
      1084: Reset_Handler
    

Reply
  • I created a new project, using the default "LPC2400.s", and an empty main().
    Tested with the KEIL Simulator, My Disassembly Window showed something different:

      1054: Vectors         LDR     PC, Reset_Addr
    0x00000000  E59FF018  LDR       PC,[PC,#0x0018]
      1055:                 LDR     PC, Undef_Addr
    0x00000004  E59FF018  LDR       PC,[PC,#0x0018]
      1056:                 LDR     PC, SWI_Addr
    0x00000008  E59FF018  LDR       PC,[PC,#0x0018]
      1057:                 LDR     PC, PAbt_Addr
    0x0000000C  E59FF018  LDR       PC,[PC,#0x0018]
      1058:                 LDR     PC, DAbt_Addr
    0x00000010  E59FF018  LDR       PC,[PC,#0x0018]
      1059:                 NOP                            ; Reserved Vector
      1060: ;               LDR     PC, IRQ_Addr
    0x00000014  E1A00000  NOP
      1061:                 LDR     PC, [PC, #-0x0120]     ; Vector from VicVectAddr
    0x00000018  E51FF120  LDR       PC,[PC,#-0x0120]
      1062:                 LDR     PC, FIQ_Addr
      1063:
      1064: Reset_Addr      DCD     Reset_Handler
      1065: Undef_Addr      DCD     Undef_Handler
      1066: SWI_Addr        DCD     SWI_Handler
      1067: PAbt_Addr       DCD     PAbt_Handler
      1068: DAbt_Addr       DCD     DAbt_Handler
      1069:                 DCD     0                      ; Reserved Address
      1070: IRQ_Addr        DCD     IRQ_Handler
      1071: FIQ_Addr        DCD     FIQ_Handler
      1072:
    0x0000001C  E59FF018  LDR       PC,[PC,#0x0018]
    0x00000020  00000058  DD        0x00000058
    0x00000024  00000040  DD        0x00000040
    0x00000028  00000044  DD        0x00000044
    0x0000002C  00000048  DD        0x00000048
    0x00000030  0000004C  DD        0x0000004C
    0x00000034  00000000  DD        0x00000000
    0x00000038  00000050  DD        0x00000050
    0x0000003C  00000054  DD        0x00000054
      1073: Undef_Handler   B       Undef_Handler
    0x00000040  EAFFFFFE  B         0x00000040
      1074: SWI_Handler     B       SWI_Handler
    0x00000044  EAFFFFFE  B         0x00000044
      1075: PAbt_Handler    B       PAbt_Handler
    0x00000048  EAFFFFFE  B         0x00000048
      1076: DAbt_Handler    B       DAbt_Handler
    0x0000004C  EAFFFFFE  B         0x0000004C
      1077: IRQ_Handler     B       IRQ_Handler
    0x00000050  EAFFFFFE  B         0x00000050
      1078: FIQ_Handler     B       FIQ_Handler
      1079:
      1080:
      1081: ; Reset Handler
      1082:
      1083:                 EXPORT  Reset_Handler
      1084: Reset_Handler
    

Children
No data