delorie.com/archives/browse.cgi | search |
X-Authentication-Warning: | delorie.com: mail set sender to djgpp-bounces using -f |
From: | cbramix AT libero DOT it (Carlo) |
Newsgroups: | comp.os.msdos.djgpp |
Subject: | problem with assembly constraints |
Date: | 19 Nov 2003 15:59:41 -0800 |
Organization: | http://groups.google.com |
Lines: | 51 |
Message-ID: | <d2ad330a.0311191559.39d6b67a@posting.google.com> |
NNTP-Posting-Host: | 151.25.153.117 |
X-Trace: | posting.google.com 1069286381 6214 127.0.0.1 (19 Nov 2003 23:59:41 GMT) |
X-Complaints-To: | groups-abuse AT google DOT com |
NNTP-Posting-Date: | Wed, 19 Nov 2003 23:59:41 +0000 (UTC) |
To: | djgpp AT delorie DOT com |
DJ-Gateway: | from newsgroup comp.os.msdos.djgpp |
Reply-To: | djgpp AT delorie DOT com |
Hello everyone, I'm asking your help for solving a strange problem. Let's take this code: static void function_1(void) { printf("function 1 called\n"); } void function_2(void) { asm (" jmp _function_1 "); } This is a very simple example about what I want to do. At the end of function_2() I want to call function_1(). My optimization is: jmp function_1 instead of: call function_1 ret This is an optimization done by newer GCC versions too when it compiles the source. But for some reasons I must do it myself. The real problem happens when the global optimizer find that function_1() doesn't seem to be used, and since it's declared as "static" it removes it!!! And the final result is that function_1() is missing. I haven't this problems with my old GCC 2.7.2.1, so I tried to do some tests... I changed to: asm (" jmp %0 " ::"i"(function_1) ); but without success, because GCC converts it to: jmp $_function_1 and the '$' character stops AS.EXE during assembling. I'm weak about constraints usage, can you give me some suggestions for correcting this line? Sincerely, Carlo
webmaster | delorie software privacy |
Copyright © 2019 by DJ Delorie | Updated Jul 2019 |