Re: Declare strings on stack, gas

Robert Plantz <[email protected]> Wed, 18 Apr 2012 12:34:39 -0700
Newsgroups org.kernel.vger.linux-assembly
Message-ID <[email protected]>
On 4/18/2012 7:58 AM, Daniel Hilst wrote:
> Is possible to declare strings on stack? I'm using mov + ebp offsets 
> to do something like that.. Is there an easier way to do it?
>
> Here is an sample off how I'm doing it: http://sprunge.us/UUZI
>
> The hex numbers are a "Hello World" string..
> I have tried .assci without success :(
>
> Thanks in advance!
>
>
Basically, you're asking if the compiler/assembler can initialize the 
stack to some known value. Since memory on the stack is dynamically 
allocated by the instructions:

doit:
       push    %ebp              ; Save caller's base pointer
       mov    %esp, %ebp         ; Establish our base pointer

       sub    $12, %esp          ; Allocate memory on the stack



the answer is 'no.' After you allocate stack memory (which now has 
garbage values), you need to copy known values there. Write your code in 
C and use the '-S' gcc option to see how the compiler does this. The 
'-S' option will generate the assembly language file foo.s from the C 
source file foo.c.

--Bob