반응형

C 59

GCC에서 x86 어셈블리의 Intel 구문을 사용할 수 있습니까?

GCC에서 x86 어셈블리의 Intel 구문을 사용할 수 있습니까? 나는 작은 낮은 수준의 프로그램을 만들고 싶다.일부 부품은 어셈블리 언어를 사용해야 하지만 나머지 코드는 C/C++로 작성됩니다. 따라서 GCC를 사용하여 C/C++와 어셈블리 코드를 혼재시킬 경우 AT&T 구문을 사용해야 합니까?아니면 인텔 구문을 사용할 수 있습니까?또는 C/C++와 asm(인텔 구문)을 다른 방법으로 혼재시키는 방법은 무엇입니까? 어쩔 수 없이 AT&T 구문을 사용해야 한다는 것을 알고 있습니다만, 확실히 하고 싶습니다. 선택사항이 없는 경우 AT&T 구문에 대한 전체/공식 문서는 어디서 찾을 수 있습니까? 감사합니다!별도의 어셈블리 파일을 사용하는 경우 gas는 Intel 구문을 지원하도록 지시합니다. .intel..

source 2022.07.23

C기준은 임의의 값을 포인터에 할당하여 증가시키는 것을 허용합니까?

C기준은 임의의 값을 포인터에 할당하여 증가시키는 것을 허용합니까? 이 코드의 동작이 잘 정의되어 있습니까? #include #include int main(void) { void *ptr = (char *)0x01; size_t val; ptr = (char *)ptr + 1; val = (size_t)(uintptr_t)ptr; printf("%zu\n", val); return 0; } 내 말은, 포인터에 고정된 숫자를 할당해서 랜덤 주소를 가리켜도 늘릴 수 있을까?(참조할 수 없다는 것을 알고 있습니다)과제: void *ptr = (char *)0x01; 정수를 포인터로 변환하기 때문에 구현에서 정의된 동작입니다.이는 포인터와 관련하여 C 표준의 섹션 6.3.2.3에 자세히 설명되어 있습니다. 5..

source 2022.07.23

스택을 정렬한다는 것은 무엇을 의미합니까?

스택을 정렬한다는 것은 무엇을 의미합니까? 저는 고급 코더였고 아키텍처는 매우 생소하기 때문에 조립에 관한 튜토리얼을 읽기로 했습니다. http://en.wikibooks.org/wiki/X86_Assembly/Print_Version 튜토리얼 맨 아래 Hello World! 프로그램을 변환하는 방법에 대한 설명 #include int main(void) { printf("Hello, world!\n"); return 0; } 동일한 어셈블리 코드로 변환되어 다음 항목이 생성되었습니다. .text LC0: .ascii "Hello, world!\12\0" .globl _main _main: pushl %ebp movl %esp, %ebp subl $8, %esp andl $-16, %esp movl $0..

source 2022.07.17

'더블 프리 또는 파손' 오류를 추적하는 방법

'더블 프리 또는 파손' 오류를 추적하는 방법 (C++) 프로그램을 실행하면 이 에러와 함께 크래시 됩니다. * glibc가 검출되었습니다*./load: 이중 프리 또는 파손(!display): 0x00000000c6ed50 *** 오류를 추적하려면 어떻게 해야 합니까? .std::cout ( ) 。 수 있다gdb게게할 할? ???사용하는 glibc를 설정할 수 .MALLOC_CHECK_에서 ''로2의 glibc를 malloc더블 프리가 실행되는 시점에서 프로그램이 중단됩니다. 에서 gdb를 하여 할 수 .set environment MALLOC_CHECK_ 2실행하기 에 명령어를 됩니다.프로그램이 중단됩니다.free()콜이 백트레이스로 표시됩니다. 상세한 것에 대하여는, 의 man 페이지를 참조해 주세..

source 2022.07.17

컴파일러가 "initializer 누락"이라는 경고를 보내는 이유는 무엇입니까?구조가 초기화되지 않았습니까?

