- Először égett le egy újságnál a GeForce RTX 5090
- NVIDIA GeForce RTX 5070 / 5070 Ti (GB205 / 203)
- AMD K6-III, és minden ami RETRO - Oldschool tuning
- Milyen billentyűzetet vegyek?
- 3D nyomtatás
- VR topik (Oculus Rift, stb.)
- Kormányok / autós szimulátorok topikja
- Milyen széket vegyek?
- Milyen notebookot vegyek?
- Azonnali fotós kérdések órája
-
PROHARDVER!
Új hozzászólás Aktív témák
-
-
pmonitor
aktív tag
válasz
pmonitor #19935 üzenetére
Röviden:
A struct gyakorlatilag azt jelenti, hogy a változót "HELYBEN" hozza létre.
A class azt jelenti, hogy a változót mindig a heap egy szabad területén hozza létre.Van ez a C# kód:
namespace IntOseEAzObject
{
public class Program
{
static void Main(string[] args)
{
int[] lngt = { 10, 20, 30 };
Struktura strct = new Struktura(10, 20, 30, lngt);
long lng = strct.lng;
int lng_2 = strct.lng_2;
int lng_3 = strct.lng_3;
int lng_4 = lngt[0];
int lng_5 = lngt[1];
int lng_6 = lngt[2];
Console.WriteLine("{0} {1} {2} {3} {4} {5}", lng, lng_2, lng_3, lng_4, lng_5, lng_6);
}
}
struct Struktura
{
public int lng;
public int lng_2;
public int lng_3;
public int[] list;
public Struktura(int lng, int lng_2, int lng_3, int[] list)
{
this.lng = lng;
this.lng_2 = lng_2;
this.lng_3 = lng_3;
this.list = list;
}
}
}
Ez assemblyben így mutatkozik meg(csak a releváns részt másolom be ide:int[] lngt = { 10, 20, 30 };
011508A5 mov ecx,63F6639Eh
011508AA mov edx,3
011508AF call CORINFO_HELP_NEWARR_1_VC (0107322Ch)
011508B4 mov dword ptr [ebp-70h],eax
011508B7 mov ecx,1084EF4h
011508BC call 65485DE0 ;ez a metódus adja vissza az eax-ban az lngt[] címét.
011508C1 mov dword ptr [ebp-74h],eax
011508C4 lea eax,[ebp-74h]
011508C7 push dword ptr [eax]
011508C9 mov ecx,dword ptr [ebp-70h]
011508CC call 65485A80
011508D1 mov eax,dword ptr [ebp-70h]
011508D4 mov dword ptr [ebp-40h],eax
Struktura strct = new Struktura(10, 20, 30, lngt);
011508D7 push 14h
011508D9 push 1Eh
011508DB push dword ptr [ebp-40h]
011508DE lea ecx,[ebp-50h]
011508E1 mov edx,0Ah
011508E6 call IntOseEAzObject.Struktura..ctor(Int32, Int32, Int32, Int32[]) (01150450h)
long lng = strct.lng;
011508EB lea eax,[ebp-50h]
011508EE mov eax,dword ptr [eax+4] ;Itt mindig az ebp-hez viszonyított helyzethez határozza meg. strct[0] esetén ebp+4
011508F1 cdq
011508F2 mov dword ptr [ebp-58h],eax
011508F5 mov dword ptr [ebp-54h],edx
int lng_2 = strct.lng_2;
011508F8 lea eax,[ebp-50h]
011508FB mov eax,dword ptr [eax+8] ;strct[1] esetén ebp+8
011508FE mov dword ptr [ebp-5Ch],eax
int lng_3 = strct.lng_3;
01150901 lea eax,[ebp-50h]
01150904 mov eax,dword ptr [eax+0Ch] ;strct[3] esetén ebp+12
01150907 mov dword ptr [ebp-60h],eax
int lng_4 = lngt[0];
0115090A mov eax,dword ptr [ebp-40h]
0115090D cmp dword ptr [eax+4],0
01150911 ja IntOseEAzObject.Program.Main(System.String[])+0D0h (01150918h)
01150913 call 656EFE40 ;referencia típus esetén(lngt[0]) mindig ezt a metódust hívja meg, ami az eax-ban adja vissza a referencia címét, ami a heap-ben van. Előtte nem véletleül ellenőrzi le, hogy érvényes-e a cím.
01150918 mov eax,dword ptr [eax+8]
0115091B mov dword ptr [ebp-64h],eax
int lng_5 = lngt[1];
0115091E mov eax,dword ptr [ebp-40h]
01150921 cmp dword ptr [eax+4],1
01150925 ja IntOseEAzObject.Program.Main(System.String[])+0E4h (0115092Ch)
01150927 call 656EFE40 ;lngt[1] esetén is ugyanazt a metódust hívja meg.
0115092C mov eax,dword ptr [eax+0Ch]
0115092F mov dword ptr [ebp-68h],eax
int lng_6 = lngt[2];
01150932 mov eax,dword ptr [ebp-40h]
01150935 cmp dword ptr [eax+4],2
01150939 ja IntOseEAzObject.Program.Main(System.String[])+0F8h (01150940h)
0115093B call 656EFE40 ;lngt2 esetén is ugyanazt a metódust hívja meg.
01150940 mov eax,dword ptr [eax+10h]
01150943 mov dword ptr [ebp-6Ch],eax
Console.WriteLine("{0} {1} {2} {3} {4} {5}", lng, lng_2, lng_3, lng_4, lng_5, lng_6);
01150946 mov eax,dword ptr ds:[483244Ch]
0115094C mov dword ptr [ebp-78h],eax
0115094F mov ecx,63F664BAh
01150954 mov edx,6A kódba magyarázatot is tettem. Érdemes elgondolkodni rajt. Sztem.
Új hozzászólás Aktív témák
● olvasd el a téma összefoglalót!
- Asus G752VS Gamer laptop eladó!
- Makulátlan iPad Air 5 (M1 chip) 64GB Wi-Fi + Cellular, prémium kiegészítőkkel!
- DJI AVATA 2 Fly More Combo drón - 3 akku, garancia, FPV RC 3, sok tartozék
- szinte új iPhone 16 Plus 128GB white fehér független Apple 3 év garancia ajándék
- Samsung Galaxy A32 5G 128GB, Kártyafüggetlen, 1 Év Garanciával
- HIBÁTLAN iPhone 12 mini 128GB Purple -1 ÉV GARANCIA - Kártyafüggetlen, MS3189, 95% Akkumulátor
- 129 - Lenovo Legion Pro 7 (16ARX8H) - AMD Ryzen 9 7945HX, RTX 4080
- LG UltraGear Gaming Monitorok -30%
- iKing.Hu - Honor Magic V2 Black Használt, karcmentes állapotban 16 GB RAM / 512 GB tárhely
- ÁRGARANCIA!Épített KomPhone Ryzen 5 7600X 32/64GB RAM RTX 5070 12GB GAMER PC termékbeszámítással
Állásajánlatok
Cég: FOTC
Város: Budapest