aboutsummaryrefslogtreecommitdiff
path: root/tclasm.tcl
diff options
context:
space:
mode:
authorWojciech Kosior <kwojtus@protonmail.com>2020-09-14 17:21:55 +0200
committerWojciech Kosior <kwojtus@protonmail.com>2020-09-14 17:21:55 +0200
commit9adc0e5bad01f34f6cf6b6d53019ead30ba49945 (patch)
tree251934b5b979af9c23153e795fd8e824b1275660 /tclasm.tcl
parent76fad4a36b498db9e96e77460cb1f5e721c0f3e9 (diff)
downloadAGH-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-xtclasm.tcl108
1 files changed, 108 insertions, 0 deletions
diff --git a/tclasm.tcl b/tclasm.tcl
index 5af74c4..f80863d 100755
--- a/tclasm.tcl
+++ b/tclasm.tcl
@@ -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 {} {