red-zone

    1

    1답변

    Aleph One에서 "재미와 이익을위한 스택 분쇄"를 망쳤으며 64 비트 용 코드를 컴파일하는 동안 프로세서, 스택 메모리는 일반적인 "sub $ VALUE, % REG"을 사용하여 할당되지 않습니다. 이 함수의 소스 코드입니다 void function() { char buffer1[5]; char buffer2[10]; int

    15

    3답변

    64 비트 커널을 만들 때 (x86_64 플랫폼 용) 컴파일러에서 사용자 공간 ABI가 수행하는 128 바이트 Red Zone을 사용하지 않도록하는 것이 좋습니다 . GCC의 경우 컴파일러 플래그는 -mno-red-zone입니다. 커널을 사용할 수 있으면 인터럽트 방지가되지 않습니다. 하지만 그 이유는 무엇입니까?

    11

    2답변

    정말 기괴한 gcc 기발합니다. 이 체크 아웃 : main() { int a[100]; a[0]=1; } 이 조립체를 생산 :는 0: 55 push %rbp 1: 48 89 e5 mov %rsp,%rbp 4: 48 81 ec 18 01 00 00 sub $0x118,%rsp b: c7 85 70 fe ff ff

    0

    1답변

    내가 64 비트 리눅스에서 실행되는 GNU C 코드에 대한 몇 가지 확장 조립 최적화를하고있는 중이 야에 - 64 호출 규칙에 따라 지역 스택을 설정. 어셈블리 코드에서 디버깅 메시지를 인쇄하고 싶었습니다. 나는이 상황에서 누군가가 내가해야 할 일을 설명 할 수 있기를 바라고있다. 함수의 네 agruments이 클래스 INTEGER의 때문에 void tes

    5

    2답변

    다음과 같은 의문점이 있습니다. 시스템 V x86-64 ABI는 스택 프레임에서 소위 redzone이라는 고정 크기 영역 (128 바이트)을 제공합니다. 따라서 예를 들어 sub rsp, 12과 같이 사용할 필요가 없습니다. 그냥 mov [rsp-12], X을 만들면됩니다. 그러나 나는 그 생각을 이해할 수 없습니다. 왜 중요합니까? redzone없이 su