EmbDev.net

Forum: ARM programming with GCC/GNU tools Jump tables for gcc-arm cross compiler


von Farhan (Guest)


Attached files:

Rate this post
useful
not useful
I would really appreciate if some one could tell me how to initiate jump 
tables for gnu arm assembler. I have written the below code at the end 
of my .s file. I have tried all sorts of things (using .align, .p2align, 
.long etc) but i can't get the _input_case_table to get the 4 byte 
addresses for str_help and str_sum. Assuming input starts at 0x100e4 
memory in the debugger, I have reproduced the 32 byte memory location 
following it.
1
/*
2
 * --- Data follows ---
3
 */
4
5
6
/* Let's pretend this command was entered by the user */
7
input:  .ascii "sum"
8
  .byte 0, 0, 0, 0, 0
9
  
10
str_help:
11
  .ascii "HELP"
12
  .byte 0, 0, 0, 0
13
str_sum:
14
  .ascii "SUM"
15
  .byte 0, 0, 0
16
17
/* Recognized commands */
18
_input_case_table:
19
  .word  str_sum
20
  .word  str_help

---------_GDB_MEMORY_OUTPUT-------------------
Attached in file

I am using the gcc-4.6-linux-arm-gnueabi compiler tool chain. Using 
gdb-multiarch with architecture set to armv4.
I am still new to this so any guidance would be much appreciated.

To reiterate my question, im tyring to compile code for armv4 32bit 
processor mode. I know how alignment and 'DCD' statements work but for 
Keil Development tools only. I would really appreciate if some one could 
point me how to do the using the GNU assembler.

von Kindergärtner (Guest)


Rate this post
useful
not useful
Maybe try:
1
_input_case_table:
2
  .word  =str_sum
3
  .word  =str_help

von Marc P. (marcvonwindscooting)


Rate this post
useful
not useful
Did you find out?

Surprisingly, I use your style since years, successfully.
Most recently for LPC800:
1
.text
2
.thumb
3
vectorTable:
4
        initialSP:      .word   0
5
        initialPC:      .word   _start+1
6
7
8
.global _start
9
_start:
10
        ...
The only difference is the presence of the labels.

Please log in before posting. Registration is free and takes only a minute.
Existing account
Do you have a Google/GoogleMail account? No registration required!
Log in with Google account
No account? Register here.