«x86-64» 태그된 질문

x86-64는 Intel x86 아키텍처에 대한 64 비트 확장입니다.


6
속도 대신 크기를 최적화하면 GCC가 15-20 % 더 빠른 코드를 생성하는 이유는 무엇입니까?
2009 년에 GCC (적어도 내 프로젝트와 컴퓨터에서)는 속도 ( 또는 ) 대신 크기 ( -Os)를 최적화하면 눈에 띄게 더 빠른 코드를 생성하는 경향이 있으며 그 이후로 궁금해하고 있습니다.-O2-O3 나는이 놀라운 행동을 보여주는 (어리석지 않은) 코드를 만들었고 여기에 게시하기에 충분히 작습니다. const int LOOP_BOUND = 200000000; __attribute__((noinline)) static int add(const int& …


5
정수 나누기를 구현할 때 GCC가 왜 이상한 수의 곱셈을 사용합니까?
나는에 대해 읽어 봤는데 div및 mul조립 작업, 나는 C에서 간단한 프로그램을 작성하여 행동을보기로 결정했다 : 파일 division.c #include <stdlib.h> #include <stdio.h> int main() { size_t i = 9; size_t j = i / 5; printf("%zu\n",j); return 0; } 그리고 다음을 사용하여 어셈블리 언어 코드를 생성합니다. gcc -S division.c -O0 -masm=intel …

4
왜 쓸모없는 MOV 명령어를 도입하면 x86_64 어셈블리에서 타이트한 루프가 빨라 집니까?
배경: 어셈블리 언어가 내장 된 일부 파스칼 코드를 최적화하는 동안 불필요한 MOV명령을 발견 하고 제거했습니다. 놀랍게도 불필요한 명령을 제거하면 프로그램 속도 가 느려졌습니다 . 임의의 쓸모없는 MOV명령어 를 추가 하면 성능 이 더욱 향상됩니다 . 효과는 불규칙하며 실행 순서에 따라 변경 됩니다. 한 줄로 위나 아래로 같은 정크 명령이 바뀌면 …


3
함수에서 구조체를 반환 할 때 가능한 GCC 버그
O'Neill의 PCG PRNG를 구현하는 동안 GCC에서 버그를 발견했다고 생각합니다. ( Godbolt의 컴파일러 탐색기의 초기 코드 ) 승산 후, oldstate로 MULTIPLIER(RDI에 저장된 결과), GCC는 해당 결과를 추가하지 않는다 INCREMENTmovabs'ing, INCREMENT다음 rand32_ret.state의 반환 값으로서 사용 도착하는 대신 RDX 할 최소한의 재현 가능한 예 ( Compiler Explorer ) : #include <stdint.h> struct retstruct …
133 c  gcc  assembly  x86-64  compiler-bug 

11
네이티브 DLL 파일이 x64 또는 x86으로 컴파일되었는지 확인하는 방법은 무엇입니까?
네이티브 어셈블리가 관리 코드 응용 프로그램 ( C # ) 에서 x64 또는 x86으로 준수되는지 확인하고 싶습니다 . OS 로더 가이 정보를 알아야하기 때문에 PE 헤더의 어딘가에 있어야한다고 생각하지만 찾을 수 없었습니다. 물론 관리되는 코드에서 수행하는 것을 선호하지만 필요한 경우 기본 C ++을 사용할 수 있습니다.
133 c#  .net  winapi  64-bit  x86-64 

4
Rust의 128 비트 정수`i128`은 64 비트 시스템에서 어떻게 작동합니까?
Rust는 128 비트 정수를 가지며, 데이터 타입으로 표시됩니다 i128( u128부호없는 정수). let a: i128 = 170141183460469231731687303715884105727; Rust는 이러한 i128값을 64 비트 시스템에서 어떻게 작동합니까 ? 예를 들어 어떻게 이것들을 산술합니까? 내가 아는 한 x86-64 CPU의 하나의 레지스터에 값을 맞출 수 없으므로 컴파일러는 어떻게 든 하나의 i128값에 2 개의 레지스터를 사용 …

3
32 비트 레지스터의 x86-64 명령어가 전체 64 비트 레지스터의 위쪽 부분을 0으로 만드는 이유는 무엇입니까?
에서 인텔 설명서의 x86-64에 투어 , 본인은 아마도 가장 놀라운 사실은 같은 명령어가 MOV EAX, EBX상위 32 비트 RAX레지스터 를 자동으로 제로화 한다는 것입니다 . 동일한 소스에서 인용 된 인텔 문서 (3.4.1.1 수동 기본 아키텍처의 64 비트 모드에서 범용 레지스터)는 다음과 같이 알려줍니다. 64 비트 피연산자는 대상 범용 레지스터에서 64 …

8
동일한 솔루션 / 프로젝트에서 Visual Studio로 32 비트 및 64 비트를 모두 대상으로 지정
다중 타겟팅을 위해 비주얼 스튜디오 빌드를 설정하는 방법에 대해 약간의 딜레마가 있습니다. 배경 : 설치 프로젝트가있는 타사 32 비트 DLL, SQL compact v3.5 SP1로 p / 호출하는 c # .NET v2.0. 현재 플랫폼 대상은 x86으로 설정되어 있으므로 Windows x64에서 실행할 수 있습니다. 제 3 자 회사는 방금 DLL의 64 비트 …

4
Windows64가 x86-64의 다른 모든 OS와 다른 호출 규칙을 사용하는 이유는 무엇입니까?
AMD에는 x86-64에서 사용할 호출 규칙을 설명하는 ABI 사양이 있습니다. 자체 x86-64 호출 규칙이있는 Windows를 제외하고 모든 OS가이를 따릅니다. 왜? 이 차이에 대한 기술적, 역사적 또는 정치적 이유를 아는 사람이 있습니까? 아니면 순전히 NIHsyndrome의 문제입니까? 나는 OS마다 더 높은 수준의 요구 사항이 다를 수 있음을 이해하지만, 예를 들어 Windows에서 레지스터 매개 …

10
x86이 못생긴 이유는 무엇입니까? 다른 사람과 비교할 때 왜 열등하다고 간주됩니까? [닫은]
현재이 질문은 Q & A 형식에 적합하지 않습니다. 사실, 참고 문헌 또는 전문 지식이 답변을 뒷받침 할 것으로 기대하지만이 질문은 토론, 논쟁, 여론 조사 또는 확장 된 토론을 유도 할 가능성이 높습니다. 이 질문이 개선되고 다시 열릴 수 있다고 생각 되면 도움말 센터 를 방문하여 안내를 받으세요. 휴일 팔년 전에 …

15
System.BadImageFormatException : installutil.exe에서 파일 또는 어셈블리를로드 할 수 없습니다.
InstallUtil.exe를 사용하여 Windows 서비스를 설치하려고하는데 오류 메시지가 나타납니다. System.BadImageFormatException : 파일 또는 어셈블리 ' {xxx.exe}'또는 해당 종속성 중 하나를 로드 할 수 없습니다 . 잘못된 형식으로 프로그램을로드하려고했습니다. 무엇을 제공합니까? 편집 : (OP에 의해 아님) dup에서 추출 된 전체 메시지가 [googleability를 위해] 더 많은 조회수를 얻습니다. C : \ Windows \ …

11
최신 하드웨어에서 부동 소수점 대 정수 계산
저는 C ++에서 성능에 중요한 작업을 수행하고 있으며 현재 "더 빠르기"때문에 본질적으로 부동 소수점 문제에 정수 계산을 사용하고 있습니다. 이로 인해 성가신 문제가 많이 발생하고 성가신 코드가 많이 추가됩니다. 이제 저는 부동 소수점 계산이 약 386 일 동안 얼마나 느 렸는지 읽은 기억이납니다. 여기서 (IIRC) 선택적 공동 프로세서가 있다고 믿습니다. …

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.