현재 사용자 정의 asm과 같은 프로그래밍 언어 용 컴파일러를 작성하고 있으며 데이터 레이블에 적절한 PC 상대 주소 지정을 수행하는 방법에 대해 혼란스러워합니다. main LDA RA hello
IPT #32
HLT
hello .STR "Hello, world!"
위의 의사 코드는 컴파일 후, 다음의 진수 결과 : 31 80
malloc을 사용하여 2 차원 행렬을 할당하고 상대 주소에 값을 삽입하려고합니다. 왜 코어 덤프 오류인지 이해할 수 없습니다. 아래 내 코드를 살펴보십시오. #include <stdio.h>
#include <stdlib.h>
int main()
{
int width = 4;
FILE *fp = fopen("matB.txt", "
Object1 * test= new Object1();
"test"는 RAM의 절대 주소 또는 RAM의 0 주소에 대한 상대 시작점을 갖는 가상 메모리의 절대 주소를 갖고 있습니까? 예를 들어, 매우 조각난 메모리에서 필자는 10 시간 동안 여러 번 할당하고 할당을 해제하는 많은 응용 프로그램을 시작했으며 응용 프로그램 중 하나는 RAM 오류 검사 및
x86-64에서이 상대 주소를 사용하여 다음 작업을 수행 할 수 있습니까? 내가 NASM과 OS X에이 방법을 수행 할 때 section .text
two
dq 0
section .data
one:
dq two
, 나는 다음과 같은 링커 경고를 얻을 : LD : 경고 : PIE 사용할 수 없습니다. 절대 주소 지정 ( -mdyn
장치에 생성 된 데이터 (A [i, j, k])의 큰 덩어리가 있지만 A [i, :, :]의 하나의 '슬라이스'만 필요하며 일반 CUDA에서는 일부 포인터 연산으로 쉽게 수행 할 수 있습니다. pycuda 내에서 동일한 작업을 수행 할 수 있습니까? 즉 cuda.memcpy_dtoh(h_iA,d_A+(i*stride))
는 분명히 이것은합니다 (이명 령
컴파일 할 때 주소 바인딩이 불가능한 경우 실제/실제 주소로 상대 주소를 연결할 때로드/링크 또는 런타임에서 주소 할당을 수행합니다. 또한 CPU는 실제 주소에 바인딩하기 전에 이러한 상대 주소를 논리 주소로 변환합니다. 논리적에서 물리적으로 변환하는 것은 나에게 알려진 개념입니다. 그러나 나는 상대 주소 지정에 대해 혼란스러워했다. (AFAIK, 그들은
gcc가 상수의 상대 주소 %pc을 생성하도록 할 수 있습니까? 문자열이 텍스트 세그먼트에 나타나더라도 arm-elf-gcc는 데이터에 대한 상수 포인터를 생성하고 %pc 상대 주소를 통해 포인터의 주소를로드 한 다음 역 참조합니다. 여러 가지 이유로 중간 단계를 건너 뛸 필요가 있습니다. 예를 들어,이 간단한 기능 : (arm-elf-gcc-4.3.2 -