클래스 실험실에서이 작업을 수행하고 있으며 잘못된 곳으로 가고 있지 않습니다. 이 프로그램은 q 대신 l을 사용하여 모든 지시 사항에 접미사를 붙이면 작동합니다 (예 : rrmovq 대신 andq, rrmovl 대신 - andl). 나는 내가 잘못하고있는 것에 대해 약간의 포인터를 정말로 고맙게 생각한다. .pos 0
init: irmovq Sta
MIPS를 사용하여 Dijkstra의 알고리즘을 구현할 때 에지 (소스 인덱스 | 대상 인덱스의 인덱스)를 나타내는 정수 배열을 만들려고합니다. rsim을 실행할 때 "정렬되지 않은 단어 메모리 참조"오류가 발생합니다. 나는 메모리 정렬이 무엇을 의미하는지 오해하고있을 수도 있다고 생각한다. 내 .DATA 내가 데이터를 배열로 입력 모서리의 수를 반복하고는
버블 정렬 기능을 어셈블리 8086에서 수행하려고하지만 어떤 이유로 밉스가 잘못된 대답을하고 이유를 찾을 수 없습니다. 우리는 아직 배울 수 없기 때문에 .code, .data 및 그 중 어떤 것도 사용할 수 없으며 사용법을 모르겠습니다. 제가 사용한 스왑 기능은 제가 아는 한 작동합니다. '$'기호 org 100h
jmp main
strin
k 값이 정확한지 테스트하려면 어떻게해야합니까? section .data
k dw 5
m dw 110
rez dw 0
section .bss
tabela resq 3
section .text
global _start
extern uslov
_start:
mov qword [tabela], k
m
참고 : 이것은 클래스 용입니다. 나는 rsp와 rbp가 어떻게 작동하는지 이해하려고 노력하고있어 코드의 어떤 부분이 엉망인지 이해할 수있다. 미안 해요, 이거 처음이에요. 어떤 도움을 주셔서 감사합니다. 그래서 나는 연결리스트 .pos 0
init: irmovq Stack, %rsp # Set up stack pointer
rrmov
yasm을 사용하여 간단한 ELF 프로그램을 작성하려고합니다. 그러나 VMA 주소가 0이 아닌 0x1000에서 시작되도록 .TEXT 섹션을 대상으로 지정하는 방법을 알아낼 수 없습니다. START 및 ORG 지시문을 사용하여 시도했지만 이러한 경우는 타겟팅 할 때만 유효합니다. 빈, 엘프가 아니야. 이것은 yasm에서 할 수 있습니까?
방금 어셈블리 학습을 시작했고 다른 플래그가 어떻게 작동하는지 이해하려고합니다. mov ax, 0xBFE8h
mov bx, 25DFh
add ax, bx
가 오버 플로우 플래그가 켜지지해야 : 의 나는 이렇게 가정 해 봅시다? 추가 값은 58,823 (기본 10)이며, 이는 32,767 (부호있는 16 비트 값) 이상입니다. 프로그램을 체크인했는
저는 환경과 같은 임베디드 OS로 작업하고 있으므로 바이너리의 크기는 가능한 한 작아야합니다. 나는 실행 파일로 간단한 플랫 바이너리 파일을 사용하고 있었지만 지금은 ELF를 사용하려고한다. 난 그냥 어셈블리 코드를 사용하고 있지만 ld와 링크하고있다. 어셈블리 코드 : CPU i386
BITS 32
SECTION .text progbits alloc
다른 함수를 통해 명령어가 호출 된 주소를 찾는 함수를 C 프로그램에 작성하는 방법이 있는지 궁금합니다. 예를 들어 ret 명령이 주 기능에서 사용되는 주소를 찾고 싶습니다. 첫 번째 생각은 "& main()"에서 시작하는 while 루프를 작성한 다음 현재 주소에서 명령이 "ret"되고 주소를 반환 할 때까지 매번 루프를 반복하여 주소를 1 씩 증가시키는