Skip to content

Instantly share code, notes, and snippets.

@agatti
Last active October 25, 2023 13:07
Show Gist options
  • Save agatti/fb66459edc00c52651c0a139983b5b2a to your computer and use it in GitHub Desktop.
Save agatti/fb66459edc00c52651c0a139983b5b2a to your computer and use it in GitHub Desktop.
RISC-V native_for.py
0x00000000 ADDI SP, SP, -140 0xFBA08097
0x00000004 SW RA, 0(SP) 0x0011101F
0x00000008 SW S0, 4(SP) 0x0081111F
0x0000000C SW S1, 8(SP) 0x0091121F
0x00000010 SW S2, 12(SP) 0x0121131F
0x00000014 SW S3, 16(SP) 0x0131141F
0x00000018 SW S4, 20(SP) 0x0141151F
0x0000001C SW S5, 24(SP) 0x0151161F
0x00000020 SW S6, 28(SP) 0x0161171F
0x00000024 SW S7, 32(SP) 0x0171101F
0x00000028 SW S8, 36(SP) 0x0181111F
0x0000002C SW S9, 40(SP) 0x0191121F
0x00000030 SW S10, 44(SP) 0x01A1131F
0x00000034 SW S11, 48(SP) 0x01B1141F
[API] LOAD_REG_REG_OFFSET {register_destination: T0, register_base: A0, offset: 1, resolved_offset: 0x00000004}
0x00000038 LW T0, 4(A0) 0x00229143
[API] LOAD_REG_REG_OFFSET {register_destination: S2, register_base: T0, offset: 2, resolved_offset: 0x00000008}
0x0000003C LW S2, 8(T0) 0x00415483
[API] LOAD_REG_REG_OFFSET {register_destination: T0, register_base: T0, offset: 3, resolved_offset: 0x0000000C}
0x00000040 LW T0, 12(T0) 0x00615143
[API] LOAD_REG_REG_OFFSET {register_destination: T0, register_base: T0, offset: 0, resolved_offset: 0x00000000}
0x00000044 LW T0, 0(T0) 0x00015143
[API] MOV_LOCAL_REG {local: 21, stack_offset: 0x00000054, register: A0}
0x00000048 LW A0, 84(SP) 0x02A09283
[API] LOAD_REG_REG_OFFSET {register_destination: A0, register_base: A0, offset: 2, resolved_offset: 0x00000008}
0x0000004C LW A0, 8(A0) 0x00429283
[API] MOV_LOCAL_REG {local: 22, stack_offset: 0x00000058, register: A0}
0x00000050 LW A0, 88(SP) 0x02C09283
[API] MOV_REG_IMM {register: A0, immediate: 8}
0x00000054 ADDI A0, ZERO, 8 0x00400297
[API] MOV_LOCAL_REG {local: 24, stack_offset: 0x00000060, register: A0}
0x00000058 LW A0, 96(SP) 0x03009283
[API] MOV_REG_LOCAL_ADDR {register: A0, local: 21, stack_offset: 0x00000054}
0x0000005C ADDI A0, SP, 84 0x02A08297
[API] CALL_IND {index: 45, offset: 0x000000B4}
0x00000060 JALR RA, T0, 180 0x05A1405F
[API] MOV_REG_LOCAL {register: A0, local: 21, stack_offset: 0x00000054}
0x00000064 SW A0, 84(SP) 0x02A1151F
[API] LOAD_REG_REG_OFFSET {register_destination: A0, register_base: A0, offset: 1, resolved_offset: 0x00000004}
0x00000068 LW A0, 4(A0) 0x00229283
[API] LOAD_REG_REG_OFFSET {register_destination: A0, register_base: A0, offset: 1, resolved_offset: 0x00000004}
0x0000006C LW A0, 4(A0) 0x00229283
[API] CALL_IND {index: 5, offset: 0x00000014}
0x00000070 JALR RA, T0, 20 0x00A1405F
[API] MOV_LOCAL_REG {local: 22, stack_offset: 0x00000058, register: A0}
0x00000074 LW A0, 88(SP) 0x02C09283
[API] JUMP_IF_REG_ZERO {register: A0, label: 2, destination: 0x00000098, displacement: 32}
0x00000078 BEQ A0, ZERO, 32 0x0205005B
[API] MOV_REG_LOCAL_ADDR {register: A0, local: 0, stack_offset: 0x00000000}
0x0000007C ADDI A0, SP, 0 0x00008297
[API] CALL_IND {index: 32, offset: 0x00000080}
0x00000080 JALR RA, T0, 128 0x0401405F
[API] JUMP_IF_REG_ZERO {register: A0, label: 2, destination: 0x00000098, displacement: 20}
0x00000084 BEQ A0, ZERO, 20 0x00050A5B
[API] MOV_REG_LOCAL {register: A0, local: 22, stack_offset: 0x00000058}
0x00000088 SW A0, 88(SP) 0x02A1161F
[API] CALL_IND {index: 5, offset: 0x00000014}
0x0000008C JALR RA, T0, 20 0x00A1405F
[API] MOV_REG_LOCAL {register: A0, local: 1, stack_offset: 0x00000004}
0x00000090 SW A0, 4(SP) 0x00A1111F
[API] CALL_IND {index: 34, offset: 0x00000088}
0x00000094 JALR RA, T0, 136 0x0441405F
[API] MOV_REG_LOCAL {register: S0, local: 33, stack_offset: 0x00000084}
0x00000098 SW S0, 132(SP) 0x0481111F
[API] MOV_REG_LOCAL {register: S1, local: 32, stack_offset: 0x00000080}
0x0000009C SW S1, 128(SP) 0x0491101F
[API] MOV_REG_REG {register_destination_index: A0, register_source_index: S0}
0x000000A0 ADD A0, ZERO, S0 0x004002B3
[API] MOV_REG_LOCAL_ADDR {register: A1, local: 26, stack_offset: 0x00000068}
0x000000A4 ADDI A1, SP, 104 0x034082D7
[API] CALL_IND {index: 30, offset: 0x00000078}
0x000000A8 JALR RA, T0, 120 0x03C1405F
[API] MOV_REG_LOCAL_ADDR {register: A0, local: 26, stack_offset: 0x00000068}
0x000000AC ADDI A0, SP, 104 0x03408297
[API] CALL_IND {index: 31, offset: 0x0000007C}
0x000000B0 JALR RA, T0, 124 0x03E1405F
[API] JUMP_IF_REG_ZERO {register: A0, label: 8, destination: 0x000000E0, displacement: 44}
0x000000B4 BEQ A0, ZERO, 44 0x0205065B
[API] MOV_REG_REG {register_destination_index: S1, register_source_index: A0}
0x000000B8 ADD S1, ZERO, A0 0x00500273
[API] LOAD16_REG_REG_OFFSET {register_destination: A0, register_base: S2, offset: 5, resolved_offset: 0x0000000A}
0x000000BC LH A0, 10(S2) 0x00548A83
[API] CALL_IND {index: 7, offset: 0x0000001C}
0x000000C0 JALR RA, T0, 28 0x00E1405F
[API] MOV_LOCAL_REG {local: 30, stack_offset: 0x00000078, register: A0}
0x000000C4 LW A0, 120(SP) 0x03C09283
[API] MOV_LOCAL_REG {local: 31, stack_offset: 0x0000007C, register: S1}
0x000000C8 LW S1, 124(SP) 0x03E09243
[API] MOV_REG_LOCAL_ADDR {register: A2, local: 31, stack_offset: 0x0000007C}
0x000000CC ADDI A2, SP, 124 0x03E08317
[API] MOV_REG_LOCAL {register: A0, local: 30, stack_offset: 0x00000078}
0x000000D0 SW A0, 120(SP) 0x03A1161F
[API] MOV_REG_IMM {register: A1, immediate: 1}
0x000000D4 ADDI A1, ZERO, 1 0x000802D7
[API] CALL_IND {index: 27, offset: 0x0000006C}
0x000000D8 JALR RA, T0, 108 0x0361405F
[API] JUMP {label: 7, destination: 0x000000AC, displacement: -48}
0x000000DC JAL ZERO, -48 0x7D17F067
[API] LOAD_REG_REG_OFFSET {register_destination: A0, register_base: T0, offset: 0, resolved_offset: 0x00000000}
0x000000E0 LW A0, 0(T0) 0x00015283
[API] MOV_LOCAL_REG {local: 20, stack_offset: 0x00000050, register: A0}
0x000000E4 LW A0, 80(SP) 0x02809283
[API] JUMP {label: 0, destination: 0x000000EC, displacement: 4}
0x000000E8 JAL ZERO, 4 0x00400067
[API] MOV_REG_LOCAL {register: A0, local: 22, stack_offset: 0x00000058}
0x000000EC SW A0, 88(SP) 0x02A1161F
[API] JUMP_IF_REG_ZERO {register: A0, label: 1, destination: 0x000000FC, displacement: 12}
0x000000F0 BEQ A0, ZERO, 12 0x0005065B
[API] CALL_IND {index: 5, offset: 0x00000014}
0x000000F4 JALR RA, T0, 20 0x00A1405F
[API] CALL_IND {index: 33, offset: 0x00000084}
0x000000F8 JALR RA, T0, 132 0x0421405F
[API] MOV_REG_LOCAL {register: A0, local: 20, stack_offset: 0x00000050}
0x000000FC SW A0, 80(SP) 0x02A1141F
0x00000100 LW RA, 0(SP) 0x00009043
0x00000104 LW S0, 4(SP) 0x00209203
0x00000108 LW S1, 8(SP) 0x00409243
0x0000010C LW S2, 12(SP) 0x00609483
0x00000110 LW S3, 16(SP) 0x008094C3
0x00000114 LW S4, 20(SP) 0x00A09503
0x00000118 LW S5, 24(SP) 0x00C09543
0x0000011C LW S6, 28(SP) 0x00E09583
0x00000120 LW S7, 32(SP) 0x010095C3
0x00000124 LW S8, 36(SP) 0x01209603
0x00000128 LW S9, 40(SP) 0x01409643
0x0000012C LW S10, 44(SP) 0x01609683
0x00000130 LW S11, 48(SP) 0x018096C3
0x00000134 ADDI SP, SP, 140 0x04608097
---CODE-BLOCK-START---
import pathlib
import binascii
code = binascii.a2b_hex('9780A0FB1F1011001F1181001F1291001F1321011F1431011F1541011F1651011F1761011F1071011F1181011F1291011F13A1011F14B101439122008354410043516100435101008392A002839242008392C00297024000839200039782A0025F40A1051F15A10283922200839222005F40A1008392C0025B000502978200005F4001045B0A05001F16A1025F40A1001F11A1005F4041041F1181041F109104B3024000D78240035F40C103978240035F40E1035B06050273025000838A54005F40E1008392C0034392E0031783E0031F16A103D70208005F40610367F0177D8352010083928002670040001F16A1025B0605005F40A1005F4021041F14A10243900000039220004392400083946000C39480000395A0004395C0008395E000C3950001039620014396400183966001C3968001978060045F40000000000000')
pathlib.Path('code.bin').write_bytes(code)
---CODE-BLOCK-END---
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment