어셈블리 언어 (asm) 프로그래밍 질문 사용중인 프로세서 및 / 또는 명령어 세트 및 어셈블러와 함께 태그를 지정하십시오. 경고 : .NET 어셈블리의 경우 [.net-assembly] 태그를 대신 사용하십시오. Java ASM의 경우 [java-bytecode-asm] 태그를 대신 사용하십시오.
32 비트에서는 8 개의 "범용"레지스터가있었습니다. 64 비트를 사용하면 양이 두 배가되지만 64 비트 변경 자체와는 독립적 인 것 같습니다. 이제 레지스터가 너무 빠르면 (메모리 액세스 없음) 왜 자연스럽게 더 많은 레지스터가 없을까요? CPU 빌더는 CPU에서 가능한 한 많은 레지스터를 작동해야하지 않습니까? 우리가 가진 양만 가지고있는 이유에 대한 논리적 제한은 무엇입니까?
현재이 질문은 Q & A 형식에 적합하지 않습니다. 사실, 참고 문헌 또는 전문 지식이 답변을 뒷받침 할 것으로 기대하지만이 질문은 토론, 논쟁, 여론 조사 또는 확장 된 토론을 유도 할 가능성이 높습니다. 이 질문이 개선되고 다시 열릴 수 있다고 생각 되면 도움말 센터 를 방문하여 안내를 받으세요. 휴일 팔년 전에 …
닫힘 . 이 질문은 의견 기반 입니다. 현재 답변을 받고 있지 않습니다. 이 질문을 개선하고 싶으십니까? 이 게시물 을 편집 하여 사실과 인용으로 답변 할 수 있도록 질문을 업데이트하십시오 . 작년에 문을 닫았 습니다 . 이 질문 개선 모든 하드 코어 저수준 해커들에게 질문이 있습니다. 블로그에서이 문장을 보았습니다. 나는 그것이 …
나는 gdb의 대상 실행 파일 외부에 있으며 해당 대상에 해당하는 스택도 없습니다. 어쨌든 나는 x86 어셈블리의 전문가가 아니기 때문에 어셈블리 코드에서 무슨 일이 일어나고 있는지 확인할 수 있도록 한 단계 씩 진행하고 싶습니다. 불행히도 gdb는이 간단한 어셈블리 수준 디버깅을 거부합니다. 적절한 중단 점을 설정하고 중지 할 수 있지만 한 단계 …
무슨 rep; nop뜻이야? pause지시 와 같은가요 ? rep nop(세미콜론 제외) 와 동일 합니까? 간단한 nop지시 와 다른 점은 무엇입니까 ? AMD 및 Intel 프로세서에서 다르게 작동합니까? (보너스)이 지침에 대한 공식 문서는 어디에 있습니까? 이 질문에 대한 동기 다른 질문 에 대한 의견에 대한 토론을 한 후 rep; nop;x86 (또는 x86-64) …
CppCon 2019에서 Chandler Carruth의 연설을보고 있습니다. 무 비용 추상화가 없습니다 거기에, 그는 그가 당신이 사용하여 발생할 얼마나 많은 오버 헤드 놀랐다 방법의 예를 제공 std::unique_ptr<int>오버를 int*; 해당 세그먼트는 17:25 시점에 시작됩니다. 그의 예제 코드 쌍 (godbolt.org) 의 컴파일 결과 를 볼 수 있습니다 . 실제로 컴파일러가 unique_ptr 값을 기꺼이 전달하지 …
저는 현재 스택이 어떻게 작동하는지 이해하려고 노력 중이므로 어셈블리 언어를 스스로 가르치기로 결정했습니다 .이 책을 사용하고 있습니다. http://savannah.nongnu.org/projects/pgubook/ 저는 Gas를 사용 하고 있으며 Linux Mint에서 개발을하고 있습니다. 나는 무언가에 약간 혼란 스럽습니다. 내가 아는 한 스택은 단순히 데이터 구조입니다. 그래서 어셈블리로 코딩한다면 스택을 직접 구현해야한다고 생각했습니다. 그러나 이것은 다음과 같은 …
닫힘 . 이 질문은 더 집중되어야 합니다. 현재 답변을 받고 있지 않습니다. 이 질문을 개선하고 싶으십니까? 이 게시물 을 편집 하여 한 가지 문제에만 집중하도록 질문을 업데이트하십시오 . 휴일 삼년 전에 . 이 질문 개선 나는 요 전에 그 두 조각에 대해 친구와 논쟁했습니다. 어느 것이 더 빠르고 왜? value …
이 질문은 Mystical의 조언에 따라 여기 내 질문에 계속됩니다. C 코드 루프 성능 내 질문에 계속해서 스칼라 명령어 대신 포장 명령어를 사용하면 내장 함수를 사용하는 코드가 매우 유사하게 보입니다. for(int i=0; i<size; i+=16) { y1 = _mm_load_ps(output[i]); … y4 = _mm_load_ps(output[i+12]); for(k=0; k<ksize; k++){ for(l=0; l<ksize; l++){ w = _mm_set_ps1(weight[i+k+l]); …
나는 주로 학습 목적으로 SIMD를 작성하려고합니다. Go가 어셈블리를 연결할 수 있다는 것을 알고 있지만 제대로 작동하지 않습니다. 다음은 내가 만들 수있는 가장 최소한의 예입니다 (요소 별 벡터 곱셈). vec_amd64.s (참고 : 실제 파일에는 RET오류가 발생하므로 아래에 공백 줄 이 있습니다.) // func mul(v1, v2 Vec4) Vec4 TEXT .mul(SB),4,$0-48 MOVUPS v1+0(FP), …