xvm/compile/wabt/src/opcode.cc
(开头部分) 11KB这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。
/*
* Copyright 2017 WebAssembly Community Group participants
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#include "src/opcode.h"
#include "src/feature.h"
namespace wabt {
// static
Opcode::Info Opcode::infos_[] = {
#define WABT_OPCODE(rtype, type1, type2, type3, mem_size, prefix, code, Name, \
text) \
{text, Type::rtype, Type::type1, \
Type::type2, Type::type3, mem_size, \
prefix, code, PrefixCode(prefix, code)},
#include "src/opcode.def"
#undef WABT_OPCODE
{"<invalid>", Type::Void, Type::Void, Type::Void, Type::Void, 0, 0, 0, 0},
};
#define WABT_OPCODE(rtype, type1, type2, type3, mem_size, prefix, code, Name, \
text) \
/* static */ Opcode Opcode::Name##_Opcode(Opcode::Name);
#include "src/opcode.def"
#undef WABT_OPCODE
Opcode::Info Opcode::GetInfo() const {
if (enum_ < Invalid) {
return infos_[enum_];
}
Info invalid_info = infos_[Opcode::Invalid];
DecodeInvalidOpcode(enum_, &invalid_info.prefix, &invalid_info.code);
invalid_info.prefix_code = PrefixCode(invalid_info.prefix, invalid_info.code);
return invalid_info;
}
bool Opcode::IsNaturallyAligned(Address alignment) const {
Address opcode_align = GetMemorySize();
return alignment == WABT_USE_NATURAL_ALIGNMENT || alignment == opcode_align;
}
Address Opcode::GetAlignment(Address alignment) const {
if (alignment == WABT_USE_NATURAL_ALIGNMENT) {
return GetMemorySize();
后面还有 320 行代码,解锁后查看完整代码
24 小时内免费解锁 3 个项目,之后 1 积分/个。 规则说明
AI 解读
登录后可用,每次 10 积分,解读结果公开显示在下面。
还没有人解读过这个文件。
