mirror of
https://github.com/NationalSecurityAgency/ghidra.git
synced 2025-10-05 10:49:34 +02:00
Added pcodetest source code to SleighDevTools module. Corrected
certification issues.
This commit is contained in:
parent
5b65962e04
commit
fca9e847c7
55 changed files with 12576 additions and 5 deletions
656
Ghidra/Extensions/SleighDevTools/pcodetest/c_src/BIOPS_BODY.c
Normal file
656
Ghidra/Extensions/SleighDevTools/pcodetest/c_src/BIOPS_BODY.c
Normal file
|
@ -0,0 +1,656 @@
|
|||
/* ###
|
||||
* IP: GHIDRA
|
||||
*
|
||||
* 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 "pcode_test.h"
|
||||
|
||||
u1 pcode_u1_complexLogic(u1 a, u1 b, u1 c, u1 d, u1 e, u1 f)
|
||||
{
|
||||
u1 ret = 0;
|
||||
|
||||
if (a > b && b > c || d < e && f < e) {
|
||||
ret += 1;
|
||||
}
|
||||
if (a != b || a != c && d != e || f != e) {
|
||||
ret += 2;
|
||||
}
|
||||
if (a && b && c || d && e && f) {
|
||||
ret += 4;
|
||||
}
|
||||
if (a || b || c && d || e || f) {
|
||||
ret += 8;
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
u2 pcode_u2_complexLogic(u2 a, u2 b, u2 c, u2 d, u2 e, u2 f)
|
||||
{
|
||||
u2 ret = 0;
|
||||
|
||||
if (a > b && b > c || d < e && f < e) {
|
||||
ret += 1;
|
||||
}
|
||||
if (a != b || a != c && d != e || f != e) {
|
||||
ret += 2;
|
||||
}
|
||||
if (a && b && c || d && e && f) {
|
||||
ret += 4;
|
||||
}
|
||||
if (a || b || c && d || e || f) {
|
||||
ret += 8;
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
u4 pcode_u4_complexLogic(u4 a, u4 b, u4 c, u4 d, u4 e, u4 f)
|
||||
{
|
||||
u4 ret = 0;
|
||||
|
||||
if (a > b && b > c || d < e && f < e) {
|
||||
ret += 1;
|
||||
}
|
||||
if (a != b || a != c && d != e || f != e) {
|
||||
ret += 2;
|
||||
}
|
||||
if (a && b && c || d && e && f) {
|
||||
ret += 4;
|
||||
}
|
||||
if (a || b || c && d || e || f) {
|
||||
ret += 8;
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
i1 pcode_i1_complexLogic(i1 a, i1 b, i1 c, i1 d, i1 e, i1 f)
|
||||
{
|
||||
i1 ret = 0;
|
||||
|
||||
if (a > b && b > c || d < e && f < e) {
|
||||
ret += 1;
|
||||
}
|
||||
if (a != b || a != c && d != e || f != e) {
|
||||
ret += 2;
|
||||
}
|
||||
if (a && b && c || d && e && f) {
|
||||
ret += 4;
|
||||
}
|
||||
if (a || b || c && d || e || f) {
|
||||
ret += 8;
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
i2 pcode_i2_complexLogic(i2 a, i2 b, i2 c, i2 d, i2 e, i2 f)
|
||||
{
|
||||
i2 ret = 0;
|
||||
|
||||
if (a > b && b > c || d < e && f < e) {
|
||||
ret += 1;
|
||||
}
|
||||
if (a != b || a != c && d != e || f != e) {
|
||||
ret += 2;
|
||||
}
|
||||
if (a && b && c || d && e && f) {
|
||||
ret += 4;
|
||||
}
|
||||
if (a || b || c && d || e || f) {
|
||||
ret += 8;
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
i4 pcode_i4_complexLogic(i4 a, i4 b, i4 c, i4 d, i4 e, i4 f)
|
||||
{
|
||||
i4 ret = 0;
|
||||
|
||||
if (a > b && b > c || d < e && f < e) {
|
||||
ret += 1;
|
||||
}
|
||||
if (a != b || a != c && d != e || f != e) {
|
||||
ret += 2;
|
||||
}
|
||||
if (a && b && c || d && e && f) {
|
||||
ret += 4;
|
||||
}
|
||||
if (a || b || c && d || e || f) {
|
||||
ret += 8;
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
u1 biopCmpu1u1(u1 lhs, u1 rhs)
|
||||
{
|
||||
if (lhs < rhs)
|
||||
lhs += 2;
|
||||
if (lhs > rhs)
|
||||
lhs += 4;
|
||||
if (lhs == 0)
|
||||
lhs += 8;
|
||||
if (lhs != rhs)
|
||||
lhs += 16;
|
||||
return lhs;
|
||||
}
|
||||
|
||||
u2 biopCmpu2u2(u2 lhs, u2 rhs)
|
||||
{
|
||||
if (lhs < rhs)
|
||||
lhs += 2;
|
||||
if (lhs > rhs)
|
||||
lhs += 4;
|
||||
if (lhs == 0)
|
||||
lhs += 8;
|
||||
if (lhs != rhs)
|
||||
lhs += 16;
|
||||
return lhs;
|
||||
}
|
||||
|
||||
u4 biopCmpu4u4(u4 lhs, u4 rhs)
|
||||
{
|
||||
if (lhs < rhs)
|
||||
lhs += 2;
|
||||
if (lhs > rhs)
|
||||
lhs += 4;
|
||||
if (lhs == 0)
|
||||
lhs += 8;
|
||||
if (lhs != rhs)
|
||||
lhs += 16;
|
||||
return lhs;
|
||||
}
|
||||
|
||||
i1 biopCmpi1i1(i1 lhs, i1 rhs)
|
||||
{
|
||||
if (lhs < 0)
|
||||
lhs += 2;
|
||||
if (lhs > 0)
|
||||
lhs += 4;
|
||||
if (lhs == 0)
|
||||
lhs += 8;
|
||||
if (lhs != rhs)
|
||||
lhs += 16;
|
||||
return lhs;
|
||||
}
|
||||
|
||||
i2 biopCmpi2i2(i2 lhs, i2 rhs)
|
||||
{
|
||||
if (lhs < 0)
|
||||
lhs += 2;
|
||||
if (lhs > 0)
|
||||
lhs += 4;
|
||||
if (lhs == 0)
|
||||
lhs += 8;
|
||||
if (lhs != rhs)
|
||||
lhs += 16;
|
||||
return lhs;
|
||||
}
|
||||
|
||||
i4 biopCmpi4i4(i4 lhs, i4 rhs)
|
||||
{
|
||||
if (lhs < 0)
|
||||
lhs += 2;
|
||||
if (lhs > 0)
|
||||
lhs += 4;
|
||||
if (lhs == 0)
|
||||
lhs += 8;
|
||||
if (lhs != rhs)
|
||||
lhs += 16;
|
||||
return lhs;
|
||||
}
|
||||
|
||||
i4 biopAndi4i4(i4 lhs, i4 rhs)
|
||||
{
|
||||
i4 z;
|
||||
|
||||
z = lhs & rhs;
|
||||
return z;
|
||||
}
|
||||
|
||||
i1 biopLei1i1(i1 lhs, i1 rhs)
|
||||
{
|
||||
i1 z;
|
||||
|
||||
z = lhs <= rhs;
|
||||
return z;
|
||||
}
|
||||
|
||||
u4 biopLogicAndu4u4(u4 lhs, u4 rhs)
|
||||
{
|
||||
u4 z;
|
||||
|
||||
z = lhs && rhs;
|
||||
return z;
|
||||
}
|
||||
|
||||
u2 biopGtu2u2(u2 lhs, u2 rhs)
|
||||
{
|
||||
u2 z;
|
||||
|
||||
z = lhs > rhs;
|
||||
return z;
|
||||
}
|
||||
|
||||
i1 biopEqi1i1(i1 lhs, i1 rhs)
|
||||
{
|
||||
i1 z;
|
||||
|
||||
z = lhs == rhs;
|
||||
return z;
|
||||
}
|
||||
|
||||
i4 biopOri4i4(i4 lhs, i4 rhs)
|
||||
{
|
||||
i4 z;
|
||||
|
||||
z = lhs | rhs;
|
||||
return z;
|
||||
}
|
||||
|
||||
u4 unopNotu4(u4 lhs)
|
||||
{
|
||||
u4 z;
|
||||
|
||||
z = !lhs;
|
||||
return z;
|
||||
}
|
||||
|
||||
u1 unopPlusu1(u1 lhs)
|
||||
{
|
||||
u1 z;
|
||||
|
||||
z = +lhs;
|
||||
return z;
|
||||
}
|
||||
|
||||
u2 biopGeu2u2(u2 lhs, u2 rhs)
|
||||
{
|
||||
u2 z;
|
||||
|
||||
z = lhs >= rhs;
|
||||
return z;
|
||||
}
|
||||
|
||||
i1 biopNei1i1(i1 lhs, i1 rhs)
|
||||
{
|
||||
i1 z;
|
||||
|
||||
z = lhs != rhs;
|
||||
return z;
|
||||
}
|
||||
|
||||
i4 biopXOri4i4(i4 lhs, i4 rhs)
|
||||
{
|
||||
i4 z;
|
||||
|
||||
z = lhs ^ rhs;
|
||||
return z;
|
||||
}
|
||||
|
||||
i4 biopDividi4i4(i4 lhs, i4 rhs)
|
||||
{
|
||||
i4 z;
|
||||
|
||||
z = lhs / rhs;
|
||||
return z;
|
||||
}
|
||||
|
||||
i4 biopRemainderi4i4(i4 lhs, i4 rhs)
|
||||
{
|
||||
i4 z;
|
||||
|
||||
z = lhs % rhs;
|
||||
return z;
|
||||
}
|
||||
|
||||
u2 biopLtu2u2(u2 lhs, u2 rhs)
|
||||
{
|
||||
u2 z;
|
||||
|
||||
z = lhs < rhs;
|
||||
return z;
|
||||
}
|
||||
|
||||
i1 biopAndi1i1(i1 lhs, i1 rhs)
|
||||
{
|
||||
i1 z;
|
||||
|
||||
z = lhs & rhs;
|
||||
return z;
|
||||
}
|
||||
|
||||
i4 biopLogicOri4i4(i4 lhs, i4 rhs)
|
||||
{
|
||||
i4 z;
|
||||
|
||||
z = lhs || rhs;
|
||||
return z;
|
||||
}
|
||||
|
||||
u4 unopPlusu4(u4 lhs)
|
||||
{
|
||||
u4 z;
|
||||
|
||||
z = +lhs;
|
||||
return z;
|
||||
}
|
||||
|
||||
u2 biopLeu2u2(u2 lhs, u2 rhs)
|
||||
{
|
||||
u2 z;
|
||||
|
||||
z = lhs <= rhs;
|
||||
return z;
|
||||
}
|
||||
|
||||
i4 biopLogicAndi4i4(i4 lhs, i4 rhs)
|
||||
{
|
||||
i4 z;
|
||||
|
||||
z = lhs && rhs;
|
||||
return z;
|
||||
}
|
||||
|
||||
i1 biopOri1i1(i1 lhs, i1 rhs)
|
||||
{
|
||||
i1 z;
|
||||
|
||||
z = lhs | rhs;
|
||||
return z;
|
||||
}
|
||||
|
||||
i2 biopRemainderi2i2(i2 lhs, i2 rhs)
|
||||
{
|
||||
i2 z;
|
||||
|
||||
z = lhs % rhs;
|
||||
return z;
|
||||
}
|
||||
|
||||
i2 biopMulti2i2(i2 lhs, i2 rhs)
|
||||
{
|
||||
i2 z;
|
||||
|
||||
z = lhs * rhs;
|
||||
return z;
|
||||
}
|
||||
|
||||
u2 biopEqu2u2(u2 lhs, u2 rhs)
|
||||
{
|
||||
u2 z;
|
||||
|
||||
z = lhs == rhs;
|
||||
return z;
|
||||
}
|
||||
|
||||
i2 biopDividi2i2(i2 lhs, i2 rhs)
|
||||
{
|
||||
i2 z;
|
||||
|
||||
z = lhs / rhs;
|
||||
return z;
|
||||
}
|
||||
|
||||
i4 unopNoti4(i4 lhs)
|
||||
{
|
||||
i4 z;
|
||||
|
||||
z = !lhs;
|
||||
return z;
|
||||
}
|
||||
|
||||
u2 biopNeu2u2(u2 lhs, u2 rhs)
|
||||
{
|
||||
u2 z;
|
||||
|
||||
z = lhs != rhs;
|
||||
return z;
|
||||
}
|
||||
|
||||
i1 biopLogicOri1i1(i1 lhs, i1 rhs)
|
||||
{
|
||||
i1 z;
|
||||
|
||||
z = lhs || rhs;
|
||||
return z;
|
||||
}
|
||||
|
||||
i1 biopXOri1i1(i1 lhs, i1 rhs)
|
||||
{
|
||||
i1 z;
|
||||
|
||||
z = lhs ^ rhs;
|
||||
return z;
|
||||
}
|
||||
|
||||
i1 biopRemainderi1i1(i1 lhs, i1 rhs)
|
||||
{
|
||||
i1 z;
|
||||
|
||||
z = lhs % rhs;
|
||||
return z;
|
||||
}
|
||||
|
||||
i2 biopSubi2i2(i2 lhs, i2 rhs)
|
||||
{
|
||||
i2 z;
|
||||
|
||||
z = lhs - rhs;
|
||||
return z;
|
||||
}
|
||||
|
||||
i1 biopDividi1i1(i1 lhs, i1 rhs)
|
||||
{
|
||||
i1 z;
|
||||
|
||||
z = lhs / rhs;
|
||||
return z;
|
||||
}
|
||||
|
||||
i4 unopNegativei4(i4 lhs)
|
||||
{
|
||||
i4 z;
|
||||
|
||||
z = -lhs;
|
||||
return z;
|
||||
}
|
||||
|
||||
i2 biopAddi2i2(i2 lhs, i2 rhs)
|
||||
{
|
||||
i2 z;
|
||||
|
||||
z = lhs + rhs;
|
||||
return z;
|
||||
}
|
||||
|
||||
u2 biopAndu2u2(u2 lhs, u2 rhs)
|
||||
{
|
||||
u2 z;
|
||||
|
||||
z = lhs & rhs;
|
||||
return z;
|
||||
}
|
||||
|
||||
i1 biopLogicAndi1i1(i1 lhs, i1 rhs)
|
||||
{
|
||||
i1 z;
|
||||
|
||||
z = lhs && rhs;
|
||||
return z;
|
||||
}
|
||||
|
||||
i4 unopPlusi4(i4 lhs)
|
||||
{
|
||||
i4 z;
|
||||
|
||||
z = +lhs;
|
||||
return z;
|
||||
}
|
||||
|
||||
i2 biopShtLfti2i2(i2 lhs, i2 rhs)
|
||||
{
|
||||
i2 z;
|
||||
|
||||
z = lhs << rhs;
|
||||
return z;
|
||||
}
|
||||
|
||||
u2 biopOru2u2(u2 lhs, u2 rhs)
|
||||
{
|
||||
u2 z;
|
||||
|
||||
z = lhs | rhs;
|
||||
return z;
|
||||
}
|
||||
|
||||
i1 unopNoti1(i1 lhs)
|
||||
{
|
||||
i1 z;
|
||||
|
||||
z = !lhs;
|
||||
return z;
|
||||
}
|
||||
|
||||
u4 biopMultu4u4(u4 lhs, u4 rhs)
|
||||
{
|
||||
u4 z;
|
||||
|
||||
z = lhs * rhs;
|
||||
return z;
|
||||
}
|
||||
|
||||
i2 biopShtRhti2i2(i2 lhs, i2 rhs)
|
||||
{
|
||||
i2 z;
|
||||
|
||||
z = lhs >> rhs;
|
||||
return z;
|
||||
}
|
||||
|
||||
u2 biopXOru2u2(u2 lhs, u2 rhs)
|
||||
{
|
||||
u2 z;
|
||||
|
||||
z = lhs ^ rhs;
|
||||
return z;
|
||||
}
|
||||
|
||||
u4 biopSubu4u4(u4 lhs, u4 rhs)
|
||||
{
|
||||
u4 z;
|
||||
|
||||
z = lhs - rhs;
|
||||
return z;
|
||||
}
|
||||
|
||||
i1 unopNegativei1(i1 lhs)
|
||||
{
|
||||
i1 z;
|
||||
|
||||
z = -lhs;
|
||||
return z;
|
||||
}
|
||||
|
||||
i2 biopGti2i2(i2 lhs, i2 rhs)
|
||||
{
|
||||
i2 z;
|
||||
|
||||
z = lhs > rhs;
|
||||
return z;
|
||||
}
|
||||
|
||||
u2 biopLogicOru2u2(u2 lhs, u2 rhs)
|
||||
{
|
||||
u2 z;
|
||||
|
||||
z = lhs || rhs;
|
||||
return z;
|
||||
}
|
||||
|
||||
u4 biopAddu4u4(u4 lhs, u4 rhs)
|
||||
{
|
||||
u4 z;
|
||||
|
||||
z = lhs + rhs;
|
||||
return z;
|
||||
}
|
||||
|
||||
i1 unopPlusi1(i1 lhs)
|
||||
{
|
||||
i1 z;
|
||||
|
||||
z = +lhs;
|
||||
return z;
|
||||
}
|
||||
|
||||
i2 biopGei2i2(i2 lhs, i2 rhs)
|
||||
{
|
||||
i2 z;
|
||||
|
||||
z = lhs >= rhs;
|
||||
return z;
|
||||
}
|
||||
|
||||
u2 biopLogicAndu2u2(u2 lhs, u2 rhs)
|
||||
{
|
||||
u2 z;
|
||||
|
||||
z = lhs && rhs;
|
||||
return z;
|
||||
}
|
||||
|
||||
u1 biopMultu1u1(u1 lhs, u1 rhs)
|
||||
{
|
||||
u1 z;
|
||||
|
||||
z = lhs * rhs;
|
||||
return z;
|
||||
}
|
||||
|
||||
u1 biopGtu1u1(u1 lhs, u1 rhs)
|
||||
{
|
||||
u1 z;
|
||||
|
||||
z = lhs > rhs;
|
||||
return z;
|
||||
}
|
||||
|
||||
u4 biopShtLftu4u4(u4 lhs, u4 rhs)
|
||||
{
|
||||
u4 z;
|
||||
|
||||
z = lhs << rhs;
|
||||
return z;
|
||||
}
|
||||
|
||||
i2 biopOri2i2(i2 lhs, i2 rhs)
|
||||
{
|
||||
i2 z;
|
||||
|
||||
z = lhs | rhs;
|
||||
return z;
|
||||
}
|
||||
|
||||
i2 biopLti2i2(i2 lhs, i2 rhs)
|
||||
{
|
||||
i2 z;
|
||||
|
||||
z = lhs < rhs;
|
||||
return z;
|
||||
}
|
||||
|
||||
i4 biopMulti4i4(i4 lhs, i4 rhs)
|
||||
{
|
||||
i4 z;
|
||||
|
||||
z = lhs * rhs;
|
||||
return z;
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue