Encountering some VERY strange behaviour, here's the relevant output:
Code:
...
test.c:393: bitwise() 'Shifting values...'
test.c:394: bitwise() '==========================================='
test.c:99: modify() num.node = 8, val.node = 9, _num = 0x00000000DEADC0DE, _val = 0x0000000000000004
num = 0000000000000000000000000000000000000000000000000000000000000100
val = 0000000000000000000000000000000000000000000000000000000000000100
test.c:212: modify() 0x00000000DEADC0DE >> 0x0000000000000004, Expected 0x000000000DEADC0D, Got 0x0000000000000000, op = '>'
test.c:410: bitwise() 'Rotating values...'
test.c:411: bitwise() '==========================================='
test.c:212: modify() 0x00000000DEADC0DE <<< 0x0000000000000004, Expected 0x0000000DEADC0DE0, Got 0x00000000DEADC0DE, op = 'l'
...
And here's the relevant code:
Code:
int modify(
alu_t *alu
, ssize_t _num
, ssize_t _val
, uint_t info
, bool print_anyways
, int op
)
{
int ret = 0;
uint_t nodes[2] = {0};
alu_reg_t num = {0}, val = {0};
ssize_t expect = 0;
char pfx[sizeof(size_t) * CHAR_BIT] = {0};
ret = alu_get_reg_nodes( alu, nodes, 2, 0 );
if ( ret != 0 )
{
alu_error( ret );
return ret;
}
alu_reg_init( alu, num, nodes[0], info );
alu_reg_init( alu, val, nodes[1], info );
num.upto = val.upto = bitsof(size_t);
alu_reg_set_nil( alu, num );
alu_reg_set_nil( alu, val );
alu_reg_set_raw( alu, num, &_num, info, sizeof(ssize_t) );
alu_reg_set_raw( alu, val, &_val, info, sizeof(ssize_t) );
#if 1
if ( op == '>' )
{
alu_printf
(
"num.node = %u, val.node = %u, _num = 0x%016zX, _val = 0x%016zX",
num.node, val.node, _num, _val
);
alu_print_reg( "num", alu, num, 0, 1 );
alu_print_reg( "val", alu, val, 0, 1 );
}
#endif
...
When I try moving
Code:
alu_reg_set_raw( alu, num, &_num, info, sizeof(ssize_t) );
to below
Code:
alu_reg_set_raw( alu, val, &_val, info, sizeof(ssize_t) );
Somehow val ends up holding 0xDEADC0DE (value of _num) while num remains fixed at 4 (value of _val), if I leave them as they are then both get 4, I don't understand how that is happening when I very clearly stated which I wanted to hold what, anyone have any ideas? Edit: Btw I've already tried rebuilding everything