컴파일러가 "initializer 누락"이라는 경고를 보내는 이유는 무엇입니까?구조가 초기화되지 않았습니까? 프로그램 프런트엔드를 만들고 있어요통화 중인 프로그램을 시작하려면CreateProcess()다른 것 중에서 포인터를 받습니다.STARTUPINFO구조.이전에 수행한 구조를 초기화하려면: STARTUPINFO startupInfo = {0}; // Or even '\0'. startupInfo.cb = sizeof(startupInfo); GCC를 사용하여 프로그램을 컴파일할 때 이러한 경고 세트를 활성화합니다.-Wall -Wextra첫 번째 줄을 가리키는 이니셜라이저가 누락되어 있다는 경고가 나옵니다. warning: missing initializer warning: (near initializ..

source 2022.07.17

ld.exe: 출력 파일을 열 수 없습니다...: 권한이 거부되었습니다.

ld.exe: 출력 파일을 열 수 없습니다...: 권한이 거부되었습니다. 최근 CodeBlocks with mingw32를 Windows 7 Ultimate 32bit에 설치하고 c 스킬을 제거했습니다만, 이 문제로 다소 당황하고 있습니다. 내 설정이 제대로 작동하는지 확인하기 위해 짧은 피보나치 발전기를 작동시키기로 결심했지만 난관에 부딪혔다. 프로그램이 컴파일, 링크 등 매력적이지 않은 것을 실행함으로써 예상대로 실행 가능한 파일을 얻을 수 있습니다. 컴파일을 다시 시도하면 다음과 같은 문제가 발생합니다. c:/codeblocks/mingw/bin/../lib/gcc/mingw32/4.4.1/../../../../mingw32/bin/ld.exe: cannot open output file bin\D..

source 2022.07.17

C에서 1123456789에서 1,123,456,789까지의 숫자를 포맷하려면 어떻게 해야 합니까?

C에서 1123456789에서 1,123,456,789까지의 숫자를 포맷하려면 어떻게 해야 합니까? 하면 C의 숫자를 C 언어 할 수 요?1123456789로로 합니다.1,123,456,789.printf("%'10d\n", 1123456789);지만만소소소소소 조언 좀 해주시겠어요?솔루션은 단순할수록 좋습니다.가 printf를 하는 '플래그(POSIX 2008에서 요구된 대로)는 로케일을 적절히 설정하는 것만으로 실행할 수 있습니다.예제: #include #include int main(void) { setlocale(LC_NUMERIC, ""); printf("%'d\n", 1123456789); return 0; } 구축 및 실행: $ ./example 1,123,456,789 Mac OS X 및 ..

source 2022.07.17

pthread_cond_wait 대 세마포

pthread_cond_wait 대 세마포 사용의 장점과 단점은 무엇입니까?pthread_cond_wait또는 세마포어를 사용하는가? 다음과 같은 상태 변화를 기다리고 있습니다. pthread_mutex_lock(&cam->video_lock); while(cam->status == WAIT_DISPLAY) { pthread_cond_wait(&cam->video_cond, &cam->video_lock); } pthread_mutex_unlock(&cam->video_lock); 올바르게 초기화된 세마포를 사용하면 다음과 같이 할 수 있을 것 같습니다. while(cam->status == WAIT_DISPLAY) { sem_wait(&some_semaphore); } 각 방법의 장점과 단점은 무엇입니..

source 2022.07.17

uint_fast32_t는 무엇이며 일반 int 및 uint32_t 대신 사용해야 하는 이유는 무엇입니까?

uint_fast32_t는 무엇이며 일반 int 및 uint32_t 대신 사용해야 하는 이유는 무엇입니까? 그래서 그 이유는typedef:ed 원시 데이터 유형은 낮은 수준의 표현을 추상화하여 이해하기 쉽게 하는 것입니다.uint64_t대신long long8 바이트)를 지정합니다. 단, 있습니다.uint_fast32_t같은 것을 가지고 있다typedef~하듯이uint32_t. "빠른" 버전을 사용하면 프로그램이 더 빨라집니까? int플랫폼에 따라서는 16비트까지 작을 수 있습니다.당신의 지원에는 충분하지 않을 수 있습니다. uint32_t가 존재한다고는 보증되지 않습니다.옵션입니다.typedef32비트의 부호 없는 정수 타입을 가진 경우 구현에서 제공해야 합니다.예를 들어 9비트의 바이트를 가진 것도 있..

source 2022.07.17
반응형