diff options
author | Peter Wu <lekensteyn@gmail.com> | 2011-12-06 16:56:06 +0000 |
---|---|---|
committer | Peter Wu <lekensteyn@gmail.com> | 2011-12-06 16:56:06 +0000 |
commit | f53bf21c6ad9fb3d2f1a40e2ce06816a6b2e3106 (patch) | |
tree | 0bdc837874ef233768bed43a02bd2ed3f8101e1f | |
parent | 6e8c92a69c6f7abe88d98e729e06bca6ccf17d72 (diff) | |
download | pp2cc-f53bf21c6ad9fb3d2f1a40e2ce06816a6b2e3106.tar.gz |
Add tests for memory address handling, fix compiler for negative constant
-rwxr-xr-x | pp2cc.py | 3 | ||||
-rw-r--r-- | tests/params.c | 7 | ||||
-rw-r--r-- | tests/read-timer.c | 6 |
3 files changed, 15 insertions, 1 deletions
@@ -1317,7 +1317,8 @@ class Parse(object): linked_node)) if op == "-": # negating a value in PP2 is flipping the WORDSIZE-th bit - value = operand ^ msb + value = -operand + #(operand ^ (pow(2, self.WORDSIZE) - 1)) + 1 elif op == "~": # invert all bits value = operand ^ (pow(2, self.WORDSIZE) - 1) diff --git a/tests/params.c b/tests/params.c index 2232fdd..2073000 100644 --- a/tests/params.c +++ b/tests/params.c @@ -3,9 +3,16 @@ int square(int x) { res = x * x; return res; } +int div(int a, int b) { + int aa = -a; + int bb = 1 * b; + return aa / bb; +} int main() { int x; x = square(9);// 81 e:goto e; + x = div(-150, 10);// 15 + ef:goto ef; return x; } diff --git a/tests/read-timer.c b/tests/read-timer.c new file mode 100644 index 0000000..d7bb2c3 --- /dev/null +++ b/tests/read-timer.c @@ -0,0 +1,6 @@ +int timer; +int *timerp = (int*)-3; +void main() { + timer = *timerp; + g:goto g; +} |