Re: Hardcoded insert string for the event messages

Andy wrote:
On Feb 3, 8:04 pm, "Rick C. Hodgin"
Start out with small programs:

#include <stdio>
int main()
printf("Hello world.\n");


And go up from there. You'll learn about the stack, how parameter variables are passed between functions, return values are obtained, etc.

- Rick C. Hodgin

Have a C compiler.

Working with it when I have time.


I believe the code that I posted is Visual Studio C++ source code.

I installed Visual Studio.

When I figure out how to add the headers, resource files, etc.,
I'll make the executable, etc. :-)

This isn't what you'll see, but FWIW, here's what gcc does with it:

.file "hwc.c"
.section .rodata.str1.1,"aMS",@progbits,1
.string "Hello, World!"
.p2align 4,,15
..globl main
.type main, @function
lea %ecx, [%esp+4]
and %esp, -16
push DWORD PTR [%ecx-4]
push %ebp
mov %ebp, %esp
push %ecx
sub %esp, 4
call puts
add %esp, 4
xor %eax, %eax
pop %ecx
pop %ebp
lea %esp, [%ecx-4]
.size main, .-main
.ident "GCC: (GNU) 4.2.1"
.section .note.GNU-stack,"",@progbits

Note that gcc has replaced the call to printf with a call to puts. Uppity little bugger, innit? Well, I'd probably use puts instead of printf for just a string anyway, so I guess it's okay...

Note the way the parameter is passed. Instead of a "push", as you'd probably code it in asm, it's done as a mov! Faster! (at least if you're doing a bunch of them) A slightly different prolog and epilog than you're used to seeing, too, probably. I don't know if you're going to learn anything useful from this or not...

It'll be interesting to see what VS does with it.


Relevant Pages

  • Re: Why I can not use my own blocks in 1.9?
    ... test(&lambda {|x,y| puts "Won't get here in 1.9.1"}) ... non-lambda Proc. ... elements to be assigned to the various parameter variables. ... individual elements and assigns the elements to the parameter variables. ...
  • Re: What does *args do?
    ... Normally, if you define a method with two parameter variables, for ... You still need to call showwith at least one argument so that ruby ... extra arguments are gathered up into an array and then assigned to the ...