diff options
author | Wojciech Kosior <kwojtus@protonmail.com> | 2020-09-14 17:21:55 +0200 |
---|---|---|
committer | Wojciech Kosior <kwojtus@protonmail.com> | 2020-09-14 17:21:55 +0200 |
commit | 9adc0e5bad01f34f6cf6b6d53019ead30ba49945 (patch) | |
tree | 251934b5b979af9c23153e795fd8e824b1275660 /tclasm.tcl | |
parent | 76fad4a36b498db9e96e77460cb1f5e721c0f3e9 (diff) | |
download | AGH-engineering-thesis-9adc0e5bad01f34f6cf6b6d53019ead30ba49945.tar.gz AGH-engineering-thesis-9adc0e5bad01f34f6cf6b6d53019ead30ba49945.zip |
add ability to make non-aligned loads/stores and loads/stores of 1 or 2 bytes together with test bench
Diffstat (limited to 'tclasm.tcl')
-rwxr-xr-x | tclasm.tcl | 108 |
1 files changed, 108 insertions, 0 deletions
@@ -105,6 +105,42 @@ proc store+ {address} { } +proc _storeb {address_part} { + puts 011111000[__to_binary $address_part 7] +} + +proc storeb {address} { + _with_im _storeb $address +} + + +proc _storeb+ {address_part} { + puts 011011000[__to_binary $address_part 7] +} + +proc storeb+ {address} { + _with_im _storeb+ $address +} + + +proc _storew {address_part} { + puts 011111010[__to_binary $address_part 7] +} + +proc storew {address} { + _with_im _storew $address +} + + +proc _storew+ {address_part} { + puts 011011010[__to_binary $address_part 7] +} + +proc storew+ {address} { + _with_im _storew+ $address +} + + proc _load {address_part} { puts 010111100[__to_binary $address_part 7] } @@ -123,6 +159,78 @@ proc load+ {address} { } +proc _loadbzx {address_part} { + puts 010111000[__to_binary $address_part 7] +} + +proc loadbzx {address} { + _with_im _loadbzx $address +} + + +proc _loadbzx+ {address_part} { + puts 010011000[__to_binary $address_part 7] +} + +proc loadbzx+ {address} { + _with_im _loadbzx+ $address +} + + +proc _loadbsx {address_part} { + puts 010111001[__to_binary $address_part 7] +} + +proc loadbsx {address} { + _with_im _loadbsx $address +} + + +proc _loadbsx+ {address_part} { + puts 010011001[__to_binary $address_part 7] +} + +proc loadbsx+ {address} { + _with_im _loadbsx+ $address +} + + +proc _loadwzx {address_part} { + puts 010111010[__to_binary $address_part 7] +} + +proc loadwzx {address} { + _with_im _loadwzx $address +} + + +proc _loadwzx+ {address_part} { + puts 010011010[__to_binary $address_part 7] +} + +proc loadwzx+ {address} { + _with_im _loadwzx+ $address +} + + +proc _loadwsx {address_part} { + puts 010111011[__to_binary $address_part 7] +} + +proc loadwsx {address} { + _with_im _loadwsx $address +} + + +proc _loadwsx+ {address_part} { + puts 010011011[__to_binary $address_part 7] +} + +proc loadwsx+ {address} { + _with_im _loadwsx+ $address +} + + # Instructions, that do not change stack size proc halt {} { |