aboutsummaryrefslogtreecommitdiffhomepage
path: root/sample/bf.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'sample/bf.cpp')
-rw-r--r--sample/bf.cpp16
1 files changed, 8 insertions, 8 deletions
diff --git a/sample/bf.cpp b/sample/bf.cpp
index 2abb8a5..657c87c 100644
--- a/sample/bf.cpp
+++ b/sample/bf.cpp
@@ -30,7 +30,7 @@ public:
const Reg32& pPutchar(esi);
const Reg32& pGetchar(edi);
const Reg32& stack(ebp);
- const Address cur = dword [stack];
+ const Address cur = byte [stack];
push(ebp); // stack
push(esi);
push(edi);
@@ -42,7 +42,7 @@ public:
const Reg64& pPutchar(rsi);
const Reg64& pGetchar(rdi);
const Reg64& stack(rbp); // stack
- const Address cur = dword [stack];
+ const Address cur = byte [stack];
push(rsi);
push(rdi);
push(rbp);
@@ -53,7 +53,7 @@ public:
const Reg64& pPutchar(rbx);
const Reg64& pGetchar(rbp);
const Reg64& stack(r12); // stack
- const Address cur = dword [stack];
+ const Address cur = byte [stack];
push(rbx);
push(rbp);
push(r12);
@@ -80,7 +80,7 @@ public:
case '<':
{
int count = getContinuousChar(is, c);
- add(stack, 4 * (c == '>' ? count : -count));
+ add(stack, (c == '>' ? count : -count));
}
break;
case '.':
@@ -89,12 +89,12 @@ public:
call(pPutchar);
pop(eax);
#elif defined(XBYAK64_WIN)
- mov(ecx, cur);
+ movzx(ecx, cur);
sub(rsp, 32);
call(pPutchar);
add(rsp, 32);
#else
- mov(edi, cur);
+ movzx(edi, cur);
call(pPutchar);
#endif
break;
@@ -106,13 +106,13 @@ public:
call(pGetchar);
add(rsp, 32);
#endif
- mov(cur, eax);
+ mov(cur, al);
break;
case '[':
{
Label B = L();
labelB.push(B);
- mov(eax, cur);
+ movzx(eax, cur);
test(eax, eax);
Label F;
jz(F, T_NEAR);