mirror of
https://git.wownero.com/wownero/onion-wownero-blockchain-explorer.git
synced 2024-08-15 00:33:12 +00:00
asm x86 added
This commit is contained in:
parent
3c15b14759
commit
a8d3d67099
2 changed files with 56 additions and 17 deletions
40
src/page.h
40
src/page.h
|
@ -16,6 +16,7 @@
|
|||
#include "virtual_machine.hpp"
|
||||
#include "program.hpp"
|
||||
#include "aes_hash.hpp"
|
||||
#include "assembly_generator_x86.hpp"
|
||||
|
||||
#include "../gen/version.h"
|
||||
|
||||
|
@ -1440,7 +1441,7 @@ show_randomx(uint64_t _blk_height)
|
|||
string blk_hash_str = pod_to_hex(blk_hash);
|
||||
|
||||
|
||||
vector<string> rx_code = get_randomx_code(_blk_height,
|
||||
auto rx_code = get_randomx_code(_blk_height,
|
||||
blk, blk_hash);
|
||||
|
||||
mstch::array rx_code_str = mstch::array{};
|
||||
|
@ -1451,7 +1452,8 @@ show_randomx(uint64_t _blk_height)
|
|||
rx_code_str.push_back(
|
||||
mstch::map {
|
||||
{"rx_code_idx", code_idx++},
|
||||
{"rx_code", std::move(rxc)}
|
||||
{"rx_code", std::move(rxc.first)},
|
||||
{"rx_code_asm", std::move(rxc.second)}
|
||||
});
|
||||
}
|
||||
|
||||
|
@ -7179,12 +7181,12 @@ get_tx(string const& tx_hash_str,
|
|||
return true;
|
||||
}
|
||||
|
||||
vector<string>
|
||||
vector<std::pair<string, string>>
|
||||
get_randomx_code(uint64_t blk_height,
|
||||
block const& blk,
|
||||
crypto::hash const& blk_hash)
|
||||
{
|
||||
vector<string> rx_code;
|
||||
vector<std::pair<string, string>> rx_code;
|
||||
|
||||
uint64_t seed_height;
|
||||
|
||||
|
@ -7220,6 +7222,8 @@ get_randomx_code(uint64_t blk_height,
|
|||
rx_vm->initScratchpad(&tempHash);
|
||||
rx_vm->resetRoundingMode();
|
||||
|
||||
randomx::Program prg;
|
||||
|
||||
for (int chain = 0; chain < RANDOMX_PROGRAM_COUNT - 1; ++chain)
|
||||
{
|
||||
rx_vm->run(&tempHash);
|
||||
|
@ -7227,15 +7231,31 @@ get_randomx_code(uint64_t blk_height,
|
|||
rx_vm->getRegisterFile(),
|
||||
sizeof(randomx::RegisterFile), nullptr, 0);
|
||||
|
||||
stringstream ss;
|
||||
ss << rx_vm->getProgram();
|
||||
rx_code.push_back(ss.str());
|
||||
prg = *(rx_vm->getProgram());
|
||||
|
||||
stringstream ss, ss2;
|
||||
ss << prg;
|
||||
|
||||
|
||||
randomx::AssemblyGeneratorX86 asmX86;
|
||||
asmX86.generateProgram(prg);
|
||||
asmX86.printCode(ss2);
|
||||
|
||||
rx_code.emplace_back(ss.str(), ss2.str());
|
||||
}
|
||||
|
||||
rx_vm->run(&tempHash);
|
||||
stringstream ss;
|
||||
ss << rx_vm->getProgram();
|
||||
rx_code.push_back(ss.str());
|
||||
|
||||
prg = *(rx_vm->getProgram());
|
||||
|
||||
stringstream ss, ss2;
|
||||
ss << prg;
|
||||
|
||||
randomx::AssemblyGeneratorX86 asmX86;
|
||||
asmX86.generateProgram(prg);
|
||||
asmX86.printCode(ss2);
|
||||
|
||||
rx_code.emplace_back(ss.str(), ss2.str());
|
||||
|
||||
crypto::hash res2;
|
||||
rx_vm->getFinalResult(res2.data, RANDOMX_HASH_SIZE);
|
||||
|
|
|
@ -2,14 +2,33 @@
|
|||
<div>
|
||||
|
||||
<H4>Block hash (height): {{blk_hash}} ({{blk_height}})</H4>
|
||||
<h3>Recalculated {{pow}}</h3>
|
||||
<h4>
|
||||
Eight RandomX and correspoding assembly x86 programs used
|
||||
to calcualte PoW hash of the block
|
||||
</h4>
|
||||
|
||||
<h3>RandomX source code</h3>
|
||||
<div class="center" style="width:90%">
|
||||
{{#rx_codes}}
|
||||
<h4>Source code #{{rx_code_idx}}</h4>
|
||||
{{#rx_codes}}
|
||||
<h3> Program #{{rx_code_idx}}</h3>
|
||||
<table class="center" style="width: 50%; margin-top:10px">
|
||||
<tr>
|
||||
<td style="text-align: left;">RandomX code</td>
|
||||
<td style="text-align: left;">ASM x86</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="2"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: left;vertical-align: top;">
|
||||
<pre>{{rx_code}}</pre>
|
||||
{{/rx_codes}}
|
||||
</div>
|
||||
</td>
|
||||
<td style="text-align: left;vertical-align: top;">
|
||||
<pre>{{rx_code_asm}}</pre>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
{{/rx_codes}}
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
|
Loading…
Reference in a new issue