aboutsummaryrefslogtreecommitdiff
path: root/lib/compilers/assembly.js
diff options
context:
space:
mode:
Diffstat (limited to 'lib/compilers/assembly.js')
-rw-r--r--lib/compilers/assembly.js35
1 files changed, 19 insertions, 16 deletions
diff --git a/lib/compilers/assembly.js b/lib/compilers/assembly.js
index c1d94fb59..f684b1ba6 100644
--- a/lib/compilers/assembly.js
+++ b/lib/compilers/assembly.js
@@ -52,6 +52,24 @@ export class AssemblyCompiler extends BaseCompiler {
return [];
}
+ getGeneratedOutputFilename(fn) {
+ const outputFolder = path.dirname(fn);
+ const files = fs.readdirSync(outputFolder);
+
+ let outputFilename = super.filename(fn);
+ files.forEach(file => {
+ if (file[0] !== '.' && file !== this.compileFilename) {
+ outputFilename = path.join(outputFolder, file);
+ }
+ });
+
+ return outputFilename;
+ }
+
+ getOutputFilename(dirPath) {
+ return this.getGeneratedOutputFilename(path.join(dirPath, 'example.asm'));
+ }
+
async runCompiler(compiler, options, inputFilename, execOptions) {
if (!execOptions) {
execOptions = this.getDefaultExecOptions();
@@ -69,23 +87,8 @@ export class AssemblyCompiler extends BaseCompiler {
return this.postProcess(asmResult, outputFilename, filters);
}
- getGeneratedOutputFilename(inputFilename) {
- const outputFolder = path.dirname(inputFilename);
-
- return new Promise((resolve, reject) => {
- fs.readdir(outputFolder, (err, files) => {
- files.forEach(file => {
- if (file[0] !== '.' && file !== this.compileFilename) {
- resolve(path.join(outputFolder, file));
- }
- });
- reject('No output file was generated');
- });
- });
- }
-
async objdump(outputFilename, result, maxSize, intelAsm, demangle) {
- const realOutputFilename = await this.getGeneratedOutputFilename(outputFilename);
+ const realOutputFilename = this.getGeneratedOutputFilename(outputFilename);
const dirPath = path.dirname(realOutputFilename);
let args = ['-d', realOutputFilename, '-l', '--insn-width=16'];
if (demangle) args = args.concat('-C');