@@ -59,17 +59,24 @@ namespace pl::lib::libstd::mem {
59
59
{
60
60
61
61
/* base_address() */
62
- runtime.addFunction (nsStdMem, " base_address" , FunctionParameterCount::none (), [](Evaluator *ctx, auto params) -> std::optional<Token::Literal> {
63
- wolv::util::unused (params);
62
+ runtime.addFunction (nsStdMem, " base_address" , FunctionParameterCount::between (0 , 1 ), [](Evaluator *ctx, auto params) -> std::optional<Token::Literal> {
63
+ auto section = params.size () == 1 ? params[0 ].toUnsigned () : ptrn::Pattern::MainSectionId;
64
+ if (section == 0xFFFF'FFFF'FFFF'FFFF )
65
+ section = ctx->getUserSectionId ();
66
+
67
+ if (section != ptrn::Pattern::MainSectionId)
68
+ return 0 ;
64
69
65
70
return u128 (ctx->getDataBaseAddress ());
66
71
});
67
72
68
73
/* size() */
69
- runtime.addFunction (nsStdMem, " size" , FunctionParameterCount::none (), [](Evaluator *ctx, auto params) -> std::optional<Token::Literal> {
70
- wolv::util::unused (params);
74
+ runtime.addFunction (nsStdMem, " size" , FunctionParameterCount::between (0 , 1 ), [](Evaluator *ctx, auto params) -> std::optional<Token::Literal> {
75
+ auto section = params.size () == 1 ? params[0 ].toUnsigned () : ptrn::Pattern::MainSectionId;
76
+ if (section == 0xFFFF'FFFF'FFFF'FFFF )
77
+ section = ctx->getUserSectionId ();
71
78
72
- return u128 (ctx->getDataSize ( ));
79
+ return u128 (ctx->getSectionSize (section ));
73
80
});
74
81
75
82
/* find_sequence_in_range(occurrence_index, start_offset, end_offset, bytes...) */
0 commit comments