Tôi vừa mới nhận thấy một số mã ngôn ngữ lắp ráp lạ của phương thức chính trống.Giải thích việc lắp ráp lạ của hàm C `main` trống bằng trình biên dịch Visual C++
//filename: main.c
void main()
{
}
tháo:
push ebp
mov ebp,esp
sub esp,0C0h; why on the earth is it reserving 192 bytes?
push ebx
push esi
push edi ; good compiler. Its saving ebx, esi & edi values.
lea edi,[ebp-0C0h] ; line 1
mov ecx,30h ; line 2
mov eax,0CCCCCCCCh ; line 3
rep stos dword ptr es:[edi] ; line 4
xor eax,eax ; returning value 0. Code following this line is explanatory.
pop edi ; restoring the original states of edi,esi & ebx
pop esi
pop ebx
mov esp,ebp
pop ebp
ret
- tại sao trên trái đất là nó đặt 192 byte cho chức năng mà không có bất kỳ biến
- whats up với bốn dòng: dòng 1, dòng 2, dòng 3, dòng 4? nó đang cố gắng làm gì & TẠI SAO?
tại sao cú pháp mã không được đánh dấu? – claws
Lắp ráp nào được tạo ra khi bạn lắp ráp một tuyên bố chính không trống, và điều gì xảy ra khi bạn thay đổi kiểu trả về của main thành int? –
Thật đáng để chỉ ra rằng lợi nhuận chính int. Sử dụng void cho main không phải là juju tốt. – nmichaels