Dla mnie to po prostu funky MOV. Jaki jest jego cel i kiedy powinienem go
x86-64 to 64-bitowe rozszerzenie architektury Intel x86
Dla mnie to po prostu funky MOV. Jaki jest jego cel i kiedy powinienem go
Po raz pierwszy zauważyłem w 2009 roku, że GCC (przynajmniej w moich projektach i na moich maszynach) ma tendencję do generowania zauważalnie szybszego kodu, jeśli optymalizuję pod kątem rozmiaru ( -Os) zamiast prędkości ( -O2lub -O3), i od tego czasu zastanawiam się, dlaczego. Udało mi się...
Mam dowolną listę zestawów .NET. Muszę programowo sprawdzić, czy każda biblioteka DLL została zbudowana dla x86 (w przeciwieństwie do x64 lub dowolnego procesora). czy to
Czytałem o operacjach montażu divi mulmontażu i postanowiłem zobaczyć je w akcji, pisząc prosty program w C: Podział pliku. C #include <stdlib.h> #include <stdio.h> int main() { size_t i = 9; size_t j = i / 5; printf("%zu\n",j); return 0; } A następnie generowanie kodu języka...
Tło: Podczas optymalizacji kodu Pascal za pomocą wbudowanego języka asemblera zauważyłem niepotrzebną MOVinstrukcję i usunąłem ją. Ku mojemu zaskoczeniu usunięcie niepotrzebnych instrukcji spowodowało spowolnienie programu . Przekonałem się, że dodanie arbitralnych, bezużytecznych MOVinstrukcji...
Poniższe linki wyjaśniają konwencje wywołań systemowych x86-32 zarówno dla UNIX (smak BSD), jak i Linux: http://www.int80h.org/bsdasm/#system-calls http://www.freebsd.org/doc/en/books/developers-handbook/x86-system-calls.html Ale jakie są konwencje wywołań systemowych x86-64 w systemach UNIX i...
Chcę ustalić, czy natywny zestaw jest zgodny jako x64 lub x86 z aplikacji kodu zarządzanego ( C # ). Myślę, że musi to być gdzieś w nagłówku PE, ponieważ moduł ładujący systemu operacyjnego musi znać te informacje, ale nie mogłem ich znaleźć. Oczywiście wolę to robić w kodzie zarządzanym, ale w...
Wydaje mi się, że znalazłem błąd w GCC podczas wdrażania PCN PRNG O'Neilla. ( Kod początkowy w Godbolt's Compiler Explorer ) Po pomnożeniu oldstateprzez MULTIPLIER(wynik przechowywany w rdi), GCC nie dodaje tego wyniku do INCREMENTmovabs'ing INCREMENTzamiast do rdx, który następnie jest...
Rust ma 128-bitowe liczby całkowite, które są oznaczone typem danych i128(i u128dla liczb całkowitych bez znaku): let a: i128 = 170141183460469231731687303715884105727; Jak Rust sprawia, że te i128wartości działają w systemie 64-bitowym; np. jak to robi na nich arytmetykę? Ponieważ o ile...
W x86-64 Tour Intel Podręczniki , czytam Być może najbardziej zaskakującym faktem jest to, że instrukcja taka jak MOV EAX, EBXautomatycznie zeruje górne 32 bity RAXrejestru. Dokumentacja firmy Intel (3.4.1.1 Rejestry ogólnego przeznaczenia w trybie 64-bitowym w ręcznej architekturze...
Mam mały dylemat, jak skonfigurować moje kompilacje Visual Studio pod kątem multitargetingu. Tło: C # .NET v2.0 z p / wywoływaniem do zewnętrznych 32-bitowych bibliotek DLL, SQL Compact v3.5 SP1, z projektem instalacji. Obecnie platforma docelowa jest ustawiona na x86, więc można ją uruchomić w...
AMD ma specyfikację ABI, która opisuje konwencję wywoływania używaną na x86-64. Podążają za nią wszystkie systemy operacyjne, z wyjątkiem systemu Windows, który ma własną konwencję wywoływania x86-64. Czemu? Czy ktoś zna techniczne, historyczne lub polityczne powody tej różnicy, czy też jest to...
W obecnym stanie to pytanie nie pasuje do naszego formatu pytań i odpowiedzi. Oczekujemy, że odpowiedzi będą poparte faktami, referencjami lub ekspertyzą, ale to pytanie prawdopodobnie będzie wymagało debaty, argumentów, ankiet lub rozszerzonej dyskusji. Jeśli uważasz, że to...
Próbuję zainstalować usługę systemu Windows przy użyciu programu InstallUtil.exe i pojawia się komunikat o błędzie System.BadImageFormatException: nie można załadować pliku lub zestawu „ {xxx.exe}” lub jednej z jego zależności. Podjęto próbę załadowania programu o nieprawidłowym formacie. Co...
Wykonuję pewne prace krytyczne dla wydajności w C ++ i obecnie używamy obliczeń całkowitych do problemów, które są z natury zmiennoprzecinkowe, ponieważ „jest szybsze”. Powoduje to wiele irytujących problemów i dodaje dużo irytującego kodu. Pamiętam, jak czytałem o tym, jak obliczenia...
W książce przeczytałem: Procesory 32-bitowe mają 2 ^ 32 możliwych adresów, podczas gdy obecne procesory 64-bitowe mają 48-bitową przestrzeń adresową Spodziewałem się, że jeśli jest to procesor 64-bitowy, przestrzeń adresowa również powinna wynosić 2 ^ 64. Zastanawiałem się więc, jaki jest...
Co to rep; nopznaczy? Czy to to samo, co pauseinstrukcja? Czy to to samo co rep nop(bez średnika)? Jaka jest różnica w stosunku do prostej nopinstrukcji? Czy zachowuje się inaczej na procesorach AMD i Intel? (bonus) Gdzie jest oficjalna dokumentacja tych instrukcji? Motywacja do tego...
Obecnie pracuję z pamięcią współdzieloną. Nie rozumiem alignofi alignas. cppreference jest niejasne: alignofzwraca „wyrównanie”, ale co to jest „wyrównanie”? liczba bajtów do dodania dla następnego bloku do wyrównania? wyściełany rozmiar? Przepełnienie stosu / wpisy na blogach również są...
Studiowałem ponowne entuzjazm w programowaniu. Na to stronie IBM (naprawdę dobra). Założyłem kod, skopiowany poniżej. To pierwszy kod, który pojawia się po stronie. Kod próbuje pokazać problemy dotyczące wspólnego dostępu do zmiennej w nieliniowym rozwoju programu tekstowego (asynchroniczność),...