здравствуйте. у меня есть фрагмент псевдоассемблера. этот псевдоассемблер был получен из luac скрипта. пример:
у меня есть джамп, с которым у меня возникает проблема. мне этот код нужно преобразовать в hex для того, чтобы получить джамп в виде хекса, так как я не понимаю, что указывать вторым и третьим параметром.
например: у меня есть код
в hex виде джамп выглядит так: 58 05 16 80
разница между 00003AFF и 00003AA3 - 5C. Почему вторым и третьим байтом указаны 05 м 16? как это работает? можете объяснить, пожалуйста, или рассказать, как псевдоасм преобразовать в ассемблер?
псевдоасм:
00003A44 0000 36:GGET 0 0 ; "effil"
00003A48 0004 39:TGETS 0 0 1 ; "thread"
00003A4C 0008 33:FNEW 1 2 ; Palatka - Arizona RP.luac:0
00003A50 000C 32:UCLO 0 => 0010
00003A54 0010 => 44:CALLT 0 2
-- Proto #46 -- pos: 0x3A66, size: 0xD2, fullsize: 0xD4, flags: 0x0, params: 3, framesize: 0x9, numuv: 0, numkgc: 6, numkn: 0, numbc: 40, ins: 0x3A6F
00003A6F 0000 2C:KNIL 3 4
00003A73 0004 => 55:LOOP 5 => 0030
00003A77 0008 12:MOV 6 0
00003A7B 000C 39:TGETS 5 0 0 ; "status"
00003A7F 0010 42:CALL 5 3 2
00003A83 0014 12:MOV 4 6
00003A87 0018 12:MOV 3 5
00003A8B 001C 36:GGET 5 1 ; "wait"
00003A8F 0020 29:KSHORT 6 0
00003A93 0024 42:CALL 5 1 2
00003A97 0028 06:ISEQS 3 2 ; "running"
00003A9B 002C 58:JMP 5 => 0004
00003A9F 0030 => 0E:IST 4
00003AA3 0034 58:JMP 5 => 0090
00003AA7 0038 07:ISNES 3 3 ; "completed"
00003AAB 003C 58:JMP 5 => 0078
00003AAF 0040 12:MOV 6 0
00003AB3 0044 39:TGETS 5 0 4 ; "get"
00003AB7 0048 42:CALL 5 3 2
00003ABB 004C 0F:ISF 5
00003ABF 0050 58:JMP 7 => 0064
00003AC3 0054 12:MOV 7 1
00003AC7 0058 12:MOV 8 6
00003ACB 005C 42:CALL 7 1 2
00003ACF 0060 58:JMP 7 => 0070
00003AD3 0064 => 12:MOV 7 2
00003AD7 0068 12:MOV 8 6
00003ADB 006C 42:CALL 7 1 2
00003ADF 0070 => 4B:RET0 0 1
00003AE3 0074 58:JMP 5 => 009C
00003AE7 0078 => 07:ISNES 3 5 ; "canceled"
00003AEB 007C 58:JMP 5 => 009C
00003AEF 0080 12:MOV 5 2
00003AF3 0084 12:MOV 6 3
00003AF7 0088 44:CALLT 5 2
00003AFB 008C 58:JMP 5 => 009C
00003AFF 0090 => 12:MOV 5 2
00003B03 0094 12:MOV 6 4
00003B07 0098 44:CALLT 5 2
00003B0B 009C => 4B:RET0 0 1
у меня есть джамп, с которым у меня возникает проблема. мне этот код нужно преобразовать в hex для того, чтобы получить джамп в виде хекса, так как я не понимаю, что указывать вторым и третьим параметром.
например: у меня есть код
пример джампа:
00003AA3 [джамп] 0034 58:JMP 5 => 0090
.....
00003AFF [сюда происходит перемещение] 0090 => 12:MOV 5 2
00003B03 0094 12:MOV 6 4
00003B07 0098 44:CALLT 5 2
00003B0B 009C => 4B:RET0 0 1
в hex виде джамп выглядит так: 58 05 16 80
разница между 00003AFF и 00003AA3 - 5C. Почему вторым и третьим байтом указаны 05 м 16? как это работает? можете объяснить, пожалуйста, или рассказать, как псевдоасм преобразовать в ассемблер?