~ppsspp/ppsspp/armips

« back to all changes in this revision

Viewing changes to Commands/CDirectiveFile.cpp

  • Committer: Kingcom
  • Date: 2015-04-19 19:28:34 UTC
  • mfrom: (156.1.14)
  • Revision ID: git-v1:ae07e9d3cbe92357e48a48edf4787cf580d3525c
Merge branch 'ExpressionParser'

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
1
#include "stdafx.h"
2
2
#include "Commands/CDirectiveFile.h"
3
3
#include "Core/Common.h"
4
 
#include "Core/MathParser.h"
5
4
#include "Util/FileClasses.h"
6
5
#include "Core/FileManager.h"
7
6
 
17
16
        
18
17
        std::wstring originalName;
19
18
        std::wstring fileName;
20
 
        int virtualAddress;
 
19
        u64 virtualAddress;
21
20
 
22
21
        switch (type)
23
22
        {
29
28
                        Logger::printError(Logger::FatalError,L"File %s not found",fileName);
30
29
                        return;
31
30
                }
32
 
                if (ConvertExpression(args[1].text,virtualAddress) == false)
 
31
                if (convertConstExpression(args[1].text,virtualAddress) == false)
33
32
                {
34
33
                        Logger::printError(Logger::FatalError,L"Invalid ram address %s",args[1].text);
35
34
                        return;
40
39
        case Type::Create:
41
40
                fileName = getFullPathName(args[0].text);
42
41
 
43
 
                if (ConvertExpression(args[1].text,virtualAddress) == false)
 
42
                if (convertConstExpression(args[1].text,virtualAddress) == false)
44
43
                {
45
44
                        Logger::printError(Logger::FatalError,L"Invalid ram address %s",args[1].text);
46
45
                        return;
57
56
                        Logger::printError(Logger::FatalError,L"File %s not found",originalName);
58
57
                        return;
59
58
                }
60
 
                if (ConvertExpression(args[2].text,virtualAddress) == false)
 
59
                if (convertConstExpression(args[2].text,virtualAddress) == false)
61
60
                {
62
61
                        Logger::printError(Logger::FatalError,L"Invalid ram address %s",args[2].text);
63
62
                        return;
66
65
                file = new GenericAssemblerFile(fileName,originalName,virtualAddress);
67
66
                break;
68
67
        case Type::Close:
69
 
                return;
 
68
                g_fileManager->closeFile();
 
69
                break;
70
70
        }
71
71
 
72
 
        g_fileManager->addFile(file);
73
 
        Global.Section++;
 
72
        if (file != NULL)
 
73
                g_fileManager->addFile(file);
 
74
 
 
75
        updateSection(++Global.Section);
74
76
}
75
77
 
76
78
 
89
91
                g_fileManager->closeFile();
90
92
                return false;
91
93
        }
92
 
 
 
94
        
93
95
        return false;
94
96
}
95
97
 
139
141
CDirectivePosition::CDirectivePosition(Type type, ArgumentList& Args)
140
142
        : type(type)
141
143
{
142
 
        if (ConvertExpression(Args[0].text,position) == false)
 
144
        if (convertConstExpression(Args[0].text,position) == false)
143
145
        {
144
146
                Logger::printError(Logger::FatalError,L"Invalid ram address %s",Args[0].text);
145
147
        }
146
148
        
147
149
        exec();
148
 
        Global.Section++;
 
150
        updateSection(++Global.Section);
149
151
}
150
152
 
151
153
void CDirectivePosition::exec()
164
166
bool CDirectivePosition::Validate()
165
167
{
166
168
        Arch->NextSection();
167
 
        Global.Section++;
168
169
        exec();
169
170
        return false;
170
171
}
172
173
void CDirectivePosition::Encode()
173
174
{
174
175
        Arch->NextSection();
175
 
        Global.Section++;
176
176
        exec();
177
177
}
178
178
 
207
207
        if (args.size() >= 2)
208
208
        {
209
209
                // load start address
210
 
                if (ConvertExpression(args[1].text,startAddress) == false)
 
210
                if (convertConstExpression(args[1].text,startAddress) == false)
211
211
                {
212
212
                        Logger::printError(Logger::FatalError,L"Invalid start address %s",args[1].text);
213
213
                        return;
222
222
                if (args.size() >= 3)
223
223
                {
224
224
                        // load size too
225
 
                        if (ConvertExpression(args[2].text,loadSize) == false)
 
225
                        if (convertConstExpression(args[2].text,loadSize) == false)
226
226
                        {
227
227
                                Logger::printError(Logger::FatalError,L"Invalid size %s",args[1].text);
228
228
                                return;
284
284
{
285
285
        if (args.size() >= 1)
286
286
        {
287
 
                if (ConvertExpression(args[0].text,alignment) == false)
 
287
                if (convertConstExpression(args[0].text,alignment) == false)
288
288
                {
289
289
                        Logger::printError(Logger::FatalError,L"Invalid alignment %s",args[0].text);
290
290
                }
339
339
 
340
340
CDirectiveHeaderSize::CDirectiveHeaderSize(ArgumentList& args)
341
341
{
342
 
        if (ConvertExpression(args[0].text,headerSize) == false)
 
342
        if (convertConstExpression(args[0].text,headerSize) == false)
343
343
        {
344
344
                Logger::printError(Logger::FatalError,L"Invalid header size %s",args[0].text);
345
345
        }