there is something that is don't understand in this code
using System;
namespace hello
{
public class Program
{
public static void Main(string[] args)
{
string a = "hi";
Console.WriteLine(a);
a = "bye";
Console.WriteLine(a);
}
}
}
this code looks in JIT asm like this
hello.Program..ctor()
L0000: ret
hello.Program.Main(System.String[])
L0000: sub rsp, 0x28
L0004: mov rcx, 0x28cfff6fd60
L000e: mov rcx, [rcx]
L0011: call System.Console.WriteLine(System.String)
L0016: mov rcx, 0x28cfff6fd58
L0020: mov rcx, [rcx]
L0023: add rsp, 0x28
L0027: jmp System.Console.WriteLine(System.String)
Why is there sub/add rsp, 0x28
in L0000
and L0023
?