C 파일 (const int data_input [1024];)에 정의 된 간단한 정적 배열이 있고 내 어셈블리 코드에서 액세스해야합니다. 그것을하는 올바른 방법은 무엇입니까? 지금까지, 나는 이런 식으로 해왔 :
.global data_input
data_input_ptr:
.word data_input
my_function:
x86_64 플랫폼에서 "gcc -S"-> "as"-> "ld"로 단순화 된 C 소스 파일을 컴파일하려고합니다. 프로세스가 오류없이 완료되었지만 실행시 "해당 파일 또는 디렉터리가 없습니다"오류 메시지가 표시됩니다. ctest.c
int main()
{
return 0;
}
> gcc -S ctest.c
> as -o ctest.o ct
매개 변수 n에 따라 xmm 레지스터에 다양한 movdqu 명령어가 포함 된 코드를 생성하는 가스 매크로를 작성하고 싶습니다. .macro xxmov n, p1
.if (\n == 1)
xor %eax, %eax
.endif
.if (\n - 1)
xxmov (\n - 1), \p1
리눅스 시스템 호출이나 표준 C 라이브러리 함수 중 하나를 사용하지 않고 C 문자열을 출력하는 간단한 프로그램을 작성하려고합니다. 이것은 학습 목적으로 만 사용되며, 프로덕션 환경에서는 절대로 그렇게하지 않을 것입니다. 먼저 내 시스템 정보 : [[email protected] sandbox-print_chars]$ uname -a
Linux fedora
타겟을 ARM 플랫폼으로 사용하여 GNU 어셈블러를 사용하여 일부 어셈블리 코드를 컴파일하려고합니다. 하지만 몇 가지 오류가 나타납니다. 나는 어셈블리 문법에 익숙하지 않다. 누구든지이 오류를 해결하는 방법을 알려 줄 수 있습니까? error: invalid operand in inline asm: 'str ${2:Q}, $0
str ${2:R}, $1
64bit 시스템에서 AT & T-Syntax의 코드 컴파일 및 링크에 대한 정보를 찾을 수있는 GAS 튜토리얼을 아는 사람이 있습니까? 나는 대학을 위해서 이것을 필요로하기 때문에 대신에 nasm을 사용할 수 없다. 내가 알 수있는 모든 헛소리는 nasm 또는 유사하거나 32 비트에서만 작동합니다. 우리의 Professor에서 보여준 최소한의 예제조차도
현재 GNU를 배우고 있으며 "info as"에서 유용한 정보를 많이 찾습니다. ".set noat"는 MIPS 지정 코드에서 사용되었지만 "info as"에서이 지시어를 검색 할 때 "alpha directive"노드에서 설명을 찾았지만 "MIPS Dependent Features"에서는 찾지 못했습니다. 왜? 설명서에서 뭔가를 놓쳤습니까? TIA
저는 64 비트 우분투 운영 시스템을 가지고 있으며 32 비트 어셈블리를 배우고 있습니다. square.s : 나는이 두 파일을 컴파일하려고 #square.s
.section .text
.globl sqr
.type sqr, @function
sqr:
pushl %ebp
movl %esp, %ebp
movl 8(%ebp)
어셈블리 언어 소스 파일에서 생성 된 오브젝트 파일과 C 소스 파일에서 생성 된 오브젝트 파일 중 하나를 연결하는 데 문제가 있습니다.는 C 소스 코드 :는 어셈블리 소스 코드 //main2.c
extern int strlength(char *);
int main(){
char * test = "hello";
int num = strl
세그먼트 화 오류를 반환하는 asm (x86/GAS) 프로그램에 대한 질문이 있습니다. 그것은 피보나치에 관하여 : 나는 algorith 확인이라고 생각 : (의사 코드) fibo(int number){
if (n < 2)
return number;
return fib(n - 1) + fib(n - 2);
오류가 왜 이해가