x86-64

    2

    1답변

    여러 버전 (sse4, ssse3, avx2, avx512)을 사용하는 glibc-2.25의 일부 메모리 함수 (memcpy, memset, memmove)가 Google 서버 프로그램의 성능 향상을 가져올 수 있는지 조사 중이었습니다. Linux (glibc 2.12). 첫 번째 시도는 여기 https://sourceware.org/glibc/wiki/T

    7

    1답변

    Compilers: Understanding assembly code generated from small programs에서 컴파일러는 스택 포인터를 조정하지 않고 두 개의 로컬 변수를 사용합니다. 지역 변수의 사용을 RSP을 조정하지는 그래서 컴파일러는 인터럽트가 발생할 때 자동으로 시스템 스택으로 전환 하드웨어에 의존하는 것 같다 안전 방해하지 을 보

    1

    1답변

    mov rcx,rdx (https://defuse.ca/online-x86-assembler.htm 사용)을 인코딩하는 x86_64 인코딩은 48 89 D1입니다. this reference으로 연산 코드를 검사하면 바이트 시퀀스가 ​​명령을 인코딩하는 방법을 알 수 있습니다. 그러나이 테이블의 두 행 아래 (op-code 8B)는 매우 비슷한 mov 명령

    0

    1답변

    초기화 된 데이터 섹션에 5 개의 문자열을 포함하는 데이터 배열을 만들려고합니다. 각 문자열은 정확히 4 자입니다. 각 문자열에는 첫 번째 문자열의 경우 "abcd", 두 번째 문자열의 경우 "efgh"와 같은 일부 초기 데이터가 있습니다. Null \0 모든 문자열에는 문자가 필요하지 않습니다. 어셈블리 언어로 문자열 배열을 초기화하려면 어떻게해야합니까?

    -1

    1답변

    키보드 ISR을 연결하려고하지만 CreateFile이 0000007Bh ERROR_INVALID_NAME을 반환하기 때문에 장치를 열 수 없습니다. 나는 무엇을 잘못 했는가? invoke DefineDosDevice,[raw],filename1,devicename lea rcx,[filename2] invoke CreateFileA,rcx,GENERI

    1

    1답변

    현재 관련 Pentester Academy 과정에서 64 비트 어셈블리 언어를 배우고 있습니다. /빈/SH : 0 : GDB에서 실행했을 때 내가 일하고 있어요 코드는 다음과 같은 오류를 생성 이 [(처리 4049) 열등 1 코드 0177로 종료] 열 수 없습니다 나는 오류를 감지하고 코드를 종료하고 도움이되는 것을 찾지 못했습니다. GDB에서 코드를 반복

    2

    1답변

    그래서 extern C 함수를 호출하는 어셈블리 프로그램을 작성해야합니다. 그래서 간단한 pow 함수를 작성 했으므로이 C 코드로 어셈블리 프로그램을 컴파일했습니다. 모든 것이 작동합니다. 그러나 -S 명령 (gcc)에서 알 수 있듯이 컴파일러는 로컬 변수를위한 공간을 만듭니다. int func(int number) { int a = 10;

    4

    1답변

    64 비트 Linux는 기본적으로 작은 메모리 모델을 사용하므로 모든 코드와 정적 데이터를 2GB 주소 한도 이하로 유지합니다. 이렇게하면 32 비트 절대 주소를 사용할 수 있습니다. 이전 버전의 gcc는 상대 주소 계산을위한 추가 명령어를 저장하기 위해 정적 배열에 32 비트 절대 주소를 사용합니다. 그러나 이것은 더 이상 작동하지 않습니다. 어셈블리에서

    0

    1답변

    기본 컴파일러 설정 (x86-64 gcc 6.3)을 사용하는 컴파일러 탐색기 (https://godbolt.org/)를 사용하고 있습니다. 다음 코드 int foo(int num) { int a, b, c; a = 1; b = 2; c = 3; } 스택 포인터 레지스터 RSP가 수정되지 않습니다 나타납니다 어셈블리

    1

    1답변

    하나의 번호를 가져 와서 인쇄 한 어셈블리 프로그램을 만들려고했습니다. 하지만 1을 쓸 때 4171을 썼습니다. 왜, 어떻게 고칠 수 있습니까? 나는 64 비트 어셈블리를 사용하고 있는데, nasm -f macho64 scanf.asm으로 어셈블하고, gcc -o scanf scanf.o -Wl,-no-pie으로 연결했다. 그리고 스캔 매크로에서 숫자 주위