Dear all, I have a question about jumping to some specific label in other file(in Keil C51 project)
Ex. In file A there is one label named _xxx. In file B can we use
goto _xxx
? (maybe _xxx should be declared as extern, right ?)
The reason why I want this is: We did NOT want to do the tasks before label _xxx because they are wrong...! And unfornately file A is located in ROM and we can not modify it...
So we want to just jump to label _xxx and skip wrong codes....
Thanks for your opinion.(I guess I can use "goto" to jump out of current function...)
Is there any way to solve this issue ?
Absolute address of Label _xxx is known and can I use inline assembly in C51 to jump to this address ?
Thanks in advance...
I'm a bit confused about your terminology.
You use name "goto" which is a keyword in C. But this goto will not allow you to jump out of your current function, because of all issues with stack frames, auto variables, stack cleanup, register variables, ...
For assembler, you can jump anywhere. Since the destination is a fixed location in ROM, you have to give the assembler code the absolute address.
More detailed information is:
File A located in ROM
... // wrong code here _xxx // label ... // OK code
File B in RAM
ccc // corrected code here goto _xxx // this can skip wrong code in File A
Thus the calling sequence will be: - execute corrected code in File B - jump to ROM code labeled _xxx - execute OK code in File A
Note: We still want to execute the remaining codes after label _xxx in ROM !!!
View all questions in Keil forum