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ę stworzyć (raczej głupiutki) kod, …
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 możliwe?
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 asemblera za pomocą: gcc …
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 jeszcze bardziej zwiększyło wydajność . Efekt jest zmienny, a zmiany oparte na kolejności wykonywania: te same niepotrzebne …
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 Linux?
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 …
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 wykorzystywany jako wartość zwracana rand32_ret.state Minimalny odtwarzalny przykład ( …
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 wiem, wartość nie mieści się w jednym rejestrze procesora …
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 podstawowej) cytowana w tym samym źródle mówi nam: 64-bitowe operandy generują …
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 systemie Windows x64. Firma zewnętrzna …
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 wyłącznie kwestia zespołu NIH? Rozumiem, że różne systemy …
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 pytanie można poprawić i ewentualnie ponownie otworzyć, odwiedź centrum pomocy, aby uzyskać …
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 daje? EDYCJA: (nie przez OP) Pełna wiadomość wyodrębniona z dup, uzyskując o wiele …
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 zmiennoprzecinkowe były tak powolne przez około 386 dni, kiedy …
Używamy plików cookie i innych technologii śledzenia w celu poprawy komfortu przeglądania naszej witryny, aby wyświetlać spersonalizowane treści i ukierunkowane reklamy, analizować ruch w naszej witrynie, i zrozumieć, skąd pochodzą nasi goście.
Kontynuując, wyrażasz zgodę na korzystanie z plików cookie i innych technologii śledzenia oraz potwierdzasz, że masz co najmniej 16 lat lub zgodę rodzica lub opiekuna.