Pytania oznaczone «assembly»

Pytania dotyczące programowania w asemblerze (ASM). UPEWNIJ SIĘ TAKŻE TAGOWAĆ procesor i / lub zestaw instrukcji, z którego korzystasz, a także asembler. OSTRZEŻENIE: W przypadku zestawów .NET użyj zamiast tego znacznika [.net-assembly]. W przypadku Java ASM użyj zamiast tego tagu [java-bytecode-asm].

1574
Czy <szybciej niż <=?

Jest if( a < 901 )szybszy niż if( a <= 900 ). Niezupełnie jak w tym prostym przykładzie, ale występują niewielkie zmiany wydajności w złożonym kodzie pętli. Podejrzewam, że ma to coś wspólnego z wygenerowanym kodem maszynowym, na wypadek, gdyby było to w ogóle...

475
Kiedy montaż jest szybszy niż C?

Jednym z podanych powodów znajomości asemblera jest to, że czasami można go użyć do napisania kodu, który będzie bardziej wydajny niż pisanie tego kodu w języku wyższego poziomu, w szczególności C. Jednak słyszałem też wielokrotnie, że chociaż nie jest to całkowicie fałszywe, przypadki, w których...

320
Jaki jest cel stosu? Dlaczego tego potrzebujemy?

Uczę się teraz MSIL, aby nauczyć się debugować moje aplikacje C # .NET. Zawsze zastanawiałem się: jaki jest cel stosu? Wystarczy umieścić moje pytanie w kontekście: dlaczego istnieje transfer z pamięci na stos lub „ładowanie”? Z drugiej strony, dlaczego istnieje przeniesienie ze stosu do...

256
Używasz GCC do stworzenia czytelnego zestawu?

Zastanawiałem się, jak użyć GCC na moim źródłowym pliku C do zrzucenia mnemonicznej wersji kodu maszynowego, aby zobaczyć, w jaki sposób mój kod jest kompilowany. Możesz to zrobić w Javie, ale nie byłem w stanie znaleźć sposobu w GCC. Próbuję ponownie napisać metodę C w asemblerze i zobaczenie,...

244
Co to jest retpolina i jak działa?

Aby zminimalizować ryzyko ujawnienia pamięci jądra lub pamięci międzyprocesowej ( atak Spectre ), jądro Linux 1 zostanie skompilowane z nową opcją , -mindirect-branch=thunk-externwprowadzoną w gcccelu wykonywania wywołań pośrednich za pośrednictwem tak zwanej retpoliny . To wydaje się być nowo...

243
Jak wygląda język asemblera?

Dawno, dawno temu, aby na przykład napisać asembler x86, miałbyś instrukcję mówiącą: „załaduj rejestr EDX wartością 5”, „zwiększ rejestr EDX” itp. W nowoczesnych procesorach, które mają 4 rdzenie (lub nawet więcej), na poziomie kodu maszynowego wygląda to tak, jakby były 4 oddzielne procesory (tj....