Thread: I can't spot my mistake...

Threaded View

Previous Post Previous Post   Next Post Next Post
  1. #6
    Registered User awsdert's Avatar
    Join Date
    Jan 2015
    Posts
    1,735
    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

Popular pages Recent additions subscribe to a feed

Similar Threads

  1. can anyone help to spot mistake in the code
    By chess_queen in forum C Programming
    Replies: 1
    Last Post: 10-21-2012, 10:37 AM
  2. Can you spot my mistake?
    By Brewer in forum C Programming
    Replies: 13
    Last Post: 11-12-2006, 12:50 PM
  3. going to a certain spot in a file...
    By agerealm in forum C++ Programming
    Replies: 3
    Last Post: 05-17-2002, 02:31 AM

Tags for this Thread