지금까지 (LPC114 사용) IchigeoJam과 IchigeoJam R 두 가지 기계 언어 지원
HKB 등 USB 키보드에 대응하는 RISC-V 버전, Zen 언어 단순 기계어 대응zen4ij#IchigeoJam#riscv#zen/후쿠노 테소의 1일 1창/Create everydayby Taisuke Fukuno
※ 이치코잼은 지그입니다.jp의 등록 상표입니다.
그렇다면 이 아이치오잼 R은 이전 아이치오잼 CPU와 종류가 달라 지금까지의 기계어를 사용할 수 없다.
상술한 문장의'쌍방응'은'동일한 소스 코드에서 각자의 기계 언어를 생성할 수 있다'는 뜻이다
같은 기계 언어를 동시에 사용할 수 없다.
하지만 이동이 제한된 기종은 불편하기 때문에 최대한 피하려고 한다.
그래서 나는 같은 위치에서 같은 기계 언어를 운행함으로써 둘 다 행동할 수 있는 방법을 생각했다.
두 가지 대응하는 기계 언어
예컨대
00101111 10110111
11100xxx xxxxxxxx
나는 이런 기계어를 사용할 수 있다는 것을 알았다.이전 IchigeoJam에서는 1행
R7 - #B7
, 2행GOTO n11
이 표시됩니다.Cortex-M0 Arm 기계 언어표(ASm15 기재, 발췌문)
첫 번째 줄은 비교 명령으로 표지 레지스터의 값이 파괴되지만 다른 일반 레지스터(PC 제외)의 값에 영향을 주지 않는다.
두 번째 행
GOTO
에서 제어를 원하는 위치로 이동할 수 있습니다.한편, IchioJamR은 이 두 줄에서
R31 = n32
lui
를 나타낸다.RV32C RISC-V 기계 언어표(asm15r, 발췌문)
따라서 레지스터
R31
의 값이 파괴되었지만 다른 일반 레지스터의 값에 영향을 주지 않습니다다음 명령으로 들어갈 수 있습니다.
참조The RISC-V Instruction Set Manual, Volume I: User-Level ISA, Document Version 20191213의 Chapter 25 RISC-V Assiembly Programmer's Handbook
이 레지스터
R31
에 해당하는 x31
는Temporaries이고 Saver는Caller입니다.기계 언어를 호출한 후 바로 저장해야 할 중요한 정보를 입력하지 않았다고 생각하다
이 처리로 망가져도 괜찮겠지.
따라서 이 기계 언어를 통해 데이터의 파괴를 최소화하는 동시에 이전의 IchigeoJam에서 처리를 도약시킨다
IchikoJamR은 건너뛰지 않고 처리할 수 있습니다.
그리고 분기 후 각자의 규격에 따라 기계어를 배치하면 된다.
포함된 예
다음 코드에서 지금까지의 IchigeoJam 기계 언어는 0을 되돌려주고'이마인'을 출력한다.
Ichio JamR에서 기계 언어가 1 출력'나의 녀석'을 되돌려줍니다.
10 ' CPU ヲ ハンベツ スル
20 POKE#700,`10110111,`00101111 :' R7 - #B7
30 POKE#702,`00000001,`11100000 :' GOTO @TRAD
40 POKE#704,`00000101,`01000101 :' R10 = 1
50 POKE#706,`10000010,`10000000 :' RET
60 ' @TRAD
70 POKE#708,`00000000,`00100000 :' R0 = 0
80 POKE#70A,`01110000,`01000111 :' RET
90 IF USR(#700,0) ?"アタラシイ ヤツ" ELSE ?"イママデノ ヤツ"
결론
이전 IchigeoJam에서는 점프였지만 IchigeoJamR에서는 점프하지 않음 명령
기계 언어가 어느 CPU에 의해 실행되는지 판단하다
나는 각자의 처리가 갈라질 수 있다는 것을 알았다.
Reference
이 문제에 관하여(지금까지 (LPC114 사용) IchigeoJam과 IchigeoJam R 두 가지 기계 언어 지원), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/mikecat_mixc/items/5c14111e8f144d16b4fa텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)