Y86에서 프로그램을 작성하고 있지만 스택 및 기본 포인터를 설정하는 코드 줄에 "레이블을 찾을 수 없습니다"오류가 계속 나타납니다. 내 노트에 어떻게 .pos 0
init:
irmovl Stack, %esp //Set up stack pointer
irmovl Stack, %ebp //Set up base pointer
ca
x, y 사이의 모든 포함 정수의 합을 만드는 프로그램을 작성하려고합니다. 합계, y 및 x는 전역 변수입니다. 로컬 레지스터에 x와 y를 할당하려고하면 문제가 발생합니다 (시뮬레이터는 0x60과 0x64의 값을 로컬 레지스터에 1과 4의 값으로 할당합니다)뿐만 아니라 합계 값을 가져 와서 전송합니다. 합계의 글로벌 변수. 보통 나는 도움이되는 가이드를 온
내 컴퓨터 구조 교본에서이 예제 프로그램에 대해 혼란스러워합니다. 여기 은 ... C 코드의 그리고 여기에 생성 된 Y86 코드의 ... 내 질문은 0x046 mrmovl 8(%ebp), %ecx
함께 정확히 시작을 설정하는 이유는 무엇입니까? 스택 포인터 앞에 8 바이트? 나는 모든 것이 어디 있는지 거의 혼란 스럽다고 생각합니다. 스택이 0x100을
클래스 실험실에서이 작업을 수행하고 있으며 잘못된 곳으로 가고 있지 않습니다. 이 프로그램은 q 대신 l을 사용하여 모든 지시 사항에 접미사를 붙이면 작동합니다 (예 : rrmovq 대신 andq, rrmovl 대신 - andl). 나는 내가 잘못하고있는 것에 대해 약간의 포인터를 정말로 고맙게 생각한다. .pos 0
init: irmovq Sta
참고 : 이것은 클래스 용입니다. 나는 rsp와 rbp가 어떻게 작동하는지 이해하려고 노력하고있어 코드의 어떤 부분이 엉망인지 이해할 수있다. 미안 해요, 이거 처음이에요. 어떤 도움을 주셔서 감사합니다. 그래서 나는 연결리스트 .pos 0
init: irmovq Stack, %rsp # Set up stack pointer
rrmov
y86 코드에서 루프를 풀려고했지만 테스트 프로그램을 실행하려고 할 때 두 가지 값을 얻었습니다. 등록 번호. xorq %rax,%rax # count = 0;
andq %rdx,%rdx # len <= 0?
jle Done # if so, goto Done:
Loop:
mrmovq (%rdi), %r10 # read v
현재 Y86, AT & T 구문이라는 교육용 어셈블리 언어를 사용하여 함수를 작성 중입니다. 지원하지 않는 것을 달성/해결하려고합니다. 메모리에 저장된 값에 숫자를 추가하고 addl을 사용하여 레지스터에 추가 할 수있는 어리석은 이유가 있습니다. 나는 이것이 왜 있는지 모른다. 나는이 같은 일을하고 싶은 방법을 모르는 함수 내부 는 : addl $1, -4
정수 배열을 오름차순으로 정렬하는 프로그램을 만들어야합니다. C에서의 간단한 문제. 코드가 우리에게 주어진다. 내가 어셈블리에 그것을 구현하려고 할 때 void bubble(int *data, int count)
{
int i, last;
for(last = count‐1; last>0;last‐‐)
{
for(i=0;i<last;i++)
if
그래서 기본적으로 y86을 배웁니다. 나는이 C 코드를 가지고 있고 y86 어셈블리로 변환하려고 시도하고있다. 이 오류가 계속 : PC = 0x2058a090, Invalid instruciton address
Stopped in 2 steps at PC = 0x2058a090. Exception 'ADR', CC Z=1, S=0, O=0
Changes