ふと確認したくなったので

~/tmp[0] % cat test.c
#include <ruby.h>
VALUE f() {
    return INT2FIX(1);
}
~/tmp[0] % gcc -I/usr/include/ruby-1.9.0/ -I/usr/include/ruby-1.9.0/i486-linux/ test.c -c
~/tmp[0] % objdump -S test.o

test.o:     file format elf32-i386


Disassembly of section .text:

00000000 <f>:
   0:   55                      push   %ebp
   1:   89 e5                   mov    %esp,%ebp
   3:   b8 03 00 00 00          mov    $0x3,%eax
   8:   5d                      pop    %ebp
   9:   c3                      ret

ですよねー。「INT2FIX(1)とかはコンパイル時にコンパイラさんが頑張って即値にしてくれるよね? ああ、してくれるねやっぱり」という話です。

test