gcc와 유사한 인라인 asm 구문을 사용하는 컴파일러로 광의 조각을 변환하려고합니다. 나는 설명서를 읽고 난이 줄을 발견 할 때까지 모든 좋았어요 : 나는 것을 변환 mov eax, dword ptr fs:[0x20]
다음은 이성을 상실 컴파일 된 movl 0x20(%fs:), %eax
, 나를 말하는 것은 그 때 fs되지는 32 비트 레지스터이며
어셈블리와 관련하여 매우 새로운 것으로 프로그램을 사용하려고합니다. 그래서 컴파일 할 때마다, 코드의 주석 아래에 나열된 것처럼 라인에 대한 에러가 발생합니다. 다른 어셈블리 코드에 대해 몇 가지 사항을 정의 할 때 NASM에서이 오류를 감지하는 이유가 있다면 궁금합니다. 어쩌면 주체 정의 방법으로 뭔가를해야합니까? P. 프로그램이 상당히 길기 때문에 코드
나는 AT & T (가스로 컴파일하는)에 인텔 문법에서 내 간단한 프로그램을 변환하기 위해 노력하고있어. 내 응용 프로그램의 상당 부분을 성공적으로 변환했지만 여전히 (인터럽트) int 오류가 발생합니다. 내 함수는 다음과 같다 : printf:
mov $0x0e, %ah
mov $0x07, %bl
nextchar:
다음 코드에서는 두 개의 상위 바이트에 ebx의 하위 2 바이트를 "저장"한 다음 더 낮은 순서 bx를 임시 변수로 사용하여 오프셋에 액세스합니다 "풀". 마지막으로 데이터를 오른쪽으로 이동하여 원래의 값 (처음에는 하위 2 바이트 만 사용)을 복원합니다. `에 대해 R_386_16 .DATA ' 연결 :는 rol ebx, 16
mov bl, dl
;
_Str_compare proc ; (byte * str1, byte * str2, DWORD str1_len, DWORD str2_len) :: Returns -1, 0, or 1 for str1 is lexiographically before, equivalent to, or after str2, respectively. Also modifies the
Intel 8086 용 명령어와 함께 x86 Linux에서 Assembly를 사용합니다. 필자의 프로그램에 문제가있어 Fibbonacci 시퀀스의 요소를 계산해야합니다. 예를 들어 대한 내가 인수와 함께 실행이 프로그램 : ./fibb 1 2 3, 무엇을 의미 : 우리가 원하는 시퀀스의 첫 번째 요소는 2ST 요소는 2, 및 제 3을 얻으십시오. 그리고 그
NASM 문서에서 아래의 지시 사항을 모두 읽었지만 필자는 그 헤드 또는 테일을 제대로 만들 수 없습니다. 안타깝게도이 지침에 대한 Intel 설명서는 다소 부족합니다. PREFETCHNTA m8 ; 0F 18 /0 [KATMAI]
PREFETCHT0 m8 ; 0F 18 /1 [KATMAI]
PREFETCHT1 m8 ; 0F 18
어셈블리에서 짧은 프로그램을 작성해야하지만 내 버전이 작동하지 않습니다. ASCII char을 출력하고, 그 다음에 atoi 함수로 정수 값으로 변경하고이 값을 출력한다. 중요한 것은 C : puts() 및 atoi()의 절차를 사용하는 것입니다. 내가 뭘 잘못하고 있니? 분명히 설명해주십시오. gcc를 사용 중이고 intel_syntax 어셈블리에 쓰고