x86-64

    0

    1답변

    x86_64에는 64 비트 주소로 직접 점프 할 수 없습니다. 단지 32 비트 만. 간접 점프의 경우 분기 예측이 시작되기 전에 파이프 라인이 한 번 해결되어야한다는 것을 이해합니다. 제 질문은 : 첫 번째 실행에서 1-3 사이클 점프를 수행하는 방법이 64 비트입니까?

    -1

    1답변

    저는 Assembly에 익숙하며 사용자로부터 숫자를 받기 위해 scanf를 사용하는 프로그램을 만들려고합니다. 그런 다음 "Result : (the number)"를 출력합니다. 코드를 실행할 때 세그먼트 화 오류가 계속 발생합니다. .global main mystring: .asciz"input\n" formatstring: .asciz" %d" r

    4

    1답변

    ELF 파일을 직접 작성하고 싶습니다. 어떻게 ELF 파일을 C 표준 라이브러리로 호출 할 수 있습니까? 필자는 PT_INTERP 프로그램 헤더에 대한 커널 검색을 알고 "/lib/ld-linux.so.2"를 읽었으며 전역 오프셋 테이블 (GOT)과 프로 시저 연결 테이블 (PLT)에 대해 알고 있습니다. 그러나 PT_INTERP phdr, GOT, PLT

    7

    1답변

    저는 컴파일러를 작성 중이며 처음부터 ELF 실행 파일을 생성하기 시작했습니다. .text 섹션을 만들고 있는데 (아직 문자열 테이블을 만들지 않아도 이름이 없지만) PT_LOAD 세그먼트 내에 넣으려고합니다. 그러나 readelf은 섹션이 세그먼트에 매핑되었다고보고하지 않으며 objdump은 .text 섹션의 코드를 분해하지 않습니다. 이 간략화를 위해

    0

    1답변

    일부 조작을 통해 ret op와 관련된 문제점을 해결했습니다. 나는 call이 반환 주소를 스택에 푸시한다는 것을 알고있다; 그것을 터뜨리고 다시 밀어 넣는 것은 불법입니까? format ELF64 executable 3 entry start segment readable executable start: pop rcx ; argc

    1

    2답변

    나는 다음과 같은 어셈블리를 컴파일하기 위해 노력하고있어에 대한 피연산자 크기 불일치 ... movq $0x3534373536383235, 0x000000000055638f8 movq $0x55638f8, %rdi retq 첫 라인은 이해가되지 않습니다 오류 Error: operand size mismatch for 'movq' 를 던졌습니다 왜냐하

    0

    2답변

    uint64_t가 왼쪽으로 시프트되면 예상 값이 출력되지 않고 이유를 알고 싶습니다. 내가 얻은 결과는 4 개의 가장 중요한 바이트가 0으로 된 예상 결과입니다. 데비안 Jessie 64 비트에서 x86_64 CPU (Intel i7 3770k)를 사용하고 있습니다. 이것은 동일한 동작을 재현하는 테스트 프로그램입니다. #include <stdio.h>

    1

    1답변

    x86_64 intrinsics에 익숙하지 않아 256 비트 벡터 레지스터를 사용하여 다음 작업을 수행하고 싶습니다. _mm256_maddubs_epi16 (a, b)를 사용하고있었습니다. 그러나이 명령은 char * char이 16 비트 최대 값을 초과 할 수 있으므로 오버플로 문제가있는 것으로 보입니다. _mm256_unpackhi_epi32 및 관련

    0

    1답변

    x86 아키텍처를 사용하여 어셈블리를 배우려고합니다. add, sub, mul, imul, div, idiv와 같은 기본적인 계산을 할 수 있습니다. 그러나 결과를 인쇄하려고하면 문자열에 여러 공백이 있습니다. 이러한 여분의 공간을 제거 할 수있는 방법이 있습니까? 현재 문자열을 반복하고 비 공백 문자를 두 번째 문자열로 보내서 제거하려고합니다. 이렇게하는

    1

    1답변

    은 내가 나에게 관심 뭔가를 발견했습니다 좋고 나는 그것에 대한 답을 찾기 위해 관리하지 않았다? i386에서 호출 규칙은 스택에 매개 변수를 전달하므로 매크로는 스택 기본을 가리키는 포인터를 증가시키고 을 전달하지만 x64에서는 모든 매개 변수가 레지스터로 전달됩니다 .... 그래서 어떻게됩니까? 호출 된 함수는 인수를 전달하는 데 사용 된 레지스터를 어