我在使用以下Forth代码时遇到了一些问题:
<Window x:Class="Db.MessageWithProgressBar"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:Db"
mc:Ignorable="d"
Title="DB Processing" Height="150" Width="300" Background="{DynamicResource {x:Static SystemColors.GradientInactiveCaptionBrushKey}}">
<Window.Resources>
<local:currentStepToProgressValue x:Key="stepToProgress"/>
</Window.Resources>
<Grid DataContext="{Binding RelativeSource={RelativeSource AncestorType=Window}}">
<Grid.RowDefinitions>
<RowDefinition Height="60"/>
<RowDefinition Height="60"/>
</Grid.RowDefinitions>
<Grid Grid.Row="0">
<Grid.ColumnDefinitions>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<Label Name="title" Content="Please wait while processing.." FontSize="17.333"/>
</Grid>
<Grid Grid.Row="1" Margin="0,0,0,20">
<Grid.ColumnDefinitions>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<ProgressBar Name="progress" IsIndeterminate="True" Value="{Binding CurrentStep, Converter={StaticResource stepToProgress}}" />
</Grid>
</Grid>
现在我想给快门地址写“1”:
SHUTTER OPEN
这是我的错误:
HEX
FFFF3E27 CONSTANT SHUTTER
DECIMAL
: OPEN 1 SWAP ! ;
: CLOSE 0 SWAP ! ;
我错过了什么吗?
答案 0 :(得分:3)
代码基本上是正确的。我认为问题可能在于地址本身以及存储在其中的内容。
具体来说,!
存储一个单元格,这是堆栈中单词的正常大小。鉴于地址大小,我猜测它是32位。
现在,问题是地址是奇数。许多硬件架构不允许在奇数地址存储32位字,或者除了可被4整除的地址之外的任何其他字。
如果要存储单个字节,请使用C!
(或Forth实现中的某些等效字符)。