0
이 코드는 C에서 기본적으로 배열에 대한 포인터와 인덱스의 배열 값을 변경하는 함수를 포함하는 구조체입니다 0인라인 어셈블리를 사용하여 구조체에 포함 된 배열에 대한 포인터 변경 ia32
typedef struct archivo
{
unsigned char *info;
} FILE;
void funct(FILE *arch) {
arch->info[0] = 'b';
}
그래서 funct 함수를 인라인 어셈블리로 변환해야합니다. 나는 다음을 시도했다
void funct(FILE *arch) {
_asm {
mov eax, 0
mov ebx, arch.info[eax]
mov ecx, [ebx]
mov ecx, 'b'
}
}
그러나 출력을 인쇄 할 때 정보는 계속 동일한 값을 갖는다. 그래서 나는 다음과 같은 코드
void funct(ARCHIVO *arch)
{
printf("\n--%c--\n", arch->info[0]);
_asm {
mov eax, 0
mov ebx, arch.info[eax]
mov ecx, [ebx]
mov ecx, 'b'
}
printf("\n--%c--\n", arch->info[0]);
}
와 출력을 시도하고
--P--
--P--
가 어떻게 위치 0에서 C 배열 값을 변경 관리 할 수있는 출력으로 나는거야?
"구조체에 포함되어 변경 배열을"사용할 수 있습니다 - 귀하의'struct'에는 배열이 없습니다. 포인터가 배열이 아닙니다. 그리고'char *'는 배열에 대한 포인터가 아니라'char'에 대한 포인터입니다. – Olaf
'mov ecx, 'b''는'info'에 아무 것도 쓰지 않을 것입니다. ecx 레지스터에 값을 지정하려고합니다. –
@DavidWohlferd 어떻게 정보 값을 변경할 수 있습니까? – ravelinx