mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-08-08 10:45:57 +02:00
* correctly handle push <imm> on 80186+
git-svn-id: trunk@35455 -
This commit is contained in:
parent
7213a13081
commit
c4fe4ab1f5
@ -2786,6 +2786,14 @@ asmr_e_const16bit_for_segment=07128_E_Not enough space (16 bits required) for th
|
|||||||
% less, for example, if you use 'DB SEG symbol' instead of 'DW SEG symbol'.
|
% less, for example, if you use 'DB SEG symbol' instead of 'DW SEG symbol'.
|
||||||
asmr_e_invalid_code_value=07129_E_Invalid value of .code directive constant
|
asmr_e_invalid_code_value=07129_E_Invalid value of .code directive constant
|
||||||
% The ARM assembler only allows the values 16 and 32 to be used as arguments to the .code directive
|
% The ARM assembler only allows the values 16 and 32 to be used as arguments to the .code directive
|
||||||
|
asmr_w_unable_to_determine_constant_size_using_byte=07130_W_No size specified and unable to determine the size of the constant, using BYTE as default
|
||||||
|
% You should specify explicitly a size for the reference, because
|
||||||
|
% the compiler is unable to determine what size (byte, word, dword, etc.) it
|
||||||
|
% should use for the constant. Based on its value, BYTE is used.
|
||||||
|
asmr_w_unable_to_determine_constant_size_using_word=07131_W_No size specified and unable to determine the size of the constant, using WORD as default
|
||||||
|
% You should specify explicitly a size for the reference, because
|
||||||
|
% the compiler is unable to determine what size (byte, word, dword, etc.) it
|
||||||
|
% should use for the constant. Based on its value, WORD is used.
|
||||||
#
|
#
|
||||||
# Assembler/binary writers
|
# Assembler/binary writers
|
||||||
#
|
#
|
||||||
|
@ -808,6 +808,8 @@ const
|
|||||||
asmr_e_CODE_or_DATA_without_SEG=07127;
|
asmr_e_CODE_or_DATA_without_SEG=07127;
|
||||||
asmr_e_const16bit_for_segment=07128;
|
asmr_e_const16bit_for_segment=07128;
|
||||||
asmr_e_invalid_code_value=07129;
|
asmr_e_invalid_code_value=07129;
|
||||||
|
asmr_w_unable_to_determine_constant_size_using_byte=07130;
|
||||||
|
asmr_w_unable_to_determine_constant_size_using_word=07131;
|
||||||
asmw_f_too_many_asm_files=08000;
|
asmw_f_too_many_asm_files=08000;
|
||||||
asmw_f_assembler_output_not_supported=08001;
|
asmw_f_assembler_output_not_supported=08001;
|
||||||
asmw_f_comp_not_supported=08002;
|
asmw_f_comp_not_supported=08002;
|
||||||
@ -1066,9 +1068,9 @@ const
|
|||||||
option_info=11024;
|
option_info=11024;
|
||||||
option_help_pages=11025;
|
option_help_pages=11025;
|
||||||
|
|
||||||
MsgTxtSize = 79107;
|
MsgTxtSize = 79303;
|
||||||
|
|
||||||
MsgIdxMax : array[1..20] of longint=(
|
MsgIdxMax : array[1..20] of longint=(
|
||||||
27,102,347,124,96,58,130,33,209,67,
|
27,102,347,124,96,58,132,33,209,67,
|
||||||
60,20,30,1,1,1,1,1,1,1
|
60,20,30,1,1,1,1,1,1,1
|
||||||
);
|
);
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -1104,10 +1104,24 @@ begin
|
|||||||
siz:=S_W;
|
siz:=S_W;
|
||||||
if (ops=1) and (opcode=A_PUSH) then
|
if (ops=1) and (opcode=A_PUSH) then
|
||||||
begin
|
begin
|
||||||
{We are a 32 compiler, assume 32-bit by default. This is Delphi
|
{$ifdef i8086}
|
||||||
compatible but bad coding practise.}
|
if (tx86operand(operands[1]).opr.val>=-128) and (tx86operand(operands[1]).opr.val<=127) then
|
||||||
|
begin
|
||||||
|
siz:=S_B;
|
||||||
|
message(asmr_w_unable_to_determine_constant_size_using_byte);
|
||||||
|
end
|
||||||
|
else
|
||||||
|
begin
|
||||||
|
siz:=S_W;
|
||||||
|
message(asmr_w_unable_to_determine_constant_size_using_word);
|
||||||
|
end;
|
||||||
|
{$else i8086}
|
||||||
|
{ We are a 32 compiler, assume 32-bit by default. This is Delphi
|
||||||
|
compatible but bad coding practise.}
|
||||||
|
|
||||||
siz:=S_L;
|
siz:=S_L;
|
||||||
message(asmr_w_unable_to_determine_reference_size_using_dword);
|
message(asmr_w_unable_to_determine_reference_size_using_dword);
|
||||||
|
{$endif i8086}
|
||||||
end;
|
end;
|
||||||
if (opcode=A_JMP) or (opcode=A_JCC) or (opcode=A_CALL) then
|
if (opcode=A_JMP) or (opcode=A_JCC) or (opcode=A_CALL) then
|
||||||
if ops=1 then
|
if ops=1 then
|
||||||
|
Loading…
Reference in New Issue
Block a